2020-12-11 17:24:10 +03:00
|
|
|
################################
|
|
|
|
# Running legislation unit tests
|
|
|
|
################################
|
|
|
|
|
|
|
|
|
|
|
|
# Usage `make <name_of_example_folder>.<name_of_test_file>.<name_of_test_scope>`
|
|
|
|
# This Makefile rule assumes the following directory structure:
|
|
|
|
# foo_example
|
|
|
|
# tests/
|
|
|
|
# foo_test_file1.catala
|
|
|
|
# foo_test_file2.catala
|
|
|
|
# ...
|
|
|
|
# foo_implem.catala
|
|
|
|
# ...
|
|
|
|
%.run: .FORCE
|
|
|
|
@SCOPE="$(word 3,$(subst ., ,$*))" $(MAKE) --no-print-directory -C \
|
|
|
|
$(word 1,$(subst ., ,$*)) tests/$(word 2,$(subst ., ,$*)).run \
|
|
|
|
> /dev/null || { echo "[FAIL $@]"; exit 1; }
|
|
|
|
@echo "[PASS $@]"
|
|
|
|
|
2020-12-21 18:02:00 +03:00
|
|
|
TEST_FILES?=$(wildcard */tests/*.catala*)
|
2020-12-11 17:24:10 +03:00
|
|
|
|
2020-12-18 18:22:23 +03:00
|
|
|
TEST_FILES_SCOPES_EN=$(foreach TEST_FILE,$(TEST_FILES),\
|
2020-12-11 17:24:10 +03:00
|
|
|
$(foreach TEST_SCOPE,\
|
|
|
|
$(shell grep -Po "declaration scope [^:]*" $(TEST_FILE) | cut -d " " -f 3), \
|
2020-12-11 23:17:01 +03:00
|
|
|
$(word 1,$(subst /, ,$(TEST_FILE))).$(word 1,$(subst ., ,$(word 3,$(subst /, ,$(TEST_FILE))))).$(TEST_SCOPE).run \
|
2020-12-11 17:24:10 +03:00
|
|
|
) \
|
|
|
|
)
|
|
|
|
|
2020-12-18 18:22:23 +03:00
|
|
|
TEST_FILES_SCOPES_FR=$(foreach TEST_FILE,$(TEST_FILES),\
|
|
|
|
$(foreach TEST_SCOPE,\
|
|
|
|
$(shell grep -Po "déclaration champ d'application [^:]*" $(TEST_FILE) | cut -d " " -f 3), \
|
|
|
|
$(word 1,$(subst /, ,$(TEST_FILE))).$(word 1,$(subst ., ,$(word 3,$(subst /, ,$(TEST_FILE))))).$(TEST_SCOPE).run \
|
|
|
|
) \
|
|
|
|
)
|
|
|
|
|
2020-12-21 18:02:00 +03:00
|
|
|
tests: $(TEST_FILES_SCOPES_EN) $(TEST_FILES_SCOPES_FR)
|
2020-12-11 17:24:10 +03:00
|
|
|
|
|
|
|
.FORCE:
|