diff options
Diffstat (limited to 'tests/lang.sh')
-rw-r--r-- | tests/lang.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/lang.sh b/tests/lang.sh new file mode 100644 index 000000000000..55aaa46f375f --- /dev/null +++ b/tests/lang.sh @@ -0,0 +1,47 @@ +fail=0 + +for i in lang/parse-fail-*.nix; do + echo "parsing $i (should fail)"; + i=$(basename $i .nix) + if $TOP/src/nix-instantiate/nix-instantiate --parse-only - < lang/$i.nix; then + echo "FAIL: $i shouldn't parse" + fail=1 + fi +done + +for i in lang/parse-okay-*.nix; do + echo "parsing $i (should succeed)"; + i=$(basename $i .nix) + if ! $TOP/src/nix-instantiate/nix-instantiate --parse-only - < lang/$i.nix > lang/$i.ast; then + echo "FAIL: $i should parse" + fail=1 + fi + if ! cmp lang/$i.ast lang/$i.exp; then + echo "FAIL: parse tree of $i not as expected" + fail=1 + fi +done + +for i in lang/eval-fail-*.nix; do + echo "evaluating $i (should fail)"; + i=$(basename $i .nix) + if $TOP/src/nix-instantiate/nix-instantiate --eval-only - < lang/$i.nix; then + echo "FAIL: $i shouldn't evaluate" + fail=1 + fi +done + +for i in lang/eval-okay-*.nix; do + echo "evaluating $i (should succeed)"; + i=$(basename $i .nix) + if ! $TOP/src/nix-instantiate/nix-instantiate --eval-only - < lang/$i.nix > lang/$i.out; then + echo "FAIL: $i should evaluate" + fail=1 + fi + if ! cmp lang/$i.out lang/$i.exp; then + echo "FAIL: evaluation result of $i not as expected" + fail=1 + fi +done + +exit $fail \ No newline at end of file |