snix/tvix/eval/src/tests/tvix_tests
sterni f3c27f1717 fix(tvix/eval): bring foldl' strictness in line with C++ Nix
Working on https://github.com/NixOS/nix/pull/7158, I discovered that C++
Nix actually is strict in the accumulator, just not in the first value.
This seems due to the fact that in the C++ evaluator, function calls
don't seem to be thunked unconditionally and foldl' just elects not to
wrap it in a thunk (don't quote me on this summary, even though it seems
to line up with the code for primop_foldlStrict and testable behavior).

It doesn't seem worth it to risk breaking the odd Nix expression just to
be strict in one more value per invocation of foldl' (i.e. the initial
accumulator value `nul`), so let's match the existing C++ Nix behavior
here.

Change-Id: If59e62271a90d97cb440f0ca72a58ec7840d1690
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7022
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
2022-10-15 14:12:23 +00:00
..
directory feat(tvix/tests): Import default.nix inside directory 2022-10-08 19:02:25 +00:00
readDir feat(tvix/eval): Support builtins.readDir 2022-10-10 19:36:49 +00:00
eval-fail-foldlStrict-strict-op-application.nix fix(tvix/eval): bring foldl' strictness in line with C++ Nix 2022-10-15 14:12:23 +00:00
eval-fail-parsedrvname-coerce.nix fix(tvix/eval): parseDrvName should not coerce, and xfail test 2022-10-13 17:42:22 +00:00
eval-fail-remove.nix feat(tvix/eval): Implement builtins.removeAttrs 2022-10-11 00:33:39 +00:00
eval-okay-access-strange-identifier.exp test(tvix/eval): add a test for accessing "strange" identifiers 2022-09-22 23:07:14 +00:00
eval-okay-access-strange-identifier.nix test(tvix/eval): add a test for accessing "strange" identifiers 2022-09-22 23:07:14 +00:00
eval-okay-add-paths.exp feat(tvix/eval): Allow adding strings to paths 2022-10-10 20:23:41 +00:00
eval-okay-add-paths.nix feat(tvix/eval): Allow adding strings to paths 2022-10-10 20:23:41 +00:00
eval-okay-arithmetic-float.exp test(tvix/eval): add some eval-okay-* tests for trivial types 2022-08-25 11:07:16 +00:00
eval-okay-arithmetic-float.nix test(tvix/eval): add some eval-okay-* tests for trivial types 2022-08-25 11:07:16 +00:00
eval-okay-arithmetic-int.exp test(tvix/eval): add some eval-okay-* tests for trivial types 2022-08-25 11:07:16 +00:00
eval-okay-arithmetic-int.nix test(tvix/eval): add some eval-okay-* tests for trivial types 2022-08-25 11:07:16 +00:00
eval-okay-assert-thunk-condition.exp fix(tvix/eval): force condition of an assert 2022-09-20 10:59:38 +00:00
eval-okay-assert-thunk-condition.nix fix(tvix/eval): force condition of an assert 2022-09-20 10:59:38 +00:00
eval-okay-attrs-inherit-literal.exp feat(tvix/eval): implement inherit in attribute set literals 2022-08-31 22:10:40 +00:00
eval-okay-attrs-inherit-literal.nix feat(tvix/eval): implement inherit in attribute set literals 2022-08-31 22:10:40 +00:00
eval-okay-attrs-simple-inherit.exp feat(tvix/eval): Implement inherit from outer scope in attrs 2022-08-30 17:13:27 +00:00
eval-okay-attrs-simple-inherit.nix feat(tvix/eval): Implement inherit from outer scope in attrs 2022-08-30 17:13:27 +00:00
eval-okay-attrs-update-empty-lhs.exp feat(tvix/eval): implement attrset update (//) operator 2022-08-25 11:34:00 +00:00
eval-okay-attrs-update-empty-lhs.nix feat(tvix/eval): implement attrset update (//) operator 2022-08-25 11:34:00 +00:00
eval-okay-attrs-update-empty-rhs.exp feat(tvix/eval): implement attrset update (//) operator 2022-08-25 11:34:00 +00:00
eval-okay-attrs-update-empty-rhs.nix feat(tvix/eval): implement attrset update (//) operator 2022-08-25 11:34:00 +00:00
eval-okay-attrs-update-kv-lhs.exp feat(tvix/eval): implement attrset update (//) operator 2022-08-25 11:34:00 +00:00
eval-okay-attrs-update-kv-lhs.nix feat(tvix/eval): implement attrset update (//) operator 2022-08-25 11:34:00 +00:00
eval-okay-attrs-update.exp feat(tvix/eval): implement attrset update (//) operator 2022-08-25 11:34:00 +00:00
eval-okay-attrs-update.nix feat(tvix/eval): implement attrset update (//) operator 2022-08-25 11:34:00 +00:00
eval-okay-basenameof.exp feat(tvix/eval): implement builtins.baseNameOf 2022-10-13 17:43:17 +00:00
eval-okay-basenameof.nix feat(tvix/eval): implement builtins.baseNameOf 2022-10-13 17:43:17 +00:00
eval-okay-builtins-add.exp fix(tvix/eval): handle thunks in arithmetic builtins 2022-09-22 23:12:29 +00:00
eval-okay-builtins-add.nix fix(tvix/eval): handle thunks in arithmetic builtins 2022-09-22 23:12:29 +00:00
eval-okay-builtins-all.exp feat(tvix/eval): implement builtins.all 2022-10-03 17:39:09 +00:00
eval-okay-builtins-all.nix feat(tvix/eval): implement builtins.all 2022-10-03 17:39:09 +00:00
eval-okay-builtins-any.exp feat(tvix/eval): implement builtins.any 2022-10-03 17:39:09 +00:00
eval-okay-builtins-any.nix feat(tvix/eval): implement builtins.any 2022-10-03 17:39:09 +00:00
eval-okay-builtins-attrnames.exp feat(tvix/eval): Support builtins.attrNames 2022-09-15 20:37:57 +00:00
eval-okay-builtins-attrnames.nix feat(tvix/eval): Support builtins.attrNames 2022-09-15 20:37:57 +00:00
eval-okay-builtins-attrvalues.exp feat(tvix/eval): Support builtins.attrValues 2022-09-15 21:13:03 +00:00
eval-okay-builtins-attrvalues.nix feat(tvix/eval): Support builtins.attrValues 2022-09-15 21:13:03 +00:00
eval-okay-builtins-bitand.exp feat(tvix/eval): Support builtins.bitAnd 2022-09-15 21:41:08 +00:00
eval-okay-builtins-bitand.nix feat(tvix/eval): Support builtins.bitAnd 2022-09-15 21:41:08 +00:00
eval-okay-builtins-bitor.exp feat(tvix/eval): Support builtins.bitOr 2022-09-15 21:47:09 +00:00
eval-okay-builtins-bitor.nix feat(tvix/eval): Support builtins.bitOr 2022-09-15 21:47:09 +00:00
eval-okay-builtins-bitxor.exp feat(tvix/eval): Support builtins.bitXor 2022-09-15 21:53:10 +00:00
eval-okay-builtins-bitxor.nix feat(tvix/eval): Support builtins.bitXor 2022-09-15 21:53:10 +00:00
eval-okay-builtins-catAttrs.exp fix(tvix/eval): make sure to force before selecting in catAttrs 2022-09-20 09:59:57 +00:00
eval-okay-builtins-catAttrs.nix fix(tvix/eval): make sure to force before selecting in catAttrs 2022-09-20 09:59:57 +00:00
eval-okay-builtins-compareVersions.exp test(tvix/eval): test word behavior in builtins.compareVersions 2022-09-22 23:06:45 +00:00
eval-okay-builtins-compareVersions.nix test(tvix/eval): test word behavior in builtins.compareVersions 2022-09-22 23:06:45 +00:00
eval-okay-builtins-concat-lists.exp feat(tvix/eval): implement builtins.concatLists 2022-10-03 07:53:21 +00:00
eval-okay-builtins-concat-lists.nix feat(tvix/eval): implement builtins.concatLists 2022-10-03 07:53:21 +00:00
eval-okay-builtins-div.exp fix(tvix/eval): handle thunks in arithmetic builtins 2022-09-22 23:12:29 +00:00
eval-okay-builtins-div.nix fix(tvix/eval): handle thunks in arithmetic builtins 2022-09-22 23:12:29 +00:00
eval-okay-builtins-elemat.exp feat(tvix/eval): Support builtins.elemAt 2022-09-17 12:54:14 +00:00
eval-okay-builtins-elemat.nix feat(tvix/eval): Support builtins.elemAt 2022-09-17 12:54:14 +00:00
eval-okay-builtins-filter.exp feat(tvix/eval): implement 'builtins.filter' 2022-09-23 09:55:14 +00:00
eval-okay-builtins-filter.nix feat(tvix/eval): implement 'builtins.filter' 2022-09-23 09:55:14 +00:00
eval-okay-builtins-getattr.exp feat(tvix/eval): Support builtins.getAttr 2022-09-19 16:29:12 +00:00
eval-okay-builtins-getattr.nix feat(tvix/eval): Support builtins.getAttr 2022-09-19 16:29:12 +00:00
eval-okay-builtins-hasattr.exp feat(tvix/eval): Support builtins.hasAttr 2022-09-19 16:18:10 +00:00
eval-okay-builtins-hasattr.nix feat(tvix/eval): Support builtins.hasAttr 2022-09-19 16:18:10 +00:00
eval-okay-builtins-head.exp feat(tvix/eval): Support builtins.head 2022-09-15 16:48:24 +00:00
eval-okay-builtins-head.nix feat(tvix/eval): Support builtins.head 2022-09-15 16:48:24 +00:00
eval-okay-builtins-length.exp feat(tvix/eval): Support builtins.length 2022-09-07 20:56:02 +00:00
eval-okay-builtins-length.nix feat(tvix/eval): Support builtins.length 2022-09-07 20:56:02 +00:00
eval-okay-builtins-lessThan.exp feat(tvix/eval): Support builtins.lessThan 2022-09-22 17:42:01 +00:00
eval-okay-builtins-lessThan.nix feat(tvix/eval): Support builtins.lessThan 2022-09-22 17:42:01 +00:00
eval-okay-builtins-map.exp refactor(tvix/eval): add VM::call_value helper method 2022-09-20 23:48:57 +00:00
eval-okay-builtins-map.nix refactor(tvix/eval): add VM::call_value helper method 2022-09-20 23:48:57 +00:00
eval-okay-builtins-mul.exp fix(tvix/eval): handle thunks in arithmetic builtins 2022-09-22 23:12:29 +00:00
eval-okay-builtins-mul.nix fix(tvix/eval): handle thunks in arithmetic builtins 2022-09-22 23:12:29 +00:00
eval-okay-builtins-splitVersion.exp test(tvix/eval): add test cases for builtins.splitVersion 2022-09-21 13:08:07 +00:00
eval-okay-builtins-splitVersion.nix test(tvix/eval): add test cases for builtins.splitVersion 2022-09-21 13:08:07 +00:00
eval-okay-builtins-string-length.exp feat(tvix/eval): add builtins.stringLength 2022-09-22 23:12:29 +00:00
eval-okay-builtins-string-length.nix feat(tvix/eval): add builtins.stringLength 2022-09-22 23:12:29 +00:00
eval-okay-builtins-sub.exp fix(tvix/eval): handle thunks in arithmetic builtins 2022-09-22 23:12:29 +00:00
eval-okay-builtins-sub.nix fix(tvix/eval): handle thunks in arithmetic builtins 2022-09-22 23:12:29 +00:00
eval-okay-builtins-substring.exp feat(tvix/eval): Support builtins.substring 2022-09-19 00:51:10 +00:00
eval-okay-builtins-substring.nix feat(tvix/eval): Support builtins.substring 2022-09-19 00:51:10 +00:00
eval-okay-builtins-tail.exp feat(tvix/eval): Support builtins.tail 2022-09-19 00:57:11 +00:00
eval-okay-builtins-tail.nix feat(tvix/eval): Support builtins.tail 2022-09-19 00:57:11 +00:00
eval-okay-builtins-toString.exp feat(tvix/eval): implement correct toString behavior 2022-09-15 11:47:30 +00:00
eval-okay-builtins-toString.nix feat(tvix/eval): implement correct toString behavior 2022-09-15 11:47:30 +00:00
eval-okay-builtins-type-of.exp refactor(tvix/eval): merge all bindings creation logic 2022-09-29 11:47:47 +00:00
eval-okay-builtins-type-of.nix refactor(tvix/eval): merge all bindings creation logic 2022-09-29 11:47:47 +00:00
eval-okay-builtins-type-predicates.exp fix(tvix/eval): make sure to deref thunk in type predicate builtins 2022-09-20 10:59:38 +00:00
eval-okay-builtins-type-predicates.nix fix(tvix/eval): make sure to deref thunk in type predicate builtins 2022-09-20 10:59:38 +00:00
eval-okay-closure-self.exp feat(tvix/eval): implement capture of self-recursive upvalues 2022-09-06 07:29:25 +00:00
eval-okay-closure-self.nix feat(tvix/eval): implement capture of self-recursive upvalues 2022-09-06 07:29:25 +00:00
eval-okay-closure-with-shadowing.exp fix(tvix/eval): correctly resolve dynamic upvalues one scope up 2022-09-06 07:29:25 +00:00
eval-okay-closure-with-shadowing.nix fix(tvix/eval): correctly resolve dynamic upvalues one scope up 2022-09-06 07:29:25 +00:00
eval-okay-cmp-float-false.exp feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-float-false.nix feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-float-true.exp feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-float-true.nix feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-int-false.exp feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-int-false.nix feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-int-true.exp feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-int-true.nix feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-num-false.exp feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-num-false.nix feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-num-true.exp feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-num-true.nix feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-str-false.exp feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-str-false.nix feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-str-true.exp feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-cmp-str-true.nix feat(tvix/eval): implement binary comparison operators 2022-08-25 12:07:30 +00:00
eval-okay-concat-lists.exp feat(tvix/eval): implement list concatenation 2022-08-25 12:07:30 +00:00
eval-okay-concat-lists.nix feat(tvix/eval): implement list concatenation 2022-08-25 12:07:30 +00:00
eval-okay-concat-strings.exp feat(tvix/eval): implement string concatenation 2022-08-25 11:11:27 +00:00
eval-okay-concat-strings.nix feat(tvix/eval): implement string concatenation 2022-08-25 11:11:27 +00:00
eval-okay-concatmap.exp feat(tvix/eval): Implement builtins.concatMap 2022-10-10 13:54:16 +00:00
eval-okay-concatmap.nix feat(tvix/eval): Implement builtins.concatMap 2022-10-10 13:54:16 +00:00
eval-okay-concatstringssep.exp feat(tvix/eval): Implement builtins.concatStringsSep 2022-10-10 20:23:41 +00:00
eval-okay-concatstringssep.nix feat(tvix/eval): Implement builtins.concatStringsSep 2022-10-10 20:23:41 +00:00
eval-okay-contains-nested-non-set.exp fix(tvix/eval): ? operator should use OpAttrsOrNotFound 2022-08-30 17:13:27 +00:00
eval-okay-contains-nested-non-set.nix test(tvix/eval): reactivate nested key tests in plain attribute sets 2022-09-30 12:31:14 +00:00
eval-okay-contains-non-set.exp fix(tvix/eval): allow use of ? operator on non-set types 2022-08-30 17:13:27 +00:00
eval-okay-contains-non-set.nix fix(tvix/eval): allow use of ? operator on non-set types 2022-08-30 17:13:27 +00:00
eval-okay-deeply-nested-attrs.exp fix(tvix/eval): emit correct count in OpAttrPath 2022-08-30 17:13:27 +00:00
eval-okay-deeply-nested-attrs.nix test(tvix/eval): reactivate nested key tests in plain attribute sets 2022-09-30 12:31:14 +00:00
eval-okay-deeply-nested-with-closure.exp fix(tvix/eval): correctly thread through dynamic upvalues 2022-09-06 07:45:43 +00:00
eval-okay-deeply-nested-with-closure.nix fix(tvix/eval): correctly thread through dynamic upvalues 2022-09-06 07:45:43 +00:00
eval-okay-deeply-nested-with.exp fix(tvix/eval): correctly resolve dynamic upvalues one scope up 2022-09-06 07:29:25 +00:00
eval-okay-deeply-nested-with.nix fix(tvix/eval): correctly resolve dynamic upvalues one scope up 2022-09-06 07:29:25 +00:00
eval-okay-deferred-with.exp fix(tvix/eval): thunk all uses of with 2022-09-11 12:26:23 +00:00
eval-okay-deferred-with.nix fix(tvix/eval): thunk all uses of with 2022-09-11 12:26:23 +00:00
eval-okay-dirof.exp feat(tvix/eval): implement builtins.dirOf 2022-10-15 12:02:05 +00:00
eval-okay-dirof.nix feat(tvix/eval): implement builtins.dirOf 2022-10-15 12:02:05 +00:00
eval-okay-elem.exp feat(tvix/eval): Implement builtins.elem 2022-10-10 17:42:48 +00:00
eval-okay-elem.nix feat(tvix/eval): Implement builtins.elem 2022-10-10 17:42:48 +00:00
eval-okay-empty-rec-inherit.exp fix(tvix/eval): manually count entries in recursive scopes 2022-09-22 23:23:47 +00:00
eval-okay-empty-rec-inherit.nix fix(tvix/eval): manually count entries in recursive scopes 2022-09-22 23:23:47 +00:00
eval-okay-eq-float.exp feat(tvix): implement not-equals (!=) operator 2022-08-25 11:34:00 +00:00
eval-okay-eq-float.nix feat(tvix): implement not-equals (!=) operator 2022-08-25 11:34:00 +00:00
eval-okay-eq-int.exp feat(tvix): implement not-equals (!=) operator 2022-08-25 11:34:00 +00:00
eval-okay-eq-int.nix feat(tvix): implement not-equals (!=) operator 2022-08-25 11:34:00 +00:00
eval-okay-fib.exp fix(tvix/eval): instantiate *new* closures from blueprints each time 2022-09-06 07:45:43 +00:00
eval-okay-fib.nix fix(tvix/eval): instantiate *new* closures from blueprints each time 2022-09-06 07:45:43 +00:00
eval-okay-fix.exp feat(tvix/eval): thunk binary operations and select expressions 2022-09-08 20:17:26 +00:00
eval-okay-fix.nix feat(tvix/eval): thunk binary operations and select expressions 2022-09-08 20:17:26 +00:00
eval-okay-float-repr.exp test(tvix/eval): add a test for float representation 2022-09-03 00:49:45 +00:00
eval-okay-float-repr.nix test(tvix/eval): add a test for float representation 2022-09-03 00:49:45 +00:00
eval-okay-foldlStrict-lazy-elements.exp fix(tvix/eval/builtins): force acc not list element in foldl' 2022-10-11 15:53:29 +00:00
eval-okay-foldlStrict-lazy-elements.nix fix(tvix/eval/builtins): force acc not list element in foldl' 2022-10-11 15:53:29 +00:00
eval-okay-foldlStrict-lazy-initial-accumulator.exp fix(tvix/eval): bring foldl' strictness in line with C++ Nix 2022-10-15 14:12:23 +00:00
eval-okay-foldlStrict-lazy-initial-accumulator.nix fix(tvix/eval): bring foldl' strictness in line with C++ Nix 2022-10-15 14:12:23 +00:00
eval-okay-foldlStrict.exp fix(tvix/eval): bring foldl' strictness in line with C++ Nix 2022-10-15 14:12:23 +00:00
eval-okay-foldlStrict.nix fix(tvix/eval): bring foldl' strictness in line with C++ Nix 2022-10-15 14:12:23 +00:00
eval-okay-functor-call.exp feat(tvix/eval): implement tail-calling of __functor attributes 2022-10-03 07:50:41 +00:00
eval-okay-functor-call.nix feat(tvix/eval): implement tail-calling of __functor attributes 2022-10-03 07:50:41 +00:00
eval-okay-genlist.exp feat(tvix/eval): Implement builtins.genList 2022-10-10 13:54:16 +00:00
eval-okay-genlist.nix feat(tvix/eval): Implement builtins.genList 2022-10-10 13:54:16 +00:00
eval-okay-import.exp feat(tvix/tests): Import default.nix inside directory 2022-10-08 19:02:25 +00:00
eval-okay-import.nix feat(tvix/tests): Import default.nix inside directory 2022-10-08 19:02:25 +00:00
eval-okay-inherit-string-ident.exp fix(tvix/eval): support string identifiers in inherits 2022-09-22 23:07:14 +00:00
eval-okay-inherit-string-ident.nix fix(tvix/eval): support string identifiers in inherits 2022-09-22 23:07:14 +00:00
eval-okay-lambda-identity.exp feat(tvix/eval): compile function applications 2022-09-02 12:31:04 +00:00
eval-okay-lambda-identity.nix feat(tvix/eval): compile function applications 2022-09-02 12:31:04 +00:00
eval-okay-late-binding-closure.exp feat(tvix/eval): emit OpFinalise when local scopes are complete 2022-09-06 14:58:52 +00:00
eval-okay-late-binding-closure.nix feat(tvix/eval): emit OpFinalise when local scopes are complete 2022-09-06 14:58:52 +00:00
eval-okay-late-binding.exp test(tvix/eval): test very simple late-bound identifier access 2022-09-07 15:25:59 +00:00
eval-okay-late-binding.nix test(tvix/eval): test very simple late-bound identifier access 2022-09-07 15:25:59 +00:00
eval-okay-lazy-assert.exp fix(tvix/eval): wrap asserts in a thunk 2022-09-11 12:26:23 +00:00
eval-okay-lazy-assert.nix fix(tvix/eval): wrap asserts in a thunk 2022-09-11 12:26:23 +00:00
eval-okay-lazy-equality.exp fix(tvix/eval): Force thunks when comparing against ground vals 2022-10-08 19:02:25 +00:00
eval-okay-lazy-equality.nix fix(tvix/eval): Force thunks when comparing against ground vals 2022-10-08 19:02:25 +00:00
eval-okay-lazy-with.exp test(tvix/eval): add a test for lazy evaluation of with namespace 2022-09-17 18:58:42 +00:00
eval-okay-lazy-with.nix test(tvix/eval): add a test for lazy evaluation of with namespace 2022-09-17 18:58:42 +00:00
eval-okay-legacy-let-fix.exp test(tvix/eval): add tests for legacy let syntax 2022-09-16 18:13:26 +00:00
eval-okay-legacy-let-fix.nix test(tvix/eval): add tests for legacy let syntax 2022-09-16 18:13:26 +00:00
eval-okay-legacy-let-in-with.exp fix(tvix/eval): end scope after compiling legacy let bindings 2022-10-08 19:10:09 +00:00
eval-okay-legacy-let-in-with.nix fix(tvix/eval): end scope after compiling legacy let bindings 2022-10-08 19:10:09 +00:00
eval-okay-legacy-let.exp test(tvix/eval): add tests for legacy let syntax 2022-09-16 18:13:26 +00:00
eval-okay-legacy-let.nix test(tvix/eval): add tests for legacy let syntax 2022-09-16 18:13:26 +00:00
eval-okay-let-identifiers.exp test(tvix/eval): add basic tests for let expressions 2022-08-29 20:13:26 +00:00
eval-okay-let-identifiers.nix test(tvix/eval): add basic tests for let expressions 2022-08-29 20:13:26 +00:00
eval-okay-let-inherit-from-later-bound.exp fix(tvix/eval): declare let inherit (from) locals before compiling 2022-09-11 12:26:23 +00:00
eval-okay-let-inherit-from-later-bound.nix fix(tvix/eval): declare let inherit (from) locals before compiling 2022-09-11 12:26:23 +00:00
eval-okay-let-inherit.exp fix(tvix/eval): declare let inherit (from) locals before compiling 2022-09-11 12:26:23 +00:00
eval-okay-let-inherit.nix fix(tvix/eval): declare let inherit (from) locals before compiling 2022-09-11 12:26:23 +00:00
eval-okay-let-sibling-access.exp test(tvix/eval): add basic tests for let expressions 2022-08-29 20:13:26 +00:00
eval-okay-let-sibling-access.nix test(tvix/eval): add basic tests for let expressions 2022-08-29 20:13:26 +00:00
eval-okay-let-useful-plain-inherit-mixed.exp fix(tvix/eval): place plain inherits in correct stack slots 2022-09-11 12:26:23 +00:00
eval-okay-let-useful-plain-inherit-mixed.nix fix(tvix/eval): place plain inherits in correct stack slots 2022-09-11 12:26:23 +00:00
eval-okay-let-useful-plain-inherit.exp test(tvix/eval): test “useful” plain inherits 2022-09-11 12:26:23 +00:00
eval-okay-let-useful-plain-inherit.nix test(tvix/eval): test “useful” plain inherits 2022-09-11 12:26:23 +00:00
eval-okay-listtoattrs.exp feat(tvix/eval): Implement builtins.listToAttrs 2022-10-09 22:18:53 +00:00
eval-okay-listtoattrs.nix feat(tvix/eval): Implement builtins.listToAttrs 2022-10-09 22:18:53 +00:00
eval-okay-manual-rec.exp fix(tvix/eval): thunk all uses of with 2022-09-11 12:26:23 +00:00
eval-okay-manual-rec.nix fix(tvix/eval): thunk all uses of with 2022-09-11 12:26:23 +00:00
eval-okay-merge-nested-attrs.exp feat(tvix/eval): merge attribute sets in bindings 2022-09-29 17:46:02 +00:00
eval-okay-merge-nested-attrs.nix feat(tvix/eval): merge attribute sets in bindings 2022-09-29 17:46:02 +00:00
eval-okay-merge-nested-rec-attrs.exp feat(tvix/eval): merge attribute sets in bindings 2022-09-29 17:46:02 +00:00
eval-okay-merge-nested-rec-attrs.nix feat(tvix/eval): merge attribute sets in bindings 2022-09-29 17:46:02 +00:00
eval-okay-multiline-string.exp test(tvix/eval): add some eval-okay-* tests for trivial types 2022-08-25 11:07:16 +00:00
eval-okay-multiline-string.nix test(tvix/eval): add some eval-okay-* tests for trivial types 2022-08-25 11:07:16 +00:00
eval-okay-multiple-nested-attrs.exp test(tvix/eval): add some eval-okay-* tests for trivial types 2022-08-25 11:07:16 +00:00
eval-okay-multiple-nested-attrs.nix test(tvix/eval): reactivate nested key tests in plain attribute sets 2022-09-30 12:31:14 +00:00
eval-okay-mutually-recursive-let-binding.exp test(tvix/eval): add test for mutually recursive let bindings 2022-09-11 12:26:23 +00:00
eval-okay-mutually-recursive-let-binding.nix test(tvix/eval): add test for mutually recursive let bindings 2022-09-11 12:26:23 +00:00
eval-okay-ne-int.exp feat(tvix): implement not-equals (!=) operator 2022-08-25 11:34:00 +00:00
eval-okay-ne-int.nix feat(tvix): implement not-equals (!=) operator 2022-08-25 11:34:00 +00:00
eval-okay-ne-string.exp feat(tvix): implement not-equals (!=) operator 2022-08-25 11:34:00 +00:00
eval-okay-ne-string.nix feat(tvix): implement not-equals (!=) operator 2022-08-25 11:34:00 +00:00
eval-okay-nested-closure.exp test(tvix/eval): add tests for very simple closures 2022-09-04 17:40:10 +00:00
eval-okay-nested-closure.nix test(tvix/eval): add tests for very simple closures 2022-09-04 17:40:10 +00:00
eval-okay-nested-deferred-upvalue.exp test(tvix/eval): add a test case for nested, deferred upvalues 2022-09-06 14:58:52 +00:00
eval-okay-nested-deferred-upvalue.nix test(tvix/eval): add a test case for nested, deferred upvalues 2022-09-06 14:58:52 +00:00
eval-okay-nested-has-attrs.exp fix(tvix/eval): force left argument of ? before checking for attrs 2022-09-13 22:06:29 +00:00
eval-okay-nested-has-attrs.nix test(tvix/eval): reactivate nested key tests in plain attribute sets 2022-09-30 12:31:14 +00:00
eval-okay-nested-keys-let.exp test(tvix/eval): add simple nested key tests in let & rec attrs 2022-09-30 12:31:14 +00:00
eval-okay-nested-keys-let.nix test(tvix/eval): add simple nested key tests in let & rec attrs 2022-09-30 12:31:14 +00:00
eval-okay-nested-keys-rec.exp test(tvix/eval): add simple nested key tests in let & rec attrs 2022-09-30 12:31:14 +00:00
eval-okay-nested-keys-rec.nix test(tvix/eval): add simple nested key tests in let & rec attrs 2022-09-30 12:31:14 +00:00
eval-okay-nested-let-slots.exp test(tvix/eval): add test for stack slot accounting edge-case 2022-09-08 20:17:26 +00:00
eval-okay-nested-let-slots.nix test(tvix/eval): add test for stack slot accounting edge-case 2022-09-08 20:17:26 +00:00
eval-okay-nested-let.exp refactor(tvix/eval): simplify let ... in ... before recursion 2022-08-31 22:42:48 +00:00
eval-okay-nested-let.nix refactor(tvix/eval): simplify let ... in ... before recursion 2022-08-31 22:42:48 +00:00
eval-okay-nested-poisoning.exp fix(tvix/eval): inherit scope poisoning data in nested contexts 2022-09-08 07:59:15 +00:00
eval-okay-nested-poisoning.nix fix(tvix/eval): inherit scope poisoning data in nested contexts 2022-09-08 07:59:15 +00:00
eval-okay-nested-set-thunks.exp fix(tvix/eval): ensure all thunks are forced in nested selects 2022-09-18 22:16:04 +00:00
eval-okay-nested-set-thunks.nix fix(tvix/eval): ensure all thunks are forced in nested selects 2022-09-18 22:16:04 +00:00
eval-okay-nested-thunks.exp feat(tvix/eval): always emit OpForce as the last instruction 2022-09-07 15:25:59 +00:00
eval-okay-nested-thunks.nix feat(tvix/eval): always emit OpForce as the last instruction 2022-09-07 15:25:59 +00:00
eval-okay-nested-with.exp test(tvix/eval): add basic tests for with expressions 2022-08-31 22:42:48 +00:00
eval-okay-nested-with.nix test(tvix/eval): add basic tests for with expressions 2022-08-31 22:42:48 +00:00
eval-okay-nix-version-cmp.exp feat(tvix/eval): implement tvix's user-agent, err, nixVersion 2022-10-05 13:07:55 +00:00
eval-okay-nix-version-cmp.nix feat(tvix/eval): implement tvix's user-agent, err, nixVersion 2022-10-05 13:07:55 +00:00
eval-okay-or-operator-default.exp test(tvix/eval): add tests for the attrset or operator 2022-08-26 16:05:09 +00:00
eval-okay-or-operator-default.nix test(tvix/eval): add tests for the attrset or operator 2022-08-26 16:05:09 +00:00
eval-okay-or-operator-nested-default.exp test(tvix/eval): add tests for the attrset or operator 2022-08-26 16:05:09 +00:00
eval-okay-or-operator-nested-default.nix test(tvix/eval): reactivate nested key tests in plain attribute sets 2022-09-30 12:31:14 +00:00
eval-okay-or-operator-nested.exp test(tvix/eval): add tests for the attrset or operator 2022-08-26 16:05:09 +00:00
eval-okay-or-operator-nested.nix test(tvix/eval): reactivate nested key tests in plain attribute sets 2022-09-30 12:31:14 +00:00
eval-okay-or-operator-non-set.exp fix(tvix/eval): or should handle non-attrset values, too 2022-08-30 17:13:27 +00:00
eval-okay-or-operator-non-set.nix test(tvix/eval): reactivate nested key tests in plain attribute sets 2022-09-30 12:31:14 +00:00
eval-okay-or-operator.exp test(tvix/eval): add tests for the attrset or operator 2022-08-26 16:05:09 +00:00
eval-okay-or-operator.nix test(tvix/eval): add tests for the attrset or operator 2022-08-26 16:05:09 +00:00
eval-okay-overlapping-nested-attrs.exp test(tvix/eval): add some eval-okay-* tests for trivial types 2022-08-25 11:07:16 +00:00
eval-okay-overlapping-nested-attrs.nix test(tvix/eval): reactivate nested key tests in plain attribute sets 2022-09-30 12:31:14 +00:00
eval-okay-parsedrvname.exp test(tvix/eval): add eval-okay-parsedrvname.{exp,nix} 2022-10-12 09:50:21 +00:00
eval-okay-parsedrvname.nix test(tvix/eval): add eval-okay-parsedrvname.{exp,nix} 2022-10-12 09:50:21 +00:00
eval-okay-pathexists.exp feat(tvix/eval): Implement builtins.pathExists 2022-10-10 20:23:41 +00:00
eval-okay-pathexists.nix feat(tvix/eval): Implement builtins.pathExists 2022-10-10 20:23:41 +00:00
eval-okay-poisoned-scopes.exp feat(tvix/eval): implement scope poisoning for true/false/null 2022-08-31 22:42:48 +00:00
eval-okay-poisoned-scopes.nix feat(tvix/eval): implement scope poisoning for true/false/null 2022-08-31 22:42:48 +00:00
eval-okay-readDir.exp feat(tvix/eval): Support builtins.readDir 2022-10-10 19:36:49 +00:00
eval-okay-readDir.nix feat(tvix/eval): Support builtins.readDir 2022-10-10 19:36:49 +00:00
eval-okay-readfile.exp feat(tvix/eval): Implement builtins.readFile 2022-10-10 23:38:25 +00:00
eval-okay-readfile.nix feat(tvix/eval): Implement builtins.readFile 2022-10-10 23:38:25 +00:00
eval-okay-rec-dynamic-keys.exp feat(tvix/eval): implement dynamic keys in recursive attrs 2022-09-29 11:47:47 +00:00
eval-okay-rec-dynamic-keys.nix feat(tvix/eval): implement dynamic keys in recursive attrs 2022-09-29 11:47:47 +00:00
eval-okay-rec-nested-access.exp fix(tvix/eval): fix thunk borrowing error in force_for_output 2022-09-30 12:31:14 +00:00
eval-okay-rec-nested-access.nix fix(tvix/eval): fix thunk borrowing error in force_for_output 2022-09-30 12:31:14 +00:00
eval-okay-recursive-attrs-all-features.exp test(tvix/eval): add some tests for recursive attribute sets 2022-09-16 18:13:26 +00:00
eval-okay-recursive-attrs-all-features.nix test(tvix/eval): add some tests for recursive attribute sets 2022-09-16 18:13:26 +00:00
eval-okay-remove.exp feat(tvix/eval): Implement builtins.removeAttrs 2022-10-11 00:33:39 +00:00
eval-okay-remove.nix feat(tvix/eval): Implement builtins.removeAttrs 2022-10-11 00:33:39 +00:00
eval-okay-simple-closure.exp test(tvix/eval): add tests for very simple closures 2022-09-04 17:40:10 +00:00
eval-okay-simple-closure.nix test(tvix/eval): add tests for very simple closures 2022-09-04 17:40:10 +00:00
eval-okay-simple-interpol.exp feat(tvix/eval): implement string concatenation 2022-08-25 11:11:27 +00:00
eval-okay-simple-interpol.nix feat(tvix/eval): implement string concatenation 2022-08-25 11:11:27 +00:00
eval-okay-simple-let.exp test(tvix/eval): add basic tests for let expressions 2022-08-29 20:13:26 +00:00
eval-okay-simple-let.nix test(tvix/eval): add basic tests for let expressions 2022-08-29 20:13:26 +00:00
eval-okay-simple-nested-attrs.exp test(tvix/eval): add some eval-okay-* tests for trivial types 2022-08-25 11:07:16 +00:00
eval-okay-simple-nested-attrs.nix test(tvix/eval): reactivate nested key tests in plain attribute sets 2022-09-30 12:31:14 +00:00
eval-okay-simple-recursive-attrs.exp test(tvix/eval): add some tests for recursive attribute sets 2022-09-16 18:13:26 +00:00
eval-okay-simple-recursive-attrs.nix test(tvix/eval): add some tests for recursive attribute sets 2022-09-16 18:13:26 +00:00
eval-okay-simple-with.exp test(tvix/eval): add basic tests for with expressions 2022-08-31 22:42:48 +00:00
eval-okay-simple-with.nix test(tvix/eval): add basic tests for with expressions 2022-08-31 22:42:48 +00:00
eval-okay-thunked-if.exp fix(tvix/eval): Thunk if expr 2022-10-10 20:35:11 +00:00
eval-okay-thunked-if.nix fix(tvix/eval): Thunk if expr 2022-10-10 20:35:11 +00:00
eval-okay-thunked-string-interpolation.exp fix(tvix/eval): thunk string interpolation 2022-09-15 15:52:53 +00:00
eval-okay-thunked-string-interpolation.nix fix(tvix/eval): thunk string interpolation 2022-09-15 15:52:53 +00:00
eval-okay-thunked-with.exp fix(tvix/eval): account for attrset temporaries during construction 2022-09-11 12:04:27 +00:00
eval-okay-thunked-with.nix fix(tvix/eval): account for attrset temporaries during construction 2022-09-11 12:04:27 +00:00
eval-okay-toplevel-finaliser.exp fix(tvix/eval): consider local depth when deciding to defer 2022-09-08 20:17:26 +00:00
eval-okay-toplevel-finaliser.nix fix(tvix/eval): consider local depth when deciding to defer 2022-09-08 20:17:26 +00:00
eval-okay-tryeval.exp fix(tvix/eval): Pop frames even if running op fails 2022-10-11 00:08:05 +00:00
eval-okay-tryeval.nix fix(tvix/eval): Pop frames even if running op fails 2022-10-11 00:08:05 +00:00
eval-okay-unpoison-scope.exp feat(tvix/eval): implement scope poisoning for true/false/null 2022-08-31 22:42:48 +00:00
eval-okay-unpoison-scope.nix feat(tvix/eval): implement scope poisoning for true/false/null 2022-08-31 22:42:48 +00:00
eval-okay-useless-inherit-with.exp fix(tvix/eval): consider let ... inherit ... in dynamic scopes 2022-09-02 14:13:00 +00:00
eval-okay-useless-inherit-with.nix fix(tvix/eval): consider let ... inherit ... in dynamic scopes 2022-09-02 14:13:00 +00:00
eval-okay-with-closure.exp feat(tvix/eval): implement upvalue resolution in with scopes 2022-09-04 17:40:10 +00:00
eval-okay-with-closure.nix feat(tvix/eval): implement upvalue resolution in with scopes 2022-09-04 17:40:10 +00:00
eval-okay-with-in-dynamic-key.exp fix(tvix/eval): account for attrset temporaries during construction 2022-09-11 12:04:27 +00:00
eval-okay-with-in-dynamic-key.nix fix(tvix/eval): account for attrset temporaries during construction 2022-09-11 12:04:27 +00:00
eval-okay-with-in-list.exp fix(tvix/eval): correctly account for slots during list construction 2022-09-11 12:16:46 +00:00
eval-okay-with-in-list.nix fix(tvix/eval): correctly account for slots during list construction 2022-09-11 12:16:46 +00:00
identity-bool-false.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-bool-true.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-dollar-escape.nix fix(tvix/eval): correctly escape ${ in strings 2022-09-03 00:47:58 +00:00
identity-empty-attrs.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-empty-list.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-flat-attrs.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-float.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-heterogeneous-list.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-homogeneous-float-list.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-homogeneous-int-list.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-homogeneous-string-list.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-int.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-kv-attrs.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-nested-attrs.nix feat(tvix/eval): semi-strictly evaluate output values of the VM 2022-09-07 19:08:56 +00:00
identity-null.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-signed-float.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-signed-int.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
identity-string.nix test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00
lib.nix feat(tvix/eval): Implement builtins.elem 2022-10-10 17:42:48 +00:00
README.md test(tvix/eval): add identity tests for literal evaluation 2022-08-24 23:11:12 +00:00

These tests are "native" to Tvix and exist in addition to the Nix test suite.

All of these are straightforward code snippets which are expected to produce a certain result.

identity-* tests

Files named identity-*.nix contain code that is supposed to produce itself exactly after evaluation.

These are useful for testing literals.

eval-okay-* tests

Files named eval-okay-*.nix contain code which is supposed to evaluate to the output in the corresponding eval-okay-*.exp file.

This convention is taken from the original Nix test suite.