diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rw-r--r-- | tests/common.sh.in | 7 | ||||
-rw-r--r-- | tests/config.nix.in | 3 | ||||
-rw-r--r-- | tests/dependencies.nix | 1 | ||||
-rw-r--r-- | tests/init.sh | 24 | ||||
-rw-r--r-- | tests/lang.sh | 2 | ||||
-rw-r--r-- | tests/lang/eval-okay-search-path.nix | 2 | ||||
-rw-r--r-- | tests/nix-channel.sh | 43 | ||||
-rw-r--r-- | tests/user-envs.sh | 2 |
9 files changed, 52 insertions, 36 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 70352dbb5d..15c103ec46 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -8,7 +8,8 @@ TESTS = init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \ referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \ gc-runtime.sh install-package.sh check-refs.sh filter-source.sh \ remote-store.sh export.sh export-graph.sh negative-caching.sh \ - binary-patching.sh timeout.sh secure-drv-outputs.sh multiple-outputs.sh + binary-patching.sh timeout.sh secure-drv-outputs.sh nix-channel.sh \ + multiple-outputs.sh XFAIL_TESTS = @@ -38,4 +39,3 @@ EXTRA_DIST = $(TESTS) \ multiple-outputs.nix \ $(wildcard lang/*.nix) $(wildcard lang/*.exp) $(wildcard lang/*.exp.xml) $(wildcard lang/*.flags) $(wildcard lang/dir*/*.nix) \ common.sh.in - diff --git a/tests/common.sh.in b/tests/common.sh.in index 4ab490a626..7504dc059e 100644 --- a/tests/common.sh.in +++ b/tests/common.sh.in @@ -9,7 +9,6 @@ if ! NIX_STORE_DIR=$(readlink -f $TEST_ROOT/store 2> /dev/null); then export NIX_IGNORE_SYMLINK_STORE=1 NIX_STORE_DIR=$TEST_ROOT/store fi -export NIX_DATA_DIR=$TEST_ROOT/data export NIX_LOCALSTATE_DIR=$TEST_ROOT/var export NIX_LOG_DIR=$TEST_ROOT/var/log/nix export NIX_STATE_DIR=$TEST_ROOT/var/nix @@ -19,15 +18,11 @@ export NIX_BIN_DIR=$TEST_ROOT/bin export NIX_LIBEXEC_DIR=$TEST_ROOT/bin export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests export NIX_ROOT_FINDER= +export NIX_PATH=nix=$TOP/corepkgs export SHARED=$TEST_ROOT/shared export PATH=$NIX_BIN_DIR:$TOP/scripts:$PATH -export REAL_BIN_DIR=@bindir@ -export REAL_LIBEXEC_DIR=@libexecdir@ -export REAL_LOCALSTATE_DIR=@localstatedir@ -export REAL_DATA_DIR=@datadir@ -export REAL_STORE_DIR=@storedir@ export NIX_BUILD_HOOK= export PERL=perl export PERL5LIB=$TOP/perl/lib:$PERL5LIB diff --git a/tests/config.nix.in b/tests/config.nix.in index 2bfee8b44b..db3da14513 100644 --- a/tests/config.nix.in +++ b/tests/config.nix.in @@ -13,5 +13,6 @@ rec { builder = shell; args = ["-e" args.builder]; PATH = path; - } // removeAttrs args ["builder"]); + } // removeAttrs args ["builder" "meta"]) + // { meta = args.meta or {}; }; } diff --git a/tests/dependencies.nix b/tests/dependencies.nix index 00717ae98d..6f6a7e46fa 100644 --- a/tests/dependencies.nix +++ b/tests/dependencies.nix @@ -17,6 +17,7 @@ let { builder = ./dependencies.builder0.sh + "/FOOBAR/../."; input1 = input1 + "/."; inherit input2; + meta.description = "Random test package"; }; } diff --git a/tests/init.sh b/tests/init.sh index 63e939dff1..9ce7985d70 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -10,7 +10,6 @@ fi mkdir "$TEST_ROOT" mkdir "$NIX_STORE_DIR" -mkdir "$NIX_DATA_DIR" mkdir "$NIX_LOCALSTATE_DIR" mkdir -p "$NIX_LOG_DIR"/drvs mkdir "$NIX_STATE_DIR" @@ -39,29 +38,6 @@ env-keep-derivations = false fsync-metadata = false EOF -mkdir $NIX_DATA_DIR/nix -cp -pr $TOP/corepkgs $NIX_DATA_DIR/nix/ -# Bah, scripts have the prefix hard-coded. This is really messy stuff -# (and likely to fail). -for i in \ - $NIX_DATA_DIR/nix/corepkgs/nar/nar.sh \ - ; do - sed < $i > $i.tmp \ - -e "s^$REAL_BIN_DIR/nix-store^$NIX_BIN_DIR/nix-store^" \ - -e "s^$REAL_BIN_DIR/nix-hash^$NIX_BIN_DIR/nix-hash^" \ - -e "s^$REAL_LIBEXEC_DIR^$NIX_LIBEXEC_DIR^" \ - -e "s^$REAL_LOCALSTATE_DIR^$NIX_LOCALSTATE_DIR^" \ - -e "s^$REAL_DATA_DIR^$NIX_DATA_DIR^" \ - -e "s^$REAL_STORE_DIR\([^/]\)^$NIX_STORE_DIR\1^" - mv $i.tmp $i - chmod +x $i -done - -# Another ugly hack. -sed "s|^$|PATH='$PATH'|" < $NIX_DATA_DIR/nix/corepkgs/nar/nar.sh > tmp -chmod +x tmp -mv tmp $NIX_DATA_DIR/nix/corepkgs/nar/nar.sh - # An uberhack for Mac OS X 10.5: download-using-manifests uses Perl, # and Perl links against Darwin's libutil.dylib (in /usr/lib), but # when running "make check", the libtool wrapper script around the Nix diff --git a/tests/lang.sh b/tests/lang.sh index c9fc65e6ac..cab1cfd9b0 100644 --- a/tests/lang.sh +++ b/tests/lang.sh @@ -40,7 +40,7 @@ for i in lang/eval-okay-*.nix; do if test -e lang/$i.flags; then flags=$(cat lang/$i.flags) fi - if ! NIX_PATH=lang/dir3:lang/dir4 nix-instantiate $flags --eval-only --strict lang/$i.nix > lang/$i.out; then + if ! NIX_PATH=lang/dir3:lang/dir4:$NIX_PATH nix-instantiate $flags --eval-only --strict lang/$i.nix > lang/$i.out; then echo "FAIL: $i should evaluate" fail=1 elif ! diff lang/$i.out lang/$i.exp; then diff --git a/tests/lang/eval-okay-search-path.nix b/tests/lang/eval-okay-search-path.nix index 21485dbbf6..9b71150233 100644 --- a/tests/lang/eval-okay-search-path.nix +++ b/tests/lang/eval-okay-search-path.nix @@ -1,3 +1,3 @@ -assert builtins.pathExists <nix/buildenv>; +assert builtins.pathExists <nix/buildenv.nix>; import <a.nix> + import <b.nix> + import <c.nix> + import <dir5/c.nix> diff --git a/tests/nix-channel.sh b/tests/nix-channel.sh new file mode 100644 index 0000000000..4819b57c91 --- /dev/null +++ b/tests/nix-channel.sh @@ -0,0 +1,43 @@ +source common.sh + +clearProfiles +clearManifests + +rm -f $TEST_ROOT/.nix-channels + +# Override location of ~/.nix-channels. +export HOME=$TEST_ROOT + +# Test add/list/remove. +nix-channel --add http://foo/bar +nix-channel --list | grep -q http://foo/bar +nix-channel --remove http://foo/bar + +[ -e $TEST_ROOT/.nix-channels ] +[ "$(cat $TEST_ROOT/.nix-channels)" = '' ] + +# Create a channel. +rm -rf $TEST_ROOT/foo +mkdir -p $TEST_ROOT/foo +nix-push --copy $TEST_ROOT/foo $TEST_ROOT/foo/MANIFEST $(nix-store -r $(nix-instantiate dependencies.nix)) +rm -rf $TEST_ROOT/nixexprs +mkdir -p $TEST_ROOT/nixexprs +cp config.nix dependencies.nix dependencies.builder*.sh $TEST_ROOT/nixexprs/ +ln -s dependencies.nix $TEST_ROOT/nixexprs/default.nix +(cd $TEST_ROOT && tar cvf - nixexprs) | bzip2 > $TEST_ROOT/foo/nixexprs.tar.bz2 + +# Test the update action. +nix-channel --add file://$TEST_ROOT/foo +nix-channel --update + +# Do a query. +nix-env -qa \* --meta --xml --out-path > $TEST_ROOT/meta.xml +if [ "$xmllint" != false ]; then + $xmllint --noout $TEST_ROOT/meta.xml || fail "malformed XML" +fi +grep -q 'meta.*description.*Random test package' $TEST_ROOT/meta.xml +grep -q 'item.*attrPath="foo".*name="dependencies"' $TEST_ROOT/meta.xml + +# Do an install. +nix-env -i dependencies +[ -e $TEST_ROOT/var/nix/profiles/default/foobar ] diff --git a/tests/user-envs.sh b/tests/user-envs.sh index 5037e28b91..2bc9bee50b 100644 --- a/tests/user-envs.sh +++ b/tests/user-envs.sh @@ -36,7 +36,7 @@ nix-env -p $profiles/test -q '*' | grep -q foo-2.0pre1 test "$($profiles/test/bin/foo)" = "foo-2.0pre1" # Upgrade "foo": should install foo-2.0. -NIX_PATH=nixpkgs=./user-envs.nix nix-env -p $profiles/test -f '<nixpkgs>' -u foo +NIX_PATH=nixpkgs=./user-envs.nix:$NIX_PATH nix-env -p $profiles/test -f '<nixpkgs>' -u foo # Query installed: should contain foo-2.0 now. test "$(nix-env -p $profiles/test -q '*' | wc -l)" -eq 1 |