Skip to content

Commit

Permalink
Merge remote-tracking branch 'layered/test-groups' into overlayfs-store
Browse files Browse the repository at this point in the history
  • Loading branch information
cidkidnix committed Jul 13, 2023
2 parents 04d5aa0 + 735a672 commit c26fc96
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 30 deletions.
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ makefiles += \
src/libexpr/tests/local.mk \
tests/local.mk \
tests/overlay-local-store/local.mk \
tests/ca/local.mk \
tests/dyn-drv/local.mk \
tests/test-libstoreconsumer/local.mk \
tests/plugins/local.mk
else
Expand Down
28 changes: 28 additions & 0 deletions doc/manual/src/contributing/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ You can run the whole testsuite with `make check`, or the tests for a specific c
The functional tests reside under the `tests` directory and are listed in `tests/local.mk`.
Each test is a bash script.

### Running the whole test suite

The whole test suite can be run with:

```shell-session
Expand All @@ -23,6 +25,32 @@ ran test tests/bar.sh... [PASS]
...
```

### Grouping tests

Sometimes it is useful to group related tests so they can be easily run together without running the entire test suite.
For example, `tests/ca/local.mk` defines a "ca" test group for tests relating to content-addressed derivation outputs.

That test group can be run like this:

```shell-session
$ make ca.test-group -j50
ran test tests/ca/nix-run.sh... [PASS]
ran test tests/ca/import-derivation.sh... [PASS]
...
```

The testgroup is defined in Make like this:
```makefile
$(test-group-name)-tests := \
$(d)/test0.sh \
$(d)/test1.sh \
...

install-tests-groups += $(test-group-name)
```

### Running individual tests

Individual tests can be run with `make`:

```shell-session
Expand Down
7 changes: 4 additions & 3 deletions mk/lib.mk
Original file line number Diff line number Diff line change
Expand Up @@ -122,11 +122,12 @@ $(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))))
$(foreach test, $(install-tests), $(eval installcheck: $(test).test))
$(foreach test, $(install-tests), \
$(eval $(call run-install-test,$(test))) \
$(eval installcheck: $(test).test))
$(foreach test-group, $(install-tests-groups), \
$(eval $(call run-install-test-group,$(test-group))) \
$(eval installcheck: $(test-group).test-group) \
$(eval .PHONY: $(test-group).test-group) \
$(foreach test, $($(test-group)-tests), \
$(eval $(call run-install-test,$(test))) \
$(eval $(test-group).test-group: $(test).test)))
Expand Down
9 changes: 8 additions & 1 deletion mk/tests.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

test-deps =

define run-install-test $1
define run-install-test

.PHONY: $1.test
$1.test: $1 $(test-deps)
@env BASH=$(bash) $(bash) mk/run-test.sh $1 < /dev/null
Expand All @@ -13,6 +14,12 @@ define run-install-test $1

endef

define run-install-test-group

.PHONY: $1.test-group

endef

.PHONY: check installcheck

print-top-help += \
Expand Down
27 changes: 27 additions & 0 deletions tests/ca/local.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
ca-tests := \
$(d)/build-with-garbage-path.sh \
$(d)/build.sh \
$(d)/concurrent-builds.sh \
$(d)/derivation-json.sh \
$(d)/duplicate-realisation-in-closure.sh \
$(d)/gc.sh \
$(d)/import-derivation.sh \
$(d)/new-build-cmd.sh \
$(d)/nix-copy.sh \
$(d)/nix-run.sh \
$(d)/nix-shell.sh \
$(d)/post-hook.sh \
$(d)/recursive.sh \
$(d)/repl.sh \
$(d)/selfref-gc.sh \
$(d)/signatures.sh \
$(d)/substitute.sh \
$(d)/why-depends.sh

install-tests-groups += ca

clean-files += \
$(d)/config.nix

test-deps += \
tests/ca/config.nix
11 changes: 11 additions & 0 deletions tests/dyn-drv/local.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
dyn-drv-tests := \
$(d)/text-hashed-output.sh \
$(d)/recursive-mod-json.sh

install-tests-groups += dyn-drv

clean-files += \
$(d)/config.nix

test-deps += \
tests/dyn-drv/config.nix
29 changes: 3 additions & 26 deletions tests/local.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ nix_tests = \
flakes/absolute-paths.sh \
flakes/build-paths.sh \
flakes/flake-in-submodule.sh \
ca/gc.sh \
gc.sh \
nix-collect-garbage-d.sh \
remote-store.sh \
Expand All @@ -28,8 +27,6 @@ nix_tests = \
user-envs-migration.sh \
binary-cache.sh \
multiple-outputs.sh \
ca/build.sh \
ca/new-build-cmd.sh \
nix-build.sh \
gc-concurrent.sh \
repair.sh \
Expand All @@ -47,24 +44,17 @@ nix_tests = \
referrers.sh \
optimise-store.sh \
substitute-with-invalid-ca.sh \
ca/concurrent-builds.sh \
signing.sh \
ca/build-with-garbage-path.sh \
hash.sh \
gc-non-blocking.sh \
check.sh \
ca/substitute.sh \
nix-shell.sh \
ca/signatures.sh \
ca/nix-shell.sh \
ca/nix-copy.sh \
check-refs.sh \
build-remote-input-addressed.sh \
secure-drv-outputs.sh \
restricted.sh \
fetchGitSubmodules.sh \
flakes/search-root.sh \
ca/duplicate-realisation-in-closure.sh \
readfile-context.sh \
nix-channel.sh \
recursive.sh \
Expand All @@ -80,10 +70,7 @@ nix_tests = \
nar-access.sh \
pure-eval.sh \
eval.sh \
ca/post-hook.sh \
repl.sh \
ca/repl.sh \
ca/recursive.sh \
binary-cache-build-remote.sh \
search.sh \
logging.sh \
Expand All @@ -109,13 +96,8 @@ nix_tests = \
fmt.sh \
eval-store.sh \
why-depends.sh \
ca/why-depends.sh \
derivation-json.sh \
ca/derivation-json.sh \
import-derivation.sh \
ca/import-derivation.sh \
dyn-drv/text-hashed-output.sh \
dyn-drv/recursive-mod-json.sh \
nix_path.sh \
case-hack.sh \
placeholders.sh \
Expand All @@ -124,8 +106,7 @@ nix_tests = \
build.sh \
build-delete.sh \
output-normalization.sh \
ca/nix-run.sh \
selfref-gc.sh ca/selfref-gc.sh \
selfref-gc.sh \
db-migration.sh \
bash-profile.sh \
pass-as-file.sh \
Expand All @@ -149,16 +130,12 @@ install-tests += $(foreach x, $(nix_tests), $(d)/$(x))

clean-files += \
$(d)/common/vars-and-functions.sh \
$(d)/config.nix \
$(d)/ca/config.nix \
$(d)/dyn-drv/config.nix
$(d)/config.nix

test-deps += \
tests/common/vars-and-functions.sh \
tests/config.nix \
tests/ca/config.nix \
tests/test-libstoreconsumer/test-libstoreconsumer \
tests/dyn-drv/config.nix
tests/test-libstoreconsumer/test-libstoreconsumer

ifeq ($(BUILD_SHARED_LIBS), 1)
test-deps += tests/plugins/libplugintest.$(SO_EXT)
Expand Down

0 comments on commit c26fc96

Please sign in to comment.