blob: 1df26bca5162be10c4227361eef2788ca1d34b36 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
#########################################################################
# #
# OCaml #
# #
# Xavier Clerc, SED, INRIA Rocquencourt #
# #
# Copyright 2010 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
BASEDIR := $(shell pwd)
NO_PRINT=`$(MAKE) empty --no-print-directory >/dev/null 2>&1 \
&& echo --no-print-directory`
FIND=find
include ../config/Makefile
.PHONY: default
default:
@echo "Available targets:"
@echo " all launch all tests"
@echo " list FILE=f launch the tests listed in f (one per line)"
@echo " one DIR=p launch the tests located in path p"
@echo " promote DIR=p promote the reference files for the tests in p"
@echo " lib build library modules"
@echo " clean delete generated files"
@echo " report print the report for the last execution"
.PHONY: all
all: lib
@for dir in tests/*; do \
$(MAKE) $(NO_PRINT) exec-one DIR=$$dir; \
done 2>&1 | tee _log
@$(MAKE) report
all-basic: lib
@for dir in tests/basic*; do \
$(MAKE) $(NO_PRINT) exec-one DIR=$$dir; \
done 2>&1 | tee _log
@$(MAKE) report
all-lib: lib
@for dir in tests/lib-*; do \
$(MAKE) $(NO_PRINT) exec-one DIR=$$dir; \
done 2>&1 | tee _log
@$(MAKE) report
all-typing: lib
@for dir in tests/typing-*; do \
$(MAKE) $(NO_PRINT) exec-one DIR=$$dir; \
done 2>&1 | tee _log
@$(MAKE) report
all-tool: lib
@for dir in tests/tool-*; do \
$(MAKE) $(NO_PRINT) exec-one DIR=$$dir; \
done 2>&1 | tee _log
@$(MAKE) report
.PHONY: list
list: lib
@if [ -z "$(FILE)" ]; \
then echo "No value set for variable 'FILE'."; \
exit 1; \
fi
@while read LINE; do \
$(MAKE) $(NO_PRINT) exec-one DIR=$$LINE; \
done <$(FILE) 2>&1 | tee _log
@$(MAKE) report
.PHONY: one
one: lib
@if [ -z "$(DIR)" ]; then \
echo "No value set for variable 'DIR'."; \
exit 1; \
fi
@if [ ! -d $(DIR) ]; then \
echo "Directory '$(DIR)' does not exist."; \
exit 1; \
fi
@$(MAKE) $(NO_PRINT) exec-one DIR=$(DIR)
.PHONY: exec-one
exec-one:
@if [ ! -f $(DIR)/Makefile ]; then \
for dir in $(DIR)/*; do \
if [ -d $$dir ]; then \
$(MAKE) exec-one DIR=$$dir; \
fi; \
done; \
else \
echo "Running tests from '$$DIR' ..."; \
cd $(DIR) && \
$(MAKE) TERM=dumb BASEDIR=$(BASEDIR) || echo '=> unexpected error'; \
fi
.PHONY: promote
promote:
@if [ -z "$(DIR)" ]; then \
echo "No value set for variable 'DIR'."; \
exit 1; \
fi
@if [ ! -d $(DIR) ]; then \
echo "Directory '$(DIR)' does not exist."; \
exit 1; \
fi
@cd $(DIR) && $(MAKE) TERM=dumb BASEDIR=$(BASEDIR) promote
.PHONY: lib
lib:
@cd lib && $(MAKE) -s BASEDIR=$(BASEDIR)
.PHONY: clean
clean:
@cd lib && $(MAKE) BASEDIR=$(BASEDIR) clean
@for file in `$(FIND) interactive tests -name Makefile`; do \
(cd `dirname $$file` && $(MAKE) BASEDIR=$(BASEDIR) clean); \
done
.PHONY: report
report:
@if [ ! -f _log ]; then echo "No '_log' file."; exit 1; fi
@awk -f makefiles/summarize.awk <_log
.PHONY: empty
empty:
|