Add support for ‘make installcheck’

This commit is contained in:
Eelco Dolstra 2013-11-25 18:47:03 +01:00
parent 9285f0aa2b
commit 0202ce6b94
11 changed files with 52 additions and 28 deletions

9
.gitignore vendored
View File

@ -85,10 +85,6 @@ Makefile.config
# /src/nix-log2xml/ # /src/nix-log2xml/
/src/nix-log2xml/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/
/src/nix-store/nix-store /src/nix-store/nix-store
@ -98,7 +94,6 @@ Makefile.config
# /tests/ # /tests/
/tests/test-tmp /tests/test-tmp
/tests/config.nix
/tests/common.sh /tests/common.sh
/tests/dummy /tests/dummy
/tests/result* /tests/result*
@ -111,11 +106,7 @@ Makefile.config
/perl/lib/Nix/Config.pm /perl/lib/Nix/Config.pm
/perl/lib/Nix/Store.cc /perl/lib/Nix/Store.cc
.deps
.libs
*.a *.a
*.lo
*.la
*.o *.o
*.so *.so
*.dep *.dep

View File

@ -13,7 +13,8 @@ SUBS = \
src/bsdiff-4.3/Makefile \ src/bsdiff-4.3/Makefile \
perl/Makefile \ perl/Makefile \
scripts/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 GLOBAL_CXXFLAGS = -I . -I src -I src/libutil -I src/libstore -I src/libmain -I src/libexpr

View File

@ -1,5 +1,4 @@
BDW_GC_LIBS = @BDW_GC_LIBS@ BDW_GC_LIBS = @BDW_GC_LIBS@
BUILD_DEBUG = 1
CC = @CC@ CC = @CC@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CXX = @CXX@ CXX = @CXX@
@ -8,6 +7,7 @@ HAVE_OPENSSL = @HAVE_OPENSSL@
OPENSSL_LIBS = @OPENSSL_LIBS@ OPENSSL_LIBS = @OPENSSL_LIBS@
PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_VERSION = @PACKAGE_VERSION@ PACKAGE_VERSION = @PACKAGE_VERSION@
bash = @bash@
bindir = @bindir@ bindir = @bindir@
bsddiff_compat_include = @bsddiff_compat_include@ bsddiff_compat_include = @bsddiff_compat_include@
datadir = @datadir@ datadir = @datadir@

View File

