aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlex Ameen <alex.ameen.tx@gmail.com>2023-05-09 09:45:12 -0500
committerAlex Ameen <alex.ameen.tx@gmail.com>2023-05-09 09:45:12 -0500
commitb72bc4a972fe568744d98b89d63adcd504cb586c (patch)
treec68afe392499121d6f5872eb2a7fef6c3b5ddb41 /tests
parent4539ab530ad23a8558512f784bd72c4cd0e72f13 (diff)
libexpr: quote reserved keys when printing
This fixes a bug in commands like `nix eval' which would emit invalid attribute sets if they contained reserved keywords such as "assert", "let", etc. These keywords will not be quoted when printed, making them valid expressions. All keywords recognized by the lexer are quoted except "or", which does not require quotation.
Diffstat (limited to 'tests')
-rw-r--r--tests/eval.sh2
1 files changed, 2 insertions, 0 deletions
diff --git a/tests/eval.sh b/tests/eval.sh
index ffae08a6a..8e694c327 100644
--- a/tests/eval.sh
+++ b/tests/eval.sh
@@ -19,6 +19,7 @@ nix eval --expr 'assert 1 + 2 == 3; true'
[[ $(nix eval attr -f "./eval.nix") == '{ foo = "bar"; }' ]]
[[ $(nix eval attr --json -f "./eval.nix") == '{"foo":"bar"}' ]]
[[ $(nix eval int -f - < "./eval.nix") == 123 ]]
+[[ $(nix eval --expr '{"assert"=1;bar=2;}') == '{ "assert" = 1; bar = 2; }' ]]
# Check if toFile can be utilized during restricted eval
[[ $(nix eval --restrict-eval --expr 'import (builtins.toFile "source" "42")') == 42 ]]
@@ -29,6 +30,7 @@ nix-instantiate --eval -E 'assert 1 + 2 == 3; true'
[[ $(nix-instantiate -A attr --eval "./eval.nix") == '{ foo = "bar"; }' ]]
[[ $(nix-instantiate -A attr --eval --json "./eval.nix") == '{"foo":"bar"}' ]]
[[ $(nix-instantiate -A int --eval - < "./eval.nix") == 123 ]]
+[[ $(nix-instantiate --eval -E '{"assert"=1;bar=2;}') == '{ "assert" = 1; bar = 2; }' ]]
# Check that symlink cycles don't cause a hang.
ln -sfn cycle.nix $TEST_ROOT/cycle.nix