about summary refs log tree commit diff
path: root/tests/lang.sh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2004-10-27T12·41+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2004-10-27T12·41+0000
commit463e2817c55fbd5b026d7dd630541b990b82418a (patch)
treef1017907a6bee3baed04e35c5b25bdaa454dedf8 /tests/lang.sh
parentf09618b63a3e842adc59360c9bb4cf0ad37246ef (diff)
* Remove ancient Fix tests.
* Add automated Nix expression language tests.

Diffstat (limited to 'tests/lang.sh')
-rw-r--r--tests/lang.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/lang.sh b/tests/lang.sh
new file mode 100644
index 0000000000..55aaa46f37
--- /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