eclass/tests: Fail the .%.sh.ok Makefile recipe if the test fails

With .ONESHELL active, only the return status of the final recipe line
will be checked.

Signed-off-by: Ulrich Müller <ulm@gentoo.org>
This commit is contained in:
Ulrich Müller
2024-06-13 21:40:54 +02:00
parent 0fcc9d4281
commit 2d60db1176

View File

@@ -2,18 +2,20 @@ SH_FILES := $(wildcard *.sh)
TEST_FILES := $(filter-out tests-common.sh version-funcs.sh, $(SH_FILES))
TEST_OK_FILES := $(patsubst %.sh, .%.sh.ok,$ $(TEST_FILES))
# !!! _All_ recipe lines for each target will be provided to a single
# !!! invocation of the shell.
.ONESHELL:
# We cache a successful test result if the testfile itself did not
# change (%.sh) and the contents of the eclass/ directory did not
# change (.eclasssum).
.%.sh.ok: %.sh .eclasssum
./$<
touch $@
./$< && touch $@
.PHONY: test
test: $(TEST_OK_FILES)
.PHONY: force
.ONESHELL:
.eclasssum: SHELL = /bin/bash
.eclasssum: force
set -euo pipefail