From 1e986c81ab2e762b5b7fb2862a7defea6b4aad3f Mon Sep 17 00:00:00 2001 From: skye Date: Wed, 8 Apr 2026 17:14:12 -0400 Subject: [PATCH] Add test for duplicate JSON keys for builtins.fromJSON Related to #1162 Currently if JSON with duplicate object keys is passed into `builtins.toJSON`, it will silently drop all but the last value, keeping only the last. This may be surprising, but as this has been consistent reliable behavior that users might depend on, we should test for it. Change-Id: Icc2adefabb161530e7cbfa7330919bab6a6a6964 --- .../builtins.fromJSON/eval-okay-duplicate-keys.out.exp | 1 + .../lang/builtins.fromJSON/in-duplicate-keys.nix | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 tests/functional2/lang/builtins.fromJSON/eval-okay-duplicate-keys.out.exp create mode 100644 tests/functional2/lang/builtins.fromJSON/in-duplicate-keys.nix diff --git a/tests/functional2/lang/builtins.fromJSON/eval-okay-duplicate-keys.out.exp b/tests/functional2/lang/builtins.fromJSON/eval-okay-duplicate-keys.out.exp new file mode 100644 index 000000000..bba5bcfa8 --- /dev/null +++ b/tests/functional2/lang/builtins.fromJSON/eval-okay-duplicate-keys.out.exp @@ -0,0 +1 @@ +{ key = "three"; } diff --git a/tests/functional2/lang/builtins.fromJSON/in-duplicate-keys.nix b/tests/functional2/lang/builtins.fromJSON/in-duplicate-keys.nix new file mode 100644 index 000000000..009fc868d --- /dev/null +++ b/tests/functional2/lang/builtins.fromJSON/in-duplicate-keys.nix @@ -0,0 +1,8 @@ +# Duplicate JSON keys should always drop all but the latest value +builtins.fromJSON '' + { + "key": "one", + "key": "two", + "key": "three" + } +''