about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-11-25T17·47+0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-11-25T17·47+0100
commit0202ce6b94f287f70a6723473c73a4c7f135dae4 (patch)
treeb87dc49e456c3e9a2cb335b94ac22542a875be32
parent9285f0aa2b44427afef7c50f0efae8f74307a7a5 (diff)
Add support for ‘make installcheck’
-rw-r--r--.gitignore9
-rw-r--r--Makefile3
-rw-r--r--Makefile.config.in2
-rw-r--r--corepkgs/config.nix.in2
-rw-r--r--mk/lib.mk6
-rwxr-xr-xscripts/nix-reduce-build.in2
-rw-r--r--src/nix-log2xml/Makefile3
-rw-r--r--tests/Makefile21
-rw-r--r--tests/common.sh.in8
-rw-r--r--tests/config.nix (renamed from tests/config.nix.in)12
-rw-r--r--tests/parallel.sh12
11 files changed, 52 insertions, 28 deletions
diff --git a/.gitignore b/.gitignore
index fafe8a17a461..42c7be2b7ef6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -85,10 +85,6 @@ Makefile.config
 
 # /src/nix-log2xml/
 /src/nix-log2xml/nix-log2xml
-/src/nix-log2xml/test*.*
-/src/nix-log2xml/*.log
-/src/nix-log2xml/*.xml
-/src/nix-log2xml/*.html
 
 # /src/nix-store/
 /src/nix-store/nix-store
@@ -98,7 +94,6 @@ Makefile.config
 
 # /tests/
 /tests/test-tmp
-/tests/config.nix
 /tests/common.sh
 /tests/dummy
 /tests/result*
@@ -111,11 +106,7 @@ Makefile.config
 /perl/lib/Nix/Config.pm
 /perl/lib/Nix/Store.cc
 
-.deps
-.libs
 *.a
-*.lo
-*.la
 *.o
 *.so
 *.dep
diff --git a/Makefile b/Makefile
index 6abce9372b2c..85a2dc8e521b 100644
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,8 @@ SUBS = \
   src/bsdiff-4.3/Makefile \
   perl/Makefile \
   scripts/Makefile \
-  corepkgs/Makefile
+  corepkgs/Makefile \
+  tests/Makefile
 
 GLOBAL_CXXFLAGS = -I . -I src -I src/libutil -I src/libstore -I src/libmain -I src/libexpr
 
diff --git a/Makefile.config.in b/Makefile.config.in
index 65080c88f71a..130da2625618 100644
--- a/Makefile.config.in
+++ b/Makefile.config.in
@@ -1,5 +1,4 @@
 BDW_GC_LIBS = @BDW_GC_LIBS@
-BUILD_DEBUG = 1
 CC = @CC@
 CFLAGS = @CFLAGS@
 CXX = @CXX@
@@ -8,6 +7,7 @@ HAVE_OPENSSL = @HAVE_OPENSSL@
 OPENSSL_LIBS = @OPENSSL_LIBS@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
+bash = @bash@
 bindir = @bindir@
 bsddiff_compat_include = @bsddiff_compat_include@
 datadir = @datadir@
diff --git a/corepkgs/config.nix.in b/corepkgs/config.nix.in
index 3819dc96c164..a5ec83b9ea0c 100644
--- a/corepkgs/config.nix.in
+++ b/corepkgs/config.nix.in
@@ -4,7 +4,7 @@ let
     if val != "" then val else def;
 in {
   perl = "@perl@";
-  shell = "@shell@";
+  shell = "@bash@";
   coreutils = "@coreutils@";
   bzip2 = "@bzip2@";
   gzip = "@gzip@";
diff --git a/mk/lib.mk b/mk/lib.mk
index 107a5af3f75e..60b6815e9e2e 100644
--- a/mk/lib.mk
+++ b/mk/lib.mk
@@ -17,6 +17,8 @@ noinst_SCRIPTS :=
 
 
 # Pass -fPIC if we're building dynamic libraries.
+BUILD_SHARED_LIBS = 1
+
 ifeq ($(BUILD_SHARED_LIBS), 1)
   GLOBAL_CFLAGS += -fPIC
   GLOBAL_CXXFLAGS += -fPIC
@@ -25,6 +27,8 @@ endif
 
 
 # Pass -g if we want debug info.
+BUILD_DEBUG = 1
+
 ifeq ($(BUILD_DEBUG), 1)
   GLOBAL_CFLAGS += -g
   GLOBAL_CXXFLAGS += -g
@@ -38,6 +42,7 @@ include mk/libraries.mk
 include mk/programs.mk
 include mk/patterns.mk
 include mk/templates.mk
+include mk/tests.mk
 
 
 # Include all sub-Makefiles.
@@ -56,6 +61,7 @@ $(foreach script, $(bin_SCRIPTS), $(eval $(call install-program-in,$(script),$(b
 $(foreach script, $(bin_SCRIPTS), $(eval programs_list += $(script)))
 $(foreach script, $(noinst_SCRIPTS), $(eval programs_list += $(script)))
 $(foreach template, $(template_files), $(eval $(call instantiate-template,$(template))))
+$(foreach test, $(INSTALL_TESTS), $(eval $(call run-install-test,$(test))))
 
 
 all: $(programs_list) $(libs_list)
diff --git a/scripts/nix-reduce-build.in b/scripts/nix-reduce-build.in
index 0c33275d5eb0..50beb9d10b16 100755
--- a/scripts/nix-reduce-build.in
+++ b/scripts/nix-reduce-build.in
@@ -1,4 +1,4 @@
-#! @shell@
+#! @bash@
 
 WORKING_DIRECTORY=$(mktemp -d "${TMPDIR:-/tmp}"/nix-reduce-build-XXXXXX);
 cd "$WORKING_DIRECTORY";
diff --git a/src/nix-log2xml/Makefile b/src/nix-log2xml/Makefile
index a88f948671dc..8b02dca7ae21 100644
--- a/src/nix-log2xml/Makefile
+++ b/src/nix-log2xml/Makefile
@@ -3,3 +3,6 @@ PROGRAMS += nix-log2xml
 nix-log2xml_DIR := $(d)
 
 nix-log2xml_SOURCES = log2xml.cc
+
+$(foreach file, mark-errors.xsl log2html.xsl treebits.js, \
+  $(eval $(call install-data-in, $(d)/$(file), $(datadir)/nix/log2html)))
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 000000000000..21ffd047f6f2
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,21 @@
+check:
+	@echo "Warning: Nix has no 'make check'. Please install Nix and run 'make installcheck' instead."
+
+nix_tests = \
+  init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \
+  parallel.sh build-hook.sh substitutes.sh substitutes2.sh \
+  fallback.sh nix-push.sh gc.sh gc-concurrent.sh verify.sh nix-pull.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 nix-channel.sh \
+  multiple-outputs.sh import-derivation.sh fetchurl.sh optimise-store.sh \
+  binary-cache.sh nix-profile.sh
+
+INSTALL_TESTS += $(foreach x, $(nix_tests), tests/$(x))
+
+TESTS_ENVIRONMENT = NIX_REMOTE= $(bash) -e
+
+clean_files += $(d)/common.sh
+
+installcheck: $(d)/common.sh
diff --git a/tests/common.sh.in b/tests/common.sh.in
index 2ae34603fcb5..633769ae2c1e 100644
--- a/tests/common.sh.in
+++ b/tests/common.sh.in
@@ -1,7 +1,7 @@
 set -e
 
 datadir="@datadir@"
-profiledir="@profiledir@"
+profiledir="@sysconfdir@/profile.d"
 
 export TEST_ROOT=$(pwd)/test-tmp
 export NIX_STORE_DIR
@@ -16,7 +16,7 @@ export NIX_STATE_DIR=$TEST_ROOT/var/nix
 export NIX_DB_DIR=$TEST_ROOT/db
 export NIX_CONF_DIR=$TEST_ROOT/etc
 export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests
-export SHARED=$TEST_ROOT/shared
+export _NIX_TEST_SHARED=$TEST_ROOT/shared
 export NIX_REMOTE=$NIX_REMOTE_
 
 export PATH=@bindir@:$PATH
@@ -26,9 +26,9 @@ export dot=@dot@
 export xmllint="@xmllint@"
 export xmlflags="@xmlflags@"
 export xsltproc="@xsltproc@"
-export SHELL="@shell@"
+export SHELL="@bash@"
 
-export version=@version@
+export version=@PACKAGE_VERSION@
 export system=@system@
 
 readLink() {
diff --git a/tests/config.nix.in b/tests/config.nix
index db3da145135c..6244a15fa48a 100644
--- a/tests/config.nix.in
+++ b/tests/config.nix
@@ -1,12 +1,14 @@
+with import <nix/config.nix>;
+
 rec {
-  shell = "@shell@";
+  inherit shell;
+
+  path = coreutils;
 
-  path = "@testPath@";
+  system = builtins.currentSystem;
 
-  system = "@system@";
+  shared = builtins.getEnv "_NIX_TEST_SHARED";
 
-  shared = "@extra1@";
-    
   mkDerivation = args:
     derivation ({
       inherit system;
diff --git a/tests/parallel.sh b/tests/parallel.sh
index 9b150263a59d..3b7bbe5a2251 100644
--- a/tests/parallel.sh
+++ b/tests/parallel.sh
@@ -6,7 +6,7 @@ echo "testing nix-build -j..."
 
 clearStore
 
-rm -f $SHARED.cur $SHARED.max
+rm -f $_NIX_TEST_SHARED.cur $_NIX_TEST_SHARED.max
 
 outPath=$(nix-build -j10000 parallel.nix --no-out-link)
 
@@ -15,8 +15,8 @@ echo "output path is $outPath"
 text=$(cat "$outPath")
 if test "$text" != "abacade"; then exit 1; fi
 
-if test "$(cat $SHARED.cur)" != 0; then fail "wrong current process count"; fi
-if test "$(cat $SHARED.max)" != 3; then fail "not enough parallelism"; fi
+if test "$(cat $_NIX_TEST_SHARED.cur)" != 0; then fail "wrong current process count"; fi
+if test "$(cat $_NIX_TEST_SHARED.max)" != 3; then fail "not enough parallelism"; fi
 
 
 # Second, test that parallel invocations of nix-build perform builds
@@ -25,7 +25,7 @@ echo "testing multiple nix-build -j1..."
 
 clearStore
 
-rm -f $SHARED.cur $SHARED.max
+rm -f $_NIX_TEST_SHARED.cur $_NIX_TEST_SHARED.max
 
 drvPath=$(nix-instantiate parallel.nix --argstr sleepTime 15)
 
@@ -52,5 +52,5 @@ wait $pid2 || fail "instance 2 failed: $?"
 wait $pid3 || fail "instance 3 failed: $?"
 wait $pid4 || fail "instance 4 failed: $?"
 
-if test "$(cat $SHARED.cur)" != 0; then fail "wrong current process count"; fi
-if test "$(cat $SHARED.max)" != 3; then fail "not enough parallelism"; fi
+if test "$(cat $_NIX_TEST_SHARED.cur)" != 0; then fail "wrong current process count"; fi
+if test "$(cat $_NIX_TEST_SHARED.max)" != 3; then fail "not enough parallelism"; fi