c70484454f
* Lang now verifies errors and parse output * Some new miscellaneous tests * Easy way to update the tests * Document workflow in manual * Use `!` not `~` as separater char for sed It is confusing to use `~` when we are talking about paths and home directories! * Test test suite itself (`test/lang-test/infra.sh`) Additionally, run shellcheck on `tests/lang.sh` to help ensure it is correct, now that is is more complex. Co-authored-by: Robert Hensing <roberth@users.noreply.github.com> Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
33 lines
1.3 KiB
Bash
33 lines
1.3 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"
|
|
|
|
# Attribute path errors
|
|
expectStderr 1 nix-instantiate --eval -E '{}' -A '"x' | grepQuiet "missing closing quote in selection path"
|
|
expectStderr 1 nix-instantiate --eval -E '[]' -A 'x' | grepQuiet "should be a set"
|
|
expectStderr 1 nix-instantiate --eval -E '{}' -A '1' | grepQuiet "should be a list"
|
|
expectStderr 1 nix-instantiate --eval -E '{}' -A '.' | grepQuiet "empty attribute name"
|
|
expectStderr 1 nix-instantiate --eval -E '[]' -A '1' | grepQuiet "out of range"
|