about summary refs log tree commit diff
path: root/tvix/eval/src/tests/nix_tests/eval-okay-fromjson.nix
diff options
context:
space:
mode:
authorAdam Joseph <adam@westernsemico.com>2022-10-31T10·35-0700
committerclbot <clbot@tvl.fyi>2022-10-31T12·36+0000
commit9ada456260c0fff256f08a6aa87c436a0027f318 (patch)
tree311ccff4540eb29a254023ddd120437ae512d766 /tvix/eval/src/tests/nix_tests/eval-okay-fromjson.nix
parent98a981a73718d4d1ed190796c862863514c1b102 (diff)
fix(tvix/eval): nix_eq() must recurse r/5226
The current implementation of nix_eq will force one level of thunks
and then switch to the (non-forcing) rust Eq::eq() method.  This
gives incorrect results for lists-of-thunks.

This commit changes nix_eq() to be recursive.

A regression test (which fails prior to this commit) is included.

This fix also causes nix_tests/eval-okay-fromjson.nix to pass, so it
is moved out of notyetpassing.

Change-Id: I655fd7a5294208a7b39df8e2c3c12a8b9768292f
Signed-off-by: Adam Joseph <adam@westernsemico.com>
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7142
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Diffstat (limited to 'tvix/eval/src/tests/nix_tests/eval-okay-fromjson.nix')
-rw-r--r--tvix/eval/src/tests/nix_tests/eval-okay-fromjson.nix35
1 files changed, 35 insertions, 0 deletions
diff --git a/tvix/eval/src/tests/nix_tests/eval-okay-fromjson.nix b/tvix/eval/src/tests/nix_tests/eval-okay-fromjson.nix
new file mode 100644
index 000000000000..e1c0f86cc4e4
--- /dev/null
+++ b/tvix/eval/src/tests/nix_tests/eval-okay-fromjson.nix
@@ -0,0 +1,35 @@
+builtins.fromJSON
+  ''
+    {
+      "Video": {
+          "Title":  "The Penguin Chronicles",
+          "Width":  1920,
+          "Height": 1080,
+          "EmbeddedData": [3.14159, 23493,null, true  ,false, -10],
+          "Thumb": {
+              "Url":    "http://www.example.com/video/5678931",
+              "Width":  200,
+              "Height": 250
+          },
+          "Subtitle" : false,
+          "Latitude":  46.2051,
+          "Longitude": 6.0723
+        }
+    }
+  ''
+==
+  { Video =
+    { Title = "The Penguin Chronicles";
+      Width = 1920;
+      Height = 1080;
+      EmbeddedData = [ 3.14159 23493 null true false (0-10) ];
+      Thumb =
+        { Url = "http://www.example.com/video/5678931";
+          Width = 200;
+          Height = 250;
+        };
+      Subtitle = false;
+      Latitude = 46.2051;
+      Longitude = 6.0723;
+    };
+  }