テスト(Autotest.mk)実行方法の変更
[YACASL2.git] / test / template / Define.mk
1 # autotest.mk > test_template > Define.mk
2 # 自動テスト用の変数、マクロ定義
3
4 ifndef DEFINE_INCLUDED
5 DEFINE_INCLUDED = 1
6
7 # 現在の日時
8 DATE = $(shell date +"%F %T")
9
10 # Makefile
11 MAKEFILE := Makefile
12
13 ######################################################################
14 # コマンド
15 ######################################################################
16
17 CAT := cat
18 CHMOD := chmod
19 CP := cp
20 DEV_NULL := /dev/null
21 DIFF := diff -c
22 ECHO := echo
23 EXPR := expr
24 FIND := find
25 GREP := grep
26 LINECOUNT := wc -l
27 LN := ln -s
28 MKDIR := mkdir -p
29 MV := mv
30 SED := sed
31 TIME := time
32 TR := tr
33
34 ######################################################################
35 # テストグループとテストでの共通マクロ
36 ######################################################################
37
38 # chk_var_null: 引数がNULLの場合、エラー
39 # 用例: $(call chk_var_null,var)
40 define chk_var_null
41     $(if $1,,$(error NULL argument))
42 endef
43
44 # chk_file_ext: 指定されたファイルが実在する場合、エラー
45 # 用例: $(call chk_file_ext,file)
46 define chk_file_ext
47     $(if $(wildcard $1),$(error $1 exists in $(CURDIR)))
48 endef
49
50 # 指定したディレクトリーを作成
51 # 引数は、ディレクトリー名
52 # 用例: $(call create_dir,name)
53 define create_dir
54     $(call chk_var_null,$1)
55     $(call chk_file_ext,$1)
56     $(MKDIR) $1
57 endef
58
59 # テストディレクトリーのMakefileを作成
60 # 引数は、Makefile名、依存ファイル群
61 # 用例: $(call create_makefile,file,list_include_file)
62 define create_makefile
63     $(RM) $1
64     $(foreach infile,$2,$(ECHO) "include ../$(infile)" >>$1; )
65     $(if $(filter $(SRC),c),$(call puts_cmd_c,$1))
66 endef
67
68 # C言語の関数をテストするための設定を、指定されたファイルに出力
69 # 引数は、ファイル名
70 # 用例: $(call puts_cmd_c,file)
71 define puts_cmd_c
72     $(ECHO) >>$1
73     $(ECHO) "CC := gcc" >>$1
74     $(ECHO) "CFLAGS := -Wall" >>$1
75     $(ECHO) >>$1
76     $(ECHO) ".INTERMEDIATE:" "$$""(CMD_FILE)" >>$1
77     $(ECHO) >>$1
78     $(ECHO) "CMDSRC_FILE := cmd.c" >>$1
79     $(ECHO) "TESTTARGET_FILES :=       # Set test target files" >>$1
80     $(ECHO) >>$1
81     $(ECHO) "$$""(CMD_FILE):" "$$""(CMDSRC_FILE)" "$$""(TESTTARGET_FILES)" >>$1
82     $(ECHO) "   ""$$""(CC)" "$$""(CFLAGS)" "-o" "$$""@" "$$""^" >>$1
83 endef
84
85 ######################################################################
86 # テストグループのディレクトリー
87 ######################################################################
88
89 # テストグループとテストの変数を定義したMakefile
90 DEFINE_FILE := Define.mk
91
92 # テストのターゲットを定義したMakefile
93 TEST_MAKEFILE := Test.mk
94
95 # すべてのMakefile群
96 MAKEFILES := $(DEFINE_FILE) $(TEST_MAKEFILE)
97
98 # すべてのMakefile群の絶対パス
99 MAKEFILES_ABS := $(foreach file,$(MAKEFILES),$(CURDIR)/$(file))
100
101 ######################################################################
102 # テストのディレクトリー
103 ######################################################################
104
105 # テストコマンドファイル
106 CMD_FILE := cmd
107
108 # テスト説明ファイル
109 DESC_FILE := desc.txt
110
111 # テスト想定ファイル
112 TEST0_FILE := 0.txt
113
114 # テスト結果ファイル
115 TEST1_FILE := 1.txt
116
117 # テストの、想定結果と結果の差分ファイル
118 DIFF_FILE := diff.log
119
120 # テストエラーファイル
121 ERR_FILE := err.log
122
123 # テストログファイル
124 LOG_FILE := summary.log
125
126 # 実行時間ファイル
127 TIME_FILE := time.log
128
129 # テスト詳細レポートファイル
130 DETAIL_FILE := detail.log
131
132 # テストの結果として作成されるファイル群
133 TEST_RES_FILES := $(TEST1_FILE) $(DIFF_FILE) $(ERR_FILE) $(LOG_FILE) $(DETAIL_FILE) $(TIME_FILE)
134
135 endif