Merge tag 'release_3_0_12' into branch moonshot-fr-3.0.12-upgrade.
[freeradius.git] / src / tests / map / map_tests.mk
1 MAP_TESTS       := $(patsubst $(top_srcdir)/src/tests/map/%,%,$(filter-out %.conf %.md %.attrs %.c %.mk %~ %.rej %.out,$(wildcard $(top_srcdir)/src/tests/map/*)))
2 MAP_OUTPUT      := $(addsuffix .out,$(addprefix $(BUILD_DIR)/tests/map/,$(MAP_TESTS)))
3 MAP_UNIT_BIN    := $(BUILD_DIR)/bin/local/map_unit
4 MAP_UNIT        := ./build/make/jlibtool --silent --mode=execute $(MAP_UNIT_BIN)
5
6 .PHONY: $(BUILD_DIR)/tests/map/
7 $(BUILD_DIR)/tests/map/:
8         @mkdir -p $@
9
10 #
11 #       Re-run the tests if the test program changes
12 #
13 #       Create the output directory before the files
14 #
15 $(MAP_OUTPUT): $(MAP_UNIT_BIN) | $(BUILD_DIR)/tests/map/
16
17 #
18 #       Re-run the tests if the input file changes
19 #
20 $(BUILD_DIR)/tests/map/%.out: $(top_srcdir)/src/tests/map/%
21         @echo MAP_TEST $(notdir $<)
22         @if ! $(MAP_UNIT) -d $(top_srcdir)/raddb -D $(top_srcdir)/share $< > $@ 2>&1; then \
23                 if ! grep ERROR $< 2>&1 > /dev/null; then \
24                         cat $@; \
25                         echo "# $@"; \
26                         echo FAILED: "$(MAP_UNIT) -d $(top_srcdir)/raddb -D $(top_srcdir)/share $<"; \
27                         exit 1; \
28                 fi; \
29                 FOUND=$$(grep $< $@ | head -1 | sed 's,^.*$(top_srcdir),,;s/:.*//;s/.*\[//;s/\].*//'); \
30                 EXPECTED=$$(grep -n ERROR $< | sed 's/:.*//'); \
31                 if [ "$$EXPECTED" != "$$FOUND" ]; then \
32                         cat $@; \
33                         echo "# $@"; \
34                         echo "E $$EXPECTED F $$FOUND"; \
35                         echo UNEXPECTED ERROR: "$(MAP_UNIT) -d $(top_srcdir)/raddb -D $(top_srcdir)/share $<"; \
36                         exit 1; \
37                 fi; \
38         else \
39                 if ! diff $<.out $@; then \
40                         echo FAILED: " diff $<.out $@"; \
41                         echo FAILED: "$(MAP_UNIT) -d $(top_srcdir)/raddb -D $(top_srcdir)/share $<"; \
42                         exit 1; \
43                 fi; \
44         fi
45
46 TESTS.MAP_FILES := $(MAP_OUTPUT)
47
48 $(TESTS.MAP_FILES): $(TESTS.UNIT_FILES)
49
50 tests.map: $(MAP_OUTPUT)