2024-05-28 12:43:04 -04:00
#!/usr/bin/env bash
2006-03-01 07:15:33 -05:00
source common.sh
2006-02-22 09:02:44 -05:00
# Tests miscellaneous commands.
# Do all commands have help?
2021-12-09 10:26:46 -05:00
#nix-env --help | grepQuiet install
#nix-store --help | grepQuiet realise
#nix-instantiate --help | grepQuiet eval
#nix-hash --help | grepQuiet base32
2006-02-22 09:02:44 -05:00
2006-03-01 07:15:33 -05:00
# Can we ask for the version number?
2011-10-10 17:32:34 -04:00
nix-env --version | grep " $version "
2006-03-01 07:51:18 -05:00
2024-07-05 12:32:34 -04:00
nix_env = $( type -P nix-env)
( PATH = "" ; ! $nix_env --help 2>& 1 ) | grepQuiet -F "The 'man' command was not found, but it is needed for 'nix-env' and some other 'nix-*' commands' help text. Perhaps you could install the 'man' command?"
2006-03-01 07:51:18 -05:00
# Usage errors.
2021-12-09 10:26:46 -05:00
expect 1 nix-env --foo 2>& 1 | grep "no operation"
expect 1 nix-env -q --foo 2>& 1 | grep "unknown flag"
2015-07-31 11:32:25 -04:00
# Eval Errors.
2020-05-21 16:28:45 -04:00
eval_arg_res = $( nix-instantiate --eval -E 'let a = {} // a; in a.foo' 2>& 1 || true )
2021-01-20 18:55:59 -05:00
echo $eval_arg_res | grep "at «string»:1:15:"
2020-05-21 16:28:45 -04:00
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 )
2021-01-20 18:55:59 -05:00
echo $eval_stdin_res | grep "at «stdin»:1:15:"
2020-05-21 16:28:45 -04:00
echo $eval_stdin_res | grep "infinite recursion encountered"
2015-09-04 16:23:08 -04:00
# 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"
2024-05-14 15:13:14 -04:00
# 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 ] ]