jade
faf00ad022
This commit makes Lix include the summarized content of the value being
indexed when it is bad.
lix/lix2 » nix eval --expr '{x.y = 2;}' 'x.y.z'
error: the value being indexed in the selection path 'x.y.z' at 'x.y' should be a set but is an integer: 2
lix/lix2 » nix eval --expr '{x.y = { a = 3; };}' 'x.y.z'
error: attribute 'z' in selection path 'x.y.z' not found inside path 'x.y', whose contents are: { a = 3; }
Did you mean a?
lix/lix2 » nix eval --expr '{x.y = { a = 3; };}' 'x.y.1'
error: the expression selected by the selection path 'x.y.1' should be a list but is a set: { a = 3; }
Change-Id: I3202aba0e437e00b4c6d3ee287a2d9a7c6892dbf
35 lines
1.2 KiB
Bash
35 lines
1.2 KiB
Bash
source common.sh
|
|
|
|
# Tests miscellaneous commands.
|
|
|
|
# Do all commands have help?
|
|
#nix-env --help | grepQuiet install
|
|
#nix-store --help | grepQuiet realise
|
|
#nix-instantiate --help | grepQuiet eval
|
|
#nix-hash --help | grepQuiet base32
|
|
|
|
# Can we ask for the version number?
|
|
nix-env --version | grep "$version"
|
|
|
|
# Usage errors.
|
|
expect 1 nix-env --foo 2>&1 | grep "no operation"
|
|
expect 1 nix-env -q --foo 2>&1 | grep "unknown flag"
|
|
|
|
# Eval Errors.
|
|
eval_arg_res=$(nix-instantiate --eval -E 'let a = {} // a; in a.foo' 2>&1 || true)
|
|
echo $eval_arg_res | grep "at «string»:1:15:"
|
|
echo $eval_arg_res | grep "infinite recursion encountered"
|
|
|
|
eval_stdin_res=$(echo 'let a = {} // a; in a.foo' | nix-instantiate --eval -E - 2>&1 || true)
|
|
echo $eval_stdin_res | grep "at «stdin»:1:15:"
|
|
echo $eval_stdin_res | grep "infinite recursion encountered"
|
|
|
|
# Unknown setting warning
|
|
# NOTE(cole-h): behavior is different depending on the order, which is why we test an unknown option
|
|
# before and after the `'{}'`!
|
|
out="$(expectStderr 0 nix-instantiate --option foobar baz --expr '{}')"
|
|
[[ "$(echo "$out" | grep foobar | wc -l)" = 1 ]]
|
|
|
|
out="$(expectStderr 0 nix-instantiate '{}' --option foobar baz --expr )"
|
|
[[ "$(echo "$out" | grep foobar | wc -l)" = 1 ]]
|