@ -4,7 +4,7 @@ let
if val != "" then val else def; if val != "" then val else def;
in { in {
perl = "@perl@"; perl = "@perl@";
shell = "@shell@"; shell = "@bash@";
coreutils = "@coreutils@"; coreutils = "@coreutils@";
bzip2 = "@bzip2@"; bzip2 = "@bzip2@";
gzip = "@gzip@"; gzip = "@gzip@";

View File

@ -17,6 +17,8 @@ noinst_SCRIPTS :=
# Pass -fPIC if we're building dynamic libraries. # Pass -fPIC if we're building dynamic libraries.
BUILD_SHARED_LIBS = 1
ifeq ($(BUILD_SHARED_LIBS), 1) ifeq ($(BUILD_SHARED_LIBS), 1)
GLOBAL_CFLAGS += -fPIC GLOBAL_CFLAGS += -fPIC
GLOBAL_CXXFLAGS += -fPIC GLOBAL_CXXFLAGS += -fPIC
@ -25,6 +27,8 @@ endif
# Pass -g if we want debug info. # Pass -g if we want debug info.
BUILD_DEBUG = 1
ifeq ($(BUILD_DEBUG), 1) ifeq ($(BUILD_DEBUG), 1)
GLOBAL_CFLAGS += -g GLOBAL_CFLAGS += -g
GLOBAL_CXXFLAGS += -g GLOBAL_CXXFLAGS += -g
@ -38,6 +42,7 @@ include mk/libraries.mk
include mk/programs.mk include mk/programs.mk
include mk/patterns.mk include mk/patterns.mk
include mk/templates.mk include mk/templates.mk
include mk/tests.mk
# Include all sub-Makefiles. # 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, $(bin_SCRIPTS), $(eval programs_list += $(script)))
$(foreach script, $(noinst_SCRIPTS), $(eval programs_list += $(script))) $(foreach script, $(noinst_SCRIPTS), $(eval programs_list += $(script)))
$(foreach template, $(template_files), $(eval $(call instantiate-template,$(template)))) $(foreach template, $(template_files), $(eval $(call instantiate-template,$(template))))
$(foreach test, $(INSTALL_TESTS), $(eval $(call run-install-test,$(test))))
all: $(programs_list) $(libs_list) all: $(programs_list) $(libs_list)

View File

@ -1,4 +1,4 @@
#! @shell@ #! @bash@
WORKING_DIRECTORY=$(mktemp -d "${TMPDIR:-/tmp}"/nix-reduce-build-XXXXXX); WORKING_DIRECTORY=$(mktemp -d "${TMPDIR:-/tmp}"/nix-reduce-build-XXXXXX);
cd "$WORKING_DIRECTORY"; cd "$WORKING_DIRECTORY";

View File

@ -3,3 +3,6 @@ PROGRAMS += nix-log2xml
nix-log2xml_DIR := $(d) nix-log2xml_DIR := $(d)
nix-log2xml_SOURCES = log2xml.cc nix-log2xml_SOURCES = log2xml.cc
$(foreach file, mark-errors.xsl log2html.xsl treebits.js, \
$(eval $(call install-data-in, $(d)/$(file), $(datadir)/nix/log2html)))

21
tests/Makefile Normal file
View File

@ -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

View File

@ -1,7 +1,7 @@
set -e set -e
datadir="@datadir@" datadir="@datadir@"
profiledir="@profiledir@" profiledir="@sysconfdir@/profile.d"
export TEST_ROOT=$(pwd)/test-tmp export TEST_ROOT=$(pwd)/test-tmp
export NIX_STORE_DIR 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_DB_DIR=$TEST_ROOT/db
export NIX_CONF_DIR=$TEST_ROOT/etc export NIX_CONF_DIR=$TEST_ROOT/etc
export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests 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 NIX_REMOTE=$NIX_REMOTE_
export PATH=@bindir@:$PATH export PATH=@bindir@:$PATH
@ -26,9 +26,9 @@ export dot=@dot@
export xmllint="@xmllint@" export xmllint="@xmllint@"
export xmlflags="@xmlflags@" export xmlflags="@xmlflags@"
export xsltproc="@xsltproc@" export xsltproc="@xsltproc@"
export SHELL="@shell@" export SHELL="@bash@"
export version=@version@ export version=@PACKAGE_VERSION@
export system=@system@ export system=@system@
readLink() { readLink() {

View File

@ -1,11 +1,13 @@
with import <nix/config.nix>;
rec { rec {
shell = "@shell@"; inherit shell;
path = "@testPath@"; path = coreutils;
system = "@system@"; system = builtins.currentSystem;
shared = "@extra1@"; shared = builtins.getEnv "_NIX_TEST_SHARED";
mkDerivation = args: mkDerivation = args:
derivation ({ derivation ({

View File

@ -6,7 +6,7 @@ echo "testing nix-build -j..."
clearStore 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) outPath=$(nix-build -j10000 parallel.nix --no-out-link)
@ -15,8 +15,8 @@ echo "output path is $outPath"
text=$(cat "$outPath") text=$(cat "$outPath")
if test "$text" != "abacade"; then exit 1; fi if test "$text" != "abacade"; then exit 1; fi
if test "$(cat $SHARED.cur)" != 0; then fail "wrong current process count"; fi if test "$(cat $_NIX_TEST_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.max)" != 3; then fail "not enough parallelism"; fi
# Second, test that parallel invocations of nix-build perform builds # Second, test that parallel invocations of nix-build perform builds
@ -25,7 +25,7 @@ echo "testing multiple nix-build -j1..."
clearStore 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) 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 $pid3 || fail "instance 3 failed: $?"
wait $pid4 || fail "instance 4 failed: $?" wait $pid4 || fail "instance 4 failed: $?"
if test "$(cat $SHARED.cur)" != 0; then fail "wrong current process count"; fi if test "$(cat $_NIX_TEST_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.max)" != 3; then fail "not enough parallelism"; fi