aboutsummaryrefslogtreecommitdiff
path: root/tests/functional/eval.sh
diff options
context:
space:
mode:
authorQyriad <qyriad@qyriad.me>2024-05-07 18:28:29 -0600
committerQyriad <qyriad@qyriad.me>2024-05-08 13:37:20 -0600
commit54322f09d353e296b06ce8b1f4264749a7ccd489 (patch)
tree277ef062a46a4dba41cb06c6fff4a4b29fbe797e /tests/functional/eval.sh
parent8822fd7dd5254e781660704858f2eca386bdf5a2 (diff)
nix3-eval: don't elide top-level errors
Fixes #276. Change-Id: I83e71beb5c35d6f3b10a4186caa5e52a2f95b510
Diffstat (limited to 'tests/functional/eval.sh')
-rw-r--r--tests/functional/eval.sh9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/functional/eval.sh b/tests/functional/eval.sh
index 0e789cc47..2b34caddb 100644
--- a/tests/functional/eval.sh
+++ b/tests/functional/eval.sh
@@ -22,6 +22,15 @@ nix eval -E 'assert 1 + 2 == 3; true'
[[ $(nix eval int -f - < "./eval.nix") == 123 ]]
[[ "$(nix eval --expr '{"assert"=1;bar=2;}')" == '{ "assert" = 1; bar = 2; }' ]]
+# Top-level eval errors should be printed to stderr with a traceback.
+topLevelThrow="$(expectStderr 1 nix eval --expr 'throw "a sample throw message"')"
+[[ "$topLevelThrow" =~ "a sample throw message" ]]
+[[ "$topLevelThrow" =~ "while calling the 'throw' builtin" ]]
+
+# But errors inside something should print an elided version, and exit with 0.
+outputOfNestedThrow="$(nix eval --expr '{ throws = throw "a sample throw message"; }')"
+[[ "${outputOfNestedThrow}" == "{ throws = «error: a sample throw message»; }" ]]
+
# Check if toFile can be utilized during restricted eval
[[ $(nix eval --restrict-eval --expr 'import (builtins.toFile "source" "42")') == 42 ]]