summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am4
-rw-r--r--tests/common.sh.in7
-rw-r--r--tests/config.nix.in3
-rw-r--r--tests/dependencies.nix1
-rw-r--r--tests/init.sh24
-rw-r--r--tests/lang.sh2
-rw-r--r--tests/lang/eval-okay-search-path.nix2
-rw-r--r--tests/nix-channel.sh43
-rw-r--r--tests/user-envs.sh2
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