diff options
author | Adam Joseph <adam@westernsemico.com> | 2022-10-13T03·11-0700 |
---|---|---|
committer | Adam Joseph <adam@westernsemico.com> | 2022-10-13T17·42+0000 |
commit | a98cb9d56f909020325144efd96da3c00a1719df (patch) | |
tree | 81a5f4955d3ee7c243394947aafae2545520b679 | |
parent | 01bc04b1d25c09d53d8c4b953f62a5270f89fab9 (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.rs | 4 | ||||
-rw-r--r-- | tvix/eval/src/tests/tvix_tests/eval-fail-parsedrvname-coerce.nix | 1 |
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"; } |