about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2012-01-03T01·51+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2012-01-03T01·51+0000
commit39d45a6b090b5105423b22b8ef39c2a4a000a4a1 (patch)
tree945e102b1f482f8eb393fe1c597b8ea499b26bf3 /tests
parentdadbb51d969517c1f2512015ab201dc99088d9a6 (diff)
* Add a test for nix-channel.
* Refactor the nix-channel unpacker a bit.

Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am3
-rw-r--r--tests/config.nix.in3
-rw-r--r--tests/dependencies.nix1
-rw-r--r--tests/nix-channel.sh43
4 files changed, 47 insertions, 3 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 38bfa139d7..dbafd553ac 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -8,7 +8,7 @@ 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
+  binary-patching.sh timeout.sh secure-drv-outputs.sh nix-channel.sh
 
 XFAIL_TESTS =
 
@@ -37,4 +37,3 @@ EXTRA_DIST = $(TESTS) \
   secure-drv-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/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/nix-channel.sh b/tests/nix-channel.sh
new file mode 100644
index 0000000000..1d7724e933
--- /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 cv 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 ]