セルフテストを元に、テストの内容を再整理
[autotest_mk.git] / selftest / unittest / Makefile
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 ######################################################################
15 # テストグループの定義
16 ######################################################################
17
18 include Define.mk
19
20 # グループディレクトリー
21 GROUP_DIR := $(shell pwd)
22
23 # グループ名。ディレクトリ名から取得
24 GROUP := $(notdir $(GROUP_DIR))
25
26 # テスト名。カレントディレクトリー内の、名前が大文字または.以外で始まるディレクトリー
27 TESTS = $(notdir $(shell find -maxdepth 1 -name "[^A-Z.]*" -type d))
28
29 # テストごとのログファイル
30 TEST_LOG_FILES := $(foreach test,$(TESTS),$(test)/$(LOG_FILE))
31
32 # テストグループログファイル
33 GROUP_LOG_FILE := $(shell echo $(GROUP) | tr '[a-z]' '[A-Z]').log
34
35 # テストグループレポートファイル
36 GROUP_REPORT_FILE := Report.log
37
38 # 成功したテストの数。テストグループログファイルから取得
39 SUCCESS_TEST = $(shell grep "^[^A-Z.].*: Test Success" $(GROUP_LOG_FILE) | wc -l)
40
41 # 失敗したテストの数。テストグループログファイルから取得
42 FAIL_TEST = $(shell grep "^[^A-Z.].*: Test Failure" $(GROUP_LOG_FILE) | wc -l)
43
44 # すべてのテストの数
45 ALL_TEST = $(shell expr $(SUCCESS_TEST) + $(FAIL_TEST))
46
47 # テストごとの実行時間ファイル
48 TEST_TIME_FILES := $(foreach test,$(TESTS),$(test)/$(TIME_FILE))
49
50 # テストグループ実行時間ファイル
51 GROUP_TIME_FILE := $(shell echo $(GROUP) | tr '[a-z]' '[A-Z]')_time.log
52
53 ######################################################################
54 # ターゲット
55 ######################################################################
56
57 .PHONY: check report create time clean cleanall
58
59 check: clean report
60
61 report: $(GROUP_REPORT_FILE)
62         @$(CAT) $^
63
64 $(GROUP_REPORT_FILE): $(GROUP_LOG_FILE)
65         @$(call group_report,$(GROUP),$^,$@)
66
67 $(GROUP_LOG_FILE): $(TEST_LOG_FILES)
68         @$(call group_log,$^,$@)
69
70 $(TEST_LOG_FILES):
71         @$(MAKE) check -sC $(call dir,$@)
72
73 create:
74         @$(call create_testdir,$(TEST))
75         @$(call create_testmkfile,$(TEST)/$(MAKEFILE))
76
77 time: cleantime time_report
78
79 time_report: $(GROUP_TIME_FILE)
80         @$(CAT) $^
81
82 $(GROUP_TIME_FILE): $(TEST_TIME_FILES)
83         @$(call group_log,$^,$@)
84
85 $(TEST_TIME_FILES):
86         @$(MAKE) time -sC $(call dir,$@)
87
88 cleantime:
89         @$(call make_tests,$(TESTS),$@)
90         @$(RM) $(GROUP_TIME_FILE)
91
92 clean:
93         @$(call make_tests,$(TESTS),$@)
94         @$(RM) $(GROUP_REPORT_FILE) $(GROUP_LOG_FILE)