From 9927edbc8aa5f1add65502eca27401d5d5d098f2 Mon Sep 17 00:00:00 2001 From: j8takagi Date: Sat, 5 Mar 2011 12:47:56 +0900 Subject: [PATCH] =?utf8?q?=E3=83=A6=E3=83=8B=E3=83=83=E3=83=88=E3=83=86?= =?utf8?q?=E3=82=B9=E3=83=88=E3=82=92=E3=81=AB=E3=80=81=E6=9C=80=E6=96=B0?= =?utf8?q?=E3=81=AEAutotest.mk=E3=82=92=E5=8F=8D=E6=98=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- test/unit/Define.mk | 58 +++++++++++++----- test/unit/Define_group.mk | 96 ------------------------------ test/unit/Define_test.mk | 77 ------------------------ test/unit/Makefile | 84 +++++++++++++++++++++++++- test/unit/Test.mk | 105 +++++++++++++++++++++++++++++---- test/unit/addcerrlist/Makefile | 17 +++--- test/unit/getcmdcode/Makefile | 16 +++-- test/unit/getcmdtype/Makefile | 16 +++-- test/unit/getgr/Makefile | 16 +++-- test/unit/hash/Makefile | 16 +++-- test/unit/linetok/Makefile | 16 +++-- test/unit/linetok/cmd.c | 1 + test/unit/nh2word/Makefile | 16 +++-- test/unit/nh2word/cmd.c | 2 +- test/unit/opdtok/Makefile | 17 +++--- test/unit/opdtok/cmd.c | 1 + test/unit/setcerr/Makefile | 16 +++-- 17 files changed, 313 insertions(+), 257 deletions(-) delete mode 100644 test/unit/Define_group.mk delete mode 100644 test/unit/Define_test.mk diff --git a/test/unit/Define.mk b/test/unit/Define.mk index 92e3b8e..ff5b4b0 100644 --- a/test/unit/Define.mk +++ b/test/unit/Define.mk @@ -47,6 +47,8 @@ EXPR ?= expr LN ?= ln -s +SED ?= sed + ###################################################################### # テストグループとテストでの共通マクロ ###################################################################### @@ -63,31 +65,57 @@ define chk_file_ext $(if $(wildcard $1),$(error $1 exists in $(CURRDIR))) endef +# 指定したディレクトリーを作成 +# 引数は、ディレクトリー名 +# 用例: $(call create_dir,name) +define create_dir + $(call chk_var_null,$1) + $(call chk_file_ext,$1) + $(MKDIR) $1 +endef + +# テストディレクトリーのMakefileを作成 +# 引数は、Makefile名、依存ファイル群 +# 用例: $(call create_makefile,file,list_include_file) +define create_makefile + $(RM) $1 + $(foreach infile,$2,$(ECHO) "include ../$(infile)" >>$1; ) + $(if $(filter $(SRC),c),$(call puts_cmd_c,$1)) +endef + +# C言語の関数をテストするための設定を、指定されたファイルに出力 +# 引数は、ファイル名 +# 用例: $(call puts_cmd_c,file) +define puts_cmd_c + $(ECHO) >>$1 + $(ECHO) "CC := gcc" >>$1 + $(ECHO) "CFLAGS := -Wall" >>$1 + $(ECHO) >>$1 + $(ECHO) ".INTERMEDIATE:" "$$""(CMD_FILE)" >>$1 + $(ECHO) >>$1 + $(ECHO) "CMDSRC_FILE := cmd.c" >>$1 + $(ECHO) "TESTTARGET_FILES := # Set test target files" >>$1 + $(ECHO) >>$1 + $(ECHO) "$$""(CMD_FILE):" "$$""(CMDSRC_FILE)" "$$""(TESTTARGET_FILES)" >>$1 + $(ECHO) " ""$$""(CC)" "$$""(CFLAGS)" "-o" "$$""@" "$$""^" >>$1 +endef + ###################################################################### # テストグループのディレクトリー ###################################################################### # テストグループとテストの変数を定義したMakefile -DEF_FILE := Define.mk - -# テストグループの変数を定義したMakefile -DEF_GROUP_FILE := Define_group.mk - -# テストの変数を定義したMakefile -DEF_TEST_FILE := Define_test.mk +DEFINE_FILE := Define.mk # テストのターゲットを定義したMakefile TEST_MAKEFILE := Test.mk # すべてのMakefile群 -MAKEFILES := $(DEF_FILE) $(DEF_GROUP_FILE) $(DEF_TEST_FILE) $(TEST_MAKEFILE) +MAKEFILES := $(DEFINE_FILE) $(TEST_MAKEFILE) # すべてのMakefile群の絶対パス MAKEFILES_ABS := $(foreach file,$(MAKEFILES),$(CURRDIR)/$(file)) -# テストごとのMakefileでインクルードするMakefile群 -TEST_MAKEFILES := $(DEF_FILE) $(DEF_TEST_FILE) $(TEST_MAKEFILE) - ###################################################################### # テストのディレクトリー ###################################################################### @@ -98,20 +126,20 @@ CMD_FILE := cmd # テスト説明ファイル DESC_FILE := desc.txt -# テスト想定結果ファイル +# テスト想定ファイル TEST0_FILE := 0.txt # テスト結果ファイル TEST1_FILE := 1.txt # テストの、想定結果と結果の差分ファイル -DIFF_FILE := diff.txt +DIFF_FILE := diff.log # テストエラーファイル -ERR_FILE := err.txt +ERR_FILE := err.log # テストログファイル -LOG_FILE := test.log +LOG_FILE := summary.log # 実行時間ファイル TIME_FILE := time.log diff --git a/test/unit/Define_group.mk b/test/unit/Define_group.mk deleted file mode 100644 index a572469..0000000 --- a/test/unit/Define_group.mk +++ /dev/null @@ -1,96 +0,0 @@ -###################################################################### -# テストグループのディレクトリー -# ほかに、Define.mkでも一部定義 -###################################################################### - -# グループディレクトリー -GROUP_DIR := $(CURRDIR) - -# グループ名。ディレクトリ名から取得 -GROUP := $(notdir $(GROUP_DIR)) - -# テスト名。カレントディレクトリー内の、名前が大文字または.以外で始まるディレクトリー -TESTS = $(notdir $(shell $(FIND) -maxdepth 1 -name "[^A-Z.]*" -type d)) - -# テストグループログファイル -GROUP_LOG_FILE := $(shell $(ECHO) $(GROUP) | $(TR) '[a-z]' '[A-Z]').log - -# テストグループレポートファイル -GROUP_REPORT_FILE := Report.log - -# テストグループ実行時間ファイル -GROUP_TIME_FILE := $(shell echo $(GROUP) | $(TR) '[a-z]' '[A-Z]')_time.log - -# グループで、テスト結果として作成されるファイル群 -GROUP_RES_FILES := $(GROUP_LOG_FILE) $(GROUP_REPORT_FILE) $(GROUP_TIME_FILE) - -# テストごとのログファイル -TEST_LOG_FILES := $(foreach test,$(TESTS),$(test)/$(LOG_FILE)) - -###################################################################### -# テストグループのマクロ -###################################################################### - -# 指定したディレクトリーを作成 -# 用例: $(call create_dir,name) -define create_dir - $(call chk_var_null,$1) - $(call chk_file_ext,$1) - $(MKDIR) $1 -endef - -# リストで指定された親ディレクトリーにあるMakefileをインクルードするMakefileを作成 -# 用例: $(call create_makefile,file,list_include_file) -define create_makefile - $(RM) $1 - $(foreach infile,$2,$(ECHO) "include ../$(infile)" >>$1; ) -endef - -# テストごとのファイルをグループファイルに出力 -# 引数は、テストのリスト、グループファイル、テストファイル -# 用例: $(call group_log,files_test_log,file_group_log) -define group_log - $(foreach target,$1,$(call group_log_each,$(target),$2)) -endef - -# テストのログファイルをグループログファイルに出力。引数は、テスト、グループログファイル -# 用例: $(call group_log_each,file_test_log,file_group_log) -define group_log_each - $(ECHO) $(dir $1) >>$2; - if test -s $1; then $(CAT) $1 >>$2; else $(ECHO) $(dir $1)": no log" >>$2; fi - $(ECHO) >>$2; - -endef - -# 成功したテストの数。テストグループログファイルから取得 -SUCCESS_TEST = $(shell $(GREP) "^[^A-Z.].*: Test Success" $(GROUP_LOG_FILE) | $(LINECOUNT)) - -# 失敗したテストの数。テストグループログファイルから取得 -FAIL_TEST = $(shell $(GREP) "^[^A-Z.].*: Test Failure" $(GROUP_LOG_FILE) | $(LINECOUNT)) - -# すべてのテストの数 -ALL_TEST = $(shell $(EXPR) $(SUCCESS_TEST) + $(FAIL_TEST)) - -# テストごとの実行時間ファイル -TEST_TIME_FILES := $(foreach test,$(TESTS),$(test)/$(TIME_FILE)) - -# テストの結果を、グループログファイルを元にレポート。 -# 引数は、グループ名、グループログファイル、グループレポートファイル -# 用例: $(call group_report,name,file_log,file_report) -define group_report - $(ECHO) "$1: $(SUCCESS_TEST) / $(ALL_TEST) tests passed. Detail in $(GROUP_DIR)/$2" >$3; - if test $(FAIL_TEST) -eq 0; then $(ECHO) "$1: All tests are succeded." >>$3; fi -endef - -# リストで指定したディレクトリーでmakeを実行 -# 用例: $(call make_tests,list_dir,target) -define make_tests - $(foreach dir,$1,$(call make_test_each,$(dir),$2)) -endef - -# 指定したディレクトリーでmakeを実行 -# 用例: $(call make_test_each,tests,target) -define make_test_each - $(MAKE) $2 -sC $1; - -endef diff --git a/test/unit/Define_test.mk b/test/unit/Define_test.mk deleted file mode 100644 index c3508ca..0000000 --- a/test/unit/Define_test.mk +++ /dev/null @@ -1,77 +0,0 @@ -###################################################################### -# マクロ -###################################################################### - -# 引数のファイルをチェックし、内容がない場合は削除 -# 用例: $(call rm_null,file) -define rm_null - if test ! -s $1; then $(RM) $1; fi -endef - -# 説明ファイルの内容を、引数のファイルに出力 -# 用例: $(call desc_log,file_out) -define desc_log - if test -s $(DESC_FILE); then $(CAT) $(DESC_FILE) >>$1; fi -endef - -# テスト実行の経過時間を、ファイルに出力して表示 -# 引数は、テスト名、コマンドファイル、出力ファイル -# 用例: $(call time_cmd,file_cmd,file_out) -define time_cmd - if test ! -x $1; then $(CHMOD) u+x $1; fi - ($(TIME) ./$1 1>$(DEV_NULL) 2>$(DEV_NULL)) 2>&1 | $(GREP) '^real' >$2 -endef - -# テスト実行コマンド。引数は、コマンドファイル、出力ファイル、エラーファイル -# コマンドファイルを実行し、標準出力を出力ファイルに保存。 -# エラー発生時は、エラー出力を出力ファイルとエラーファイルに保存。 -# 用例: $(call exec_cmd,file_cmd,file_out,file_err) -define exec_cmd - if test ! -x $1; then $(CHMOD) u+x $1; fi - ./$1 >>$2 2>$3 - if test -s $3; then $(CAT) $3 >>$2; fi - $(call rm_null,$3) -endef - -# 2つのファイルを比較し、差分ファイルを作成 -# 引数は、2ファイルのリスト、差分ファイル -# 用例: $(call diff_files,files,file_out) -define diff_files - $(DIFF) $1 >$2 2>&1 - $(call rm_null,$2) -endef - -# 差分ファイルの内容をログファイルに出力 -# 引数は、テスト名、差分ファイル、ログファイル -# 用例: $(call test_log,name,file_diff,file_log) -define test_log - $(call desc_log,$3) - if test ! -s $2; then RES=Success; else RES=Failure; fi; $(ECHO) "$1: Test $$RES $(DATE)" >>$3 - $(ECHO) "Detail in $(CURRDIR)/$(DETAIL_FILE)" >>$3 -endef - -# NODISPが設定されていない時は、ログファイルを表示 -# 引数は、ログファイル -# 用例: $(call disp_test_log,file_log) -define disp_test_log - $(if $(NODISP),,$(CAT) $1) -endef - -# ファイル群から、ファイル名とファイルの内容を出力 -# 引数は、対象ファイル群、出力ファイル -# 用例: $(call report_files,list_file_target,file_out) -define report_files - $(foreach tfile,$1,$(call report_file,$(tfile),$2)) -endef - -# ファイル名とファイルの内容を出力 -# 引数は、対象ファイル、出力ファイル -# 用例: $(call report_file,file_target,file_out) -define report_file - $(call chk_var_null,$1) - if test -s $1; then $(ECHO) "== $1 ==" >>$2; $(call echo_hr,$2); cat $1 >>$2; $(call echo_hr,$2); $(ECHO) >>$2; fi -endef - -define echo_hr - $(ECHO) "----------------------------------------------------------------------" >>$1 -endef diff --git a/test/unit/Makefile b/test/unit/Makefile index 6be7c11..01d5a27 100644 --- a/test/unit/Makefile +++ b/test/unit/Makefile @@ -13,7 +13,87 @@ SHELL = /bin/sh include Define.mk -include Define_group.mk + +###################################################################### +# テストグループのディレクトリー +###################################################################### + +# グループディレクトリー +GROUP_DIR := $(CURRDIR) + +# グループ名。ディレクトリ名から取得 +GROUP := $(notdir $(GROUP_DIR)) + +# テスト名。カレントディレクトリー内の、名前が大文字または.以外で始まるディレクトリー +TESTS = $(notdir $(shell $(FIND) -maxdepth 1 -name "[^A-Z.]*" -type d)) + +# テストグループログファイル +GROUP_LOG_FILE := $(shell $(ECHO) $(GROUP) | $(TR) '[a-z]' '[A-Z]').log + +# テストグループレポートファイル +GROUP_REPORT_FILE := Summary.log + +# テストグループ実行時間ファイル +GROUP_TIME_FILE := $(shell echo $(GROUP) | $(TR) '[a-z]' '[A-Z]')_time.log + +# グループで、テスト結果として作成されるファイル群 +GROUP_RES_FILES := $(GROUP_LOG_FILE) $(GROUP_REPORT_FILE) $(GROUP_TIME_FILE) + +# テストごとのログファイル +TEST_LOG_FILES := $(foreach test,$(TESTS),$(test)/$(LOG_FILE)) + +###################################################################### +# テストグループのマクロ +###################################################################### + +# テストごとのファイルをグループファイルに出力 +# 引数は、テストのリスト、グループファイル、テストファイル +# 用例: $(call group_log,files_test_log,file_group_log) +define group_log + $(foreach target,$1,$(call group_log_each,$(target),$2)) +endef + +# テストのログファイルをグループログファイルに出力。引数は、テスト、グループログファイル +# 用例: $(call group_log_each,file_test_log,file_group_log) +define group_log_each + $(ECHO) $(dir $1) >>$2; + if test -s $1; then $(CAT) $1 >>$2; else $(ECHO) $(dir $1)": no log" >>$2; fi + $(ECHO) >>$2; + +endef + +# 成功したテストの数。テストグループログファイルから取得 +SUCCESS_TEST = $(shell $(GREP) "^[^A-Z.].*: Test Success" $(GROUP_LOG_FILE) | $(LINECOUNT)) + +# 失敗したテストの数。テストグループログファイルから取得 +FAIL_TEST = $(shell $(GREP) "^[^A-Z.].*: Test Failure" $(GROUP_LOG_FILE) | $(LINECOUNT)) + +# すべてのテストの数 +ALL_TEST = $(shell $(EXPR) $(SUCCESS_TEST) + $(FAIL_TEST)) + +# テストごとの実行時間ファイル +TEST_TIME_FILES := $(foreach test,$(TESTS),$(test)/$(TIME_FILE)) + +# テストの結果を、グループログファイルを元にレポート。 +# 引数は、グループ名、グループログファイル、グループレポートファイル +# 用例: $(call group_report,name,file_log,file_report) +define group_report + $(ECHO) "$1: $(SUCCESS_TEST) / $(ALL_TEST) tests passed. Details in $(GROUP_DIR)/$2" >$3; + if test $(FAIL_TEST) -eq 0; then $(ECHO) "$1: All tests are succeded." >>$3; fi +endef + +# リストで指定したディレクトリーでmakeを実行 +# 用例: $(call make_tests,list_dir,target) +define make_tests + $(foreach dir,$1,$(call make_test_each,$(dir),$2)) +endef + +# 指定したディレクトリーでmakeを実行 +# 用例: $(call make_test_each,tests,target) +define make_test_each + $(MAKE) $2 -sC $1; + +endef .PHONY: check checkall time create clean cleantime @@ -25,7 +105,7 @@ time: cleantime $(GROUP_TIME_FILE) create: @$(call create_dir,$(TEST)) - @$(call create_makefile,$(TEST)/$(MAKEFILE),$(TEST_MAKEFILES)) + @$(call create_makefile,$(TEST)/$(MAKEFILE),$(MAKEFILES)) clean: @$(call make_tests,$(TESTS),$@) diff --git a/test/unit/Test.mk b/test/unit/Test.mk index ada87ae..ac0fbb7 100644 --- a/test/unit/Test.mk +++ b/test/unit/Test.mk @@ -12,16 +12,97 @@ # make cleantime: "make time" で作成されたファイルをクリア # make clean : "make" で作成されたファイルをクリア # make cleanall: "make" と "make set" で作成されたファイルをクリア - SHELL = /bin/bash +###################################################################### +# マクロ +###################################################################### + +# 指定されたファイルをチェックし、空の場合は削除 +# 引数は、対象ファイル +# 用例: $(call rm_null,file_target) +define rm_null + if test ! -s $1; then $(RM) $1; fi +endef + +# 説明ファイルの内容を、指定されたファイルに出力 +# 引数は、出力ファイル +# 用例: $(call desc_log,file_out) +define desc_log + if test -s $(DESC_FILE); then $(CAT) $(DESC_FILE) >>$1; fi +endef + +# テスト実行の経過時間を、指定されたファイルに出力して表示 +# 引数は、テスト名、コマンドファイル、出力ファイル +# 用例: $(call time_cmd,file_cmd,file_out) +define time_cmd + if test ! -x $1; then $(CHMOD) u+x $1; fi + ($(TIME) ./$1 1>$(DEV_NULL) 2>$(DEV_NULL)) 2>&1 | $(GREP) '^real' >$2 +endef + +# テスト実行コマンド。 +# コマンドファイルを実行し、標準出力を指定されたファイルに保存。 +# エラー発生時は、エラー出力を出力ファイルとエラーファイルに保存。 +# 引数は、コマンドファイル、出力ファイル、エラーファイル +# 用例: $(call exec_cmd,file_cmd,file_out,file_err) +define exec_cmd + if test ! -x $1; then $(CHMOD) u+x $1; fi + ./$1 >>$2 2>$3 + if test -s $3; then $(CAT) $3 >>$2; fi + $(CP) $2 $2.tmp && $(SED) -e "s%$(CURRDIR)%\$$PWD%g" $2.tmp >$2 && $(RM) $2.tmp + $(call rm_null,$3) +endef + +# 2つのファイルを比較し、差分ファイルを作成 +# 引数は、2ファイルのリスト、差分ファイル +# 用例: $(call diff_files,files,file_out) +define diff_files + $(DIFF) $1 >$2 2>&1 + $(call rm_null,$2) +endef + +# 差分ファイルの内容をログファイルに出力 +# 引数は、テスト名、差分ファイル、ログファイル +# 用例: $(call test_log,name,file_diff,file_log) +define test_log + $(call desc_log,$3) + if test ! -s $2; then RES=Success; else RES=Failure; fi; $(ECHO) "$1: Test $$RES $(DATE)" >>$3 + $(ECHO) "Details in $(CURRDIR)/$(DETAIL_FILE)" >>$3 +endef + +# NODISPが設定されていない時は、ログファイルを表示 +# 引数は、ログファイル +# 用例: $(call disp_test_log,file_log) +define disp_test_log + $(if $(NODISP),,$(CAT) $1) +endef + +# ファイル群から、ファイル名とファイルの内容を指定されたファイルに出力 +# 引数は、対象ファイル群、出力ファイル +# 用例: $(call report_files,list_file_target,file_out) +define report_files + $(foreach tfile,$1,$(call report_file,$(tfile),$2)) +endef + +# ファイル名とファイルの内容を指定されたファイルに出力 +# 引数は、対象ファイル、出力ファイル +# 用例: $(call report_file,file_target,file_out) +define report_file + $(call chk_var_null,$1) + if test -s $1; then $(ECHO) "== $1 ==" >>$2; $(call echo_hr,$2); cat $1 >>$2; $(call echo_hr,$2); $(ECHO) >>$2; fi +endef + +define echo_hr + $(ECHO) "----------------------------------------------------------------------" >>$1 +endef + # テスト名。カレントディレクトリー名から取得 TEST = $(notdir $(CURRDIR)) # コマンドファイルのソース -CMDSRC_FILE = $(CMD_FILE).c +CMDSRC_FILE ?= $(CMD_FILE) -.PHONY: check set reset time cleantime clean cleanall +.PHONY: check set reset clean cleanall time cleantime check: clean $(DETAIL_FILE) @$(call disp_test_log,$(LOG_FILE)) @@ -31,15 +112,13 @@ checkall: clean $(DETAIL_FILE) $(TIME_FILE) @$(call disp_test_log,$(LOG_FILE)) set: $(CMD_FILE) + @$(call chk_file_ext,$(TEST0_FILE)) @-$(call exec_cmd,$(CMD_FILE),$(TEST0_FILE),$(ERR_FILE)) @$(CAT) $(TEST0_FILE) -reset: cleanall set - -time: cleantime $(TIME_FILE) - -cleantime: - @$(RM) $(TIME_FILE) +reset: cleanall $(CMD_FILE) + @-$(call exec_cmd,$(CMD_FILE),$(TEST0_FILE),$(ERR_FILE)) + @$(CAT) $(TEST0_FILE) clean: @$(RM) $(TEST_RES_FILES) @@ -47,6 +126,12 @@ clean: cleanall: clean @$(RM) $(TEST0_FILE) +time: cleantime $(TIME_FILE) + @$(CAT) $(TIME_FILE) + +cleantime: + @$(RM) $(TIME_FILE) + $(TEST1_FILE): $(CMD_FILE) @-$(call exec_cmd,$^,$@,$(ERR_FILE)) @@ -60,4 +145,4 @@ $(DETAIL_FILE): $(LOG_FILE) @$(call report_files,$(LOG_FILE) $(CMDSRC_FILE) $(TEST0_FILE) $(ERR_FILE) $(DIFF_FILE) $(TEST1_FILE),$@) $(TIME_FILE): $(CMD_FILE) - $(call time_cmd,$^,$@) + @$(call time_cmd,$^,$@) diff --git a/test/unit/addcerrlist/Makefile b/test/unit/addcerrlist/Makefile index 809cd7b..b2087fb 100644 --- a/test/unit/addcerrlist/Makefile +++ b/test/unit/addcerrlist/Makefile @@ -1,12 +1,15 @@ include ../Define.mk -include ../Define_test.mk include ../Test.mk -SRCDIR = ../../../src -SRCFILES = $(SRCDIR)/cmem.c $(SRCDIR)/cerr.c cmd.c +CC := gcc +CFLAGS := -Wall -.INTERMEDIATE: cmd +.INTERMEDIATE: $(CMD_FILE) -cmd: cmd.c $(SRCFILES) - gcc -g -Wall -I ../../../include -o $@ $^ - rm -rf cmd.dSYM +CMDSRC_FILE := cmd.c +TARGETDIR := ../../../src +INCLUDEDIR := ../../../include +TESTTARGET_FILES := $(TARGETDIR)/cmem.c $(TARGETDIR)/cerr.c # Set test target files + +$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES) + $(CC) $(CFLAGS) -I $(INCLUDEDIR) -o $@ $^ diff --git a/test/unit/getcmdcode/Makefile b/test/unit/getcmdcode/Makefile index a8df80c..c60bfe7 100644 --- a/test/unit/getcmdcode/Makefile +++ b/test/unit/getcmdcode/Makefile @@ -1,11 +1,15 @@ include ../Define.mk -include ../Define_test.mk include ../Test.mk -.INTERMEDIATE: cmd +CC := gcc +CFLAGS := -Wall -SRCDIR = ../../../src -SRCFILES = $(SRCDIR)/hash.c $(SRCDIR)/cmd.c $(SRCDIR)/cmem.c $(SRCDIR)/cerr.c +.INTERMEDIATE: $(CMD_FILE) -cmd: cmd.c $(SRCFILES) - gcc -g -Wall -I ../../../include -o $@ $^ +CMDSRC_FILE := cmd.c +TARGETDIR := ../../../src +INCLUDEDIR := ../../../include +TESTTARGET_FILES := $(TARGETDIR)/hash.c $(TARGETDIR)/cmd.c $(TARGETDIR)/cmem.c $(TARGETDIR)/cerr.c # Set test target files + +$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES) + $(CC) $(CFLAGS) -I $(INCLUDEDIR) -o $@ $^ diff --git a/test/unit/getcmdtype/Makefile b/test/unit/getcmdtype/Makefile index 9329b17..ffbaa13 100644 --- a/test/unit/getcmdtype/Makefile +++ b/test/unit/getcmdtype/Makefile @@ -1,11 +1,15 @@ include ../Define.mk -include ../Define_test.mk include ../Test.mk -.INTERMEDIATE: cmd +CC := gcc +CFLAGS := -Wall -SRCDIR = ../../../src -SRCFILES = $(SRCDIR)/hash.c $(SRCDIR)/cmem.c $(SRCDIR)/cerr.c $(SRCDIR)/cmd.c +.INTERMEDIATE: $(CMD_FILE) -cmd: cmd.c $(SRCFILES) - gcc -g -Wall -I ../../../include -o $@ $^ +CMDSRC_FILE := cmd.c +TARGETDIR := ../../../src +INCLUDEDIR := ../../../include +TESTTARGET_FILES := $(TARGETDIR)/hash.c $(TARGETDIR)/cmem.c $(TARGETDIR)/cerr.c $(TARGETDIR)/cmd.c # Set test target files + +$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES) + $(CC) $(CFLAGS) -I $(INCLUDEDIR) -o $@ $^ diff --git a/test/unit/getgr/Makefile b/test/unit/getgr/Makefile index 1e7d9a2..04c59d6 100644 --- a/test/unit/getgr/Makefile +++ b/test/unit/getgr/Makefile @@ -1,11 +1,15 @@ include ../Define.mk -include ../Define_test.mk include ../Test.mk -.INTERMEDIATE: cmd +CC := gcc +CFLAGS := -Wall -SRCDIR = ../../../src -SRCFILES = $(SRCDIR)/hash.c $(SRCDIR)/cmem.c $(SRCDIR)/cerr.c $(SRCDIR)/cmd.c $(SRCDIR)/assemble.c $(SRCDIR)/word.c $(SRCDIR)/label.c $(SRCDIR)/struct.c $(SRCDIR)/token.c +.INTERMEDIATE: $(CMD_FILE) -cmd: cmd.c $(SRCFILES) - gcc -g -Wall -I ../../../include -o $@ $^ +CMDSRC_FILE := cmd.c +TARGETDIR := ../../../src +INCLUDEDIR := ../../../include +TESTTARGET_FILES := $(TARGETDIR)/hash.c $(TARGETDIR)/cmem.c $(TARGETDIR)/cerr.c $(TARGETDIR)/cmd.c $(TARGETDIR)/assemble.c $(TARGETDIR)/word.c $(TARGETDIR)/label.c $(TARGETDIR)/struct.c $(TARGETDIR)/token.c # Set test target files + +$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES) + $(CC) $(CFLAGS) -I $(INCLUDEDIR) -o $@ $^ diff --git a/test/unit/hash/Makefile b/test/unit/hash/Makefile index 1c59dcd..864a279 100644 --- a/test/unit/hash/Makefile +++ b/test/unit/hash/Makefile @@ -1,12 +1,16 @@ include ../Define.mk -include ../Define_test.mk include ../Test.mk -.INTERMEDIATE: cmd +CC := gcc +CFLAGS := -g -Wall -SRCDIR = ../../../src -SRCFILES = $(SRCDIR)/hash.c $(SRCDIR)/cmem.c $(SRCDIR)/cerr.c +.INTERMEDIATE: $(CMD_FILE) -cmd: cmd.c $(SRCFILES) - gcc -g -Wall -I ../../../include -o $@ $^ +CMDSRC_FILE := cmd.c +TARGETDIR := ../../../src +INCLUDEDIR := ../../../include +TESTTARGET_FILES := $(TARGETDIR)/hash.c $(TARGETDIR)/cmem.c $(TARGETDIR)/cerr.c # Set test target files + +$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES) + $(CC) $(CFLAGS) -I $(INCLUDEDIR) -o $@ $^ @rm -rf cmd.dSYM diff --git a/test/unit/linetok/Makefile b/test/unit/linetok/Makefile index eff49e8..4606383 100644 --- a/test/unit/linetok/Makefile +++ b/test/unit/linetok/Makefile @@ -1,12 +1,16 @@ include ../Define.mk -include ../Define_test.mk include ../Test.mk -.INTERMEDIATE: cmd +CC := gcc +CFLAGS := -g -Wall -SRCDIR = ../../../src -SRCFILES = $(SRCDIR)/cmem.c $(SRCDIR)/cerr.c $(SRCDIR)/cmd.c $(SRCDIR)/word.c $(SRCDIR)/struct.c $(SRCDIR)/token.c $(SRCDIR)/hash.c +.INTERMEDIATE: $(CMD_FILE) -cmd: cmd.c $(SRCFILES) - gcc -g -Wall -I ../../../include -o $@ $^ +CMDSRC_FILE := cmd.c +TARGETDIR := ../../../src +INCLUDEDIR := ../../../include +TESTTARGET_FILES := $(TARGETDIR)/cmem.c $(TARGETDIR)/cerr.c $(TARGETDIR)/cmd.c $(TARGETDIR)/word.c $(TARGETDIR)/struct.c $(TARGETDIR)/token.c $(TARGETDIR)/hash.c # Set test target files + +$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES) + $(CC) $(CFLAGS) -I $(INCLUDEDIR) -o $@ $^ @rm -rf cmd.dSYM diff --git a/test/unit/linetok/cmd.c b/test/unit/linetok/cmd.c index cec26fc..854f565 100644 --- a/test/unit/linetok/cmd.c +++ b/test/unit/linetok/cmd.c @@ -21,6 +21,7 @@ int main(){ CMDLINE *testcl = malloc(sizeof(CMDLINE)); cerr_init(); /* エラーの初期化 */ + addcerrlist_tok(); for(i = 0; i < sizeof testline /sizeof testline[0]; i++) { printf("%d: %s", i, testline[i]); testcl = linetok(testline[i]); diff --git a/test/unit/nh2word/Makefile b/test/unit/nh2word/Makefile index f7dabb5..e57e812 100644 --- a/test/unit/nh2word/Makefile +++ b/test/unit/nh2word/Makefile @@ -1,11 +1,15 @@ include ../Define.mk -include ../Define_test.mk include ../Test.mk -.INTERMEDIATE: cmd +CC := gcc +CFLAGS := -Wall -SRCDIR = ../../../src -SRCFILES = cmd.c $(SRCDIR)/cmem.c $(SRCDIR)/cerr.c $(SRCDIR)/word.c +.INTERMEDIATE: $(CMD_FILE) -cmd: cmd.c $(SRCFILES) - gcc -g -Wall -I ../../../include -o $@ $^ +CMDSRC_FILE := cmd.c +TARGETDIR := ../../../src +INCLUDEDIR := ../../../include +TESTTARGET_FILES := cmd.c $(TARGETDIR)/cmem.c $(TARGETDIR)/cerr.c $(TARGETDIR)/word.c # Set test target files + +$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES) + $(CC) $(CFLAGS) -I $(INCLUDEDIR) -o $@ $^ diff --git a/test/unit/nh2word/cmd.c b/test/unit/nh2word/cmd.c index 06d68e5..16ee294 100644 --- a/test/unit/nh2word/cmd.c +++ b/test/unit/nh2word/cmd.c @@ -1,6 +1,5 @@ #include #include "assemble.h" -#include "test_h2word.h" #include "cerr.h" #include "word.h" @@ -14,6 +13,7 @@ int main(){ }; cerr_init(); /* エラーの初期化 */ + addcerrlist_word(); for(i = 0; i < sizeof(str)/sizeof(str[0]); i++) { cerr->num = 0; r = nh2word(str[i]); diff --git a/test/unit/opdtok/Makefile b/test/unit/opdtok/Makefile index 754591e..04c59d6 100644 --- a/test/unit/opdtok/Makefile +++ b/test/unit/opdtok/Makefile @@ -1,12 +1,15 @@ include ../Define.mk -include ../Define_test.mk include ../Test.mk -.INTERMEDIATE: cmd +CC := gcc +CFLAGS := -Wall -SRCDIR = ../../../src -SRCFILES = $(SRCDIR)/hash.c $(SRCDIR)/cmem.c $(SRCDIR)/cerr.c $(SRCDIR)/cmd.c $(SRCDIR)/assemble.c $(SRCDIR)/word.c $(SRCDIR)/label.c $(SRCDIR)/struct.c $(SRCDIR)/token.c +.INTERMEDIATE: $(CMD_FILE) -cmd: cmd.c $(SRCFILES) - gcc -g -Wall -I ../../../include -o $@ $^ - @rm -rf cmd.dSYM +CMDSRC_FILE := cmd.c +TARGETDIR := ../../../src +INCLUDEDIR := ../../../include +TESTTARGET_FILES := $(TARGETDIR)/hash.c $(TARGETDIR)/cmem.c $(TARGETDIR)/cerr.c $(TARGETDIR)/cmd.c $(TARGETDIR)/assemble.c $(TARGETDIR)/word.c $(TARGETDIR)/label.c $(TARGETDIR)/struct.c $(TARGETDIR)/token.c # Set test target files + +$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES) + $(CC) $(CFLAGS) -I $(INCLUDEDIR) -o $@ $^ diff --git a/test/unit/opdtok/cmd.c b/test/unit/opdtok/cmd.c index cfc32ea..7b30eb6 100644 --- a/test/unit/opdtok/cmd.c +++ b/test/unit/opdtok/cmd.c @@ -17,6 +17,7 @@ int main(){ }; cerr = malloc_chk(sizeof(CERR), "cerr"); /* エラーの初期化 */ + addcerrlist_assemble(); for(i = 0; i < ARRAYSIZE(str); i++) { cerr->num = 0; printf("%s\n", str[i]); diff --git a/test/unit/setcerr/Makefile b/test/unit/setcerr/Makefile index 88cbf20..b2087fb 100644 --- a/test/unit/setcerr/Makefile +++ b/test/unit/setcerr/Makefile @@ -1,11 +1,15 @@ include ../Define.mk -include ../Define_test.mk include ../Test.mk -SRCDIR = ../../../src -SRCFILES = $(SRCDIR)/cmem.c $(SRCDIR)/cerr.c +CC := gcc +CFLAGS := -Wall -.INTERMEDIATE: cmd +.INTERMEDIATE: $(CMD_FILE) -cmd: cmd.c $(SRCFILES) - gcc -g -Wall -I ../../../include -o $@ $^ +CMDSRC_FILE := cmd.c +TARGETDIR := ../../../src +INCLUDEDIR := ../../../include +TESTTARGET_FILES := $(TARGETDIR)/cmem.c $(TARGETDIR)/cerr.c # Set test target files + +$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES) + $(CC) $(CFLAGS) -I $(INCLUDEDIR) -o $@ $^ -- 2.18.0