ef976d26767d515ce65bb7b4b8dbcddd666933fc
[autotest_mk.git] / template / Group.mk
1 # autotest.mk > template > Group.mk
2 # テストグループのMakefile
3 #
4 # オペレーター
5 # make         : すべてのテストを実施し、ログファイルを作成
6 # make check   : ↓
7 # make create  : TESTNAMEで指定されたテストを新規に作成
8 # make set     : すべてのテストの、想定結果を出力
9 # make checkeach: すべてのテストを実施
10 # make report  : ログファイルから、テストの結果をレポート
11 # make clean   : すべてのテストで、"make" で生成されたファイルをクリア
12 # make cleanall: すべてのテストで、"make" と "make set" で生成されたファイルをクリア
13
14 include Define.mk
15
16 .PHONY: check create set checkeach report clean cleanall
17
18 check: checkeach report
19
20 create:
21 ifndef TEST
22         @$(ECHO) "no test created. set TEST."
23 else
24         @$(MKDIR) $(TEST)
25         @for ifile in $(DEF_FILE) $(TEST_MAKEFILE); do $(ECHO) "include ../$$ifile" >>$(TEST)/Makefile; done
26 endif
27
28 set:
29         @for target in $(TESTS); do $(MAKE) set -C $$target; done
30
31 checkeach:
32         @$(RM) $(GROUP_LOG_FILE)
33         @for target in $(TESTS); do $(MAKE) check -C $$target; done
34
35 $(GROUP_LOG_FILE):
36         @for target in $(TESTS); do ($(ECHO) <$$target/$(LOG_FILE) && $(CAT) <$$target/$(LOG_FILE)) >>$@ || $(ECHO) $$target ": no log." >>$@; done
37
38 report: $(GROUP_LOG_FILE)
39         @$(ECHO) "$(GROUP): $(SUCCESS_TEST) / $(ALL_TEST) tests passed. Details in `pwd`/$(GROUP_LOG_FILE)"; \
40          if test $(FAIL_TEST) -eq 0; then $(ECHO) "$(GROUP): All tests are succeded."; fi
41
42 time: timeeach $(GROUP_TIME_FILE)
43         @$(CAT) $(GROUP_TIME_FILE)
44
45 $(GROUP_TIME_FILE):
46         @for target in $(TESTS); do ($(ECHO)<$$target/$(LOG_FILE) && $(CAT) <$$target/$(TIME_FILE)) >>$@ || $(ECHO) $$target ": no time." >>$@; done
47
48 timeeach:
49         @for target in $(TESTS); do $(MAKE) time -C $$target; done
50
51 clean:
52         @for target in $(TESTS); do $(MAKE) clean -C $$target; done
53         @$(RM) $(GROUP_LOG_FILE)