about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAdam Joseph <adam@westernsemico.com>2022-10-13T03·11-0700
committerAdam Joseph <adam@westernsemico.com>2022-10-13T17·42+0000
commita98cb9d56f909020325144efd96da3c00a1719df (patch)
tree81a5f4955d3ee7c243394947aafae2545520b679
parent01bc04b1d25c09d53d8c4b953f62a5270f89fab9 (diff)
fix(tvix/eval): parseDrvName should not coerce, and xfail test r/5124
builtins.parseDrvName should not coerce its argument to a string.
This commit fixes that oversight in my previous commit, and adds an
xfail test to cover this condition.

Thanks to @sterni for noticing this.

Signed-off-by: Adam Joseph <adam@westernsemico.com>
Change-Id: I76bc78f1a82e1e08fe5c787c563a221d55de2639
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6991
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
-rw-r--r--tvix/eval/src/builtins/mod.rs4
-rw-r--r--tvix/eval/src/tests/tvix_tests/eval-fail-parsedrvname-coerce.nix1
2 files changed, 3 insertions, 2 deletions
diff --git a/tvix/eval/src/builtins/mod.rs b/tvix/eval/src/builtins/mod.rs
index a3aaf33bf4af..0b19a89aa316 100644
--- a/tvix/eval/src/builtins/mod.rs
+++ b/tvix/eval/src/builtins/mod.rs
@@ -381,10 +381,10 @@ fn pure_builtins() -> Vec<Builtin> {
                 Ok(Value::attrs(NixAttrs::from_map(res)))
             },
         ),
-        Builtin::new("parseDrvName", &[true], |args: Vec<Value>, vm: &mut VM| {
+        Builtin::new("parseDrvName", &[true], |args: Vec<Value>, _vm: &mut VM| {
             // This replicates cppnix's (mis?)handling of codepoints
             // above U+007f following 0x2d ('-')
-            let s = args[0].coerce_to_string(CoercionKind::Weak, vm)?;
+            let s = args[0].to_str()?;
             let slice: &[u8] = s.as_str().as_ref();
             let (name, dash_and_version) = slice.split_at(
                 slice
diff --git a/tvix/eval/src/tests/tvix_tests/eval-fail-parsedrvname-coerce.nix b/tvix/eval/src/tests/tvix_tests/eval-fail-parsedrvname-coerce.nix
new file mode 100644
index 000000000000..a1218de3fe58
--- /dev/null
+++ b/tvix/eval/src/tests/tvix_tests/eval-fail-parsedrvname-coerce.nix
@@ -0,0 +1 @@
+builtins.parseDrvName { outPath = "lol"; }