about summary refs log tree commit diff
path: root/tvix/glue/src/tests/tvix_tests
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/glue/src/tests/tvix_tests')
-rw-r--r--tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.exp2
-rw-r--r--tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.nix10
-rw-r--r--tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.exp2
-rw-r--r--tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.nix23
4 files changed, 35 insertions, 2 deletions
diff --git a/tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.exp b/tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.exp
index 3f8905e9bd0d..a136b0035e0a 100644
--- a/tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.exp
+++ b/tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.exp
@@ -1 +1 @@
-[ true true true true true true true true true true true ]
+[ true true true true true true true true true true true true true ]
diff --git a/tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.nix b/tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.nix
index 1b645b1a2607..ecd8ab0073d0 100644
--- a/tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.nix
+++ b/tvix/glue/src/tests/tvix_tests/eval-okay-context-introspection.nix
@@ -41,6 +41,13 @@ let
   reconstructed-path = appendContextFrom combo-path
     (builtins.unsafeDiscardStringContext combo-path);
 
+  an-str = {
+    a = "${drv}";
+  };
+  an-list = {
+    b = [ drv ];
+  };
+
   # Eta rule for strings with context.
   etaRule = str:
     str == appendContextFrom
@@ -70,4 +77,7 @@ in
   (etaRule "foo")
   (etaRule drv.drvPath)
   (etaRule drv.foo.outPath)
+  # `toJSON` tests
+  (builtins.hasContext (builtins.toJSON an-str))
+  (builtins.hasContext (builtins.toJSON an-list))
 ]
diff --git a/tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.exp b/tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.exp
index 8bb828e36a42..ff56f6ca18e7 100644
--- a/tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.exp
+++ b/tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.exp
@@ -1 +1 @@
-[ true true true true true true true true true true true true true true true true true true true true true true true true true true true true ]
+[ true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true ]
diff --git a/tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.nix b/tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.nix
index 918061b8b861..41e7f207b9e8 100644
--- a/tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.nix
+++ b/tvix/glue/src/tests/tvix_tests/eval-okay-context-propagation.nix
@@ -93,4 +93,27 @@ in
   (preserveContext other-drv (builtins.concatStringsSep "${other-drv}" [ "abc" "def" ]))
   # `attrNames` will never ever produce context.
   (preserveContext "abc" (toString (builtins.attrNames { a = { }; b = { }; c = { }; })))
+  # `toJSON` preserves context of its inputs.
+  (preserveContexts [ drv other-drv ] (builtins.toJSON {
+    a = [ drv ];
+    b = [ other-drv ];
+  }))
+  (preserveContexts [ drv other-drv ] (builtins.toJSON {
+    a.deep = [ drv ];
+    b = [ other-drv ];
+  }))
+  (preserveContexts [ drv other-drv ] (builtins.toJSON {
+    a = "${drv}";
+    b = [ other-drv ];
+  }))
+  (preserveContexts [ drv other-drv ] (builtins.toJSON {
+    a.deep = "${drv}";
+    b = [ other-drv ];
+  }))
+  (preserveContexts [ drv other-drv ] (builtins.toJSON {
+    a = "${drv} ${other-drv}";
+  }))
+  (preserveContexts [ drv other-drv ] (builtins.toJSON {
+    a.b.c.d.e.f = "${drv} ${other-drv}";
+  }))
 ]