From: j8takagi Date: Sat, 16 Feb 2019 02:29:28 +0000 (+0900) Subject: valgrindを、cmdがシェルスクリプトでもC実行ファイルでも可能なように X-Git-Tag: 0.2p14~3 X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=autotest_mk.git;a=commitdiff_plain;h=a82d72ebf5d1e07ec8ed10102b94f04ff09ed601 valgrindを、cmdがシェルスクリプトでもC実行ファイルでも可能なように --- diff --git a/template/Define.mk b/template/Define.mk index d4c3b94..f8e6dd9 100644 --- a/template/Define.mk +++ b/template/Define.mk @@ -27,18 +27,21 @@ DEV_NULL := /dev/null DIFF := diff -c ECHO := echo EXPR := expr +FILE := file -b -e ascii FIND := find GREP := grep LINECOUNT := wc -l LN := ln -s MKDIR := mkdir -p MV := mv +PRINTF := printf +REALPATH := realpath SED := sed TEST := test TIME := time TR := tr VALGRIND := valgrind -VALGRINDFLAG := -q --leak-check=full --log-file=valgrind.log +VALGRINDFLAG := -q --leak-check=full --show-leak-kinds=all --log-file=valgrind.log ###################################################################### # テストグループとテストでの共通マクロ diff --git a/template/Test.mk b/template/Test.mk index 13178f6..def57eb 100644 --- a/template/Test.mk +++ b/template/Test.mk @@ -39,11 +39,13 @@ define time_cmd ($(TIME) ./$1 1>$(DEV_NULL) 2>$(DEV_NULL)) 2>&1 | $(GREP) '^real' >$2 endef +CMD_VALGRIND = $(strip $(shell if test "`$(FILE) $(CMD_FILE)`" = "data"; then cat $(CMD_FILE); else $(PRINTF) "./$(CMD_FILE)"; fi)) + # valgrindによるメモリーチェック結果を、指定されたファイルに出力して表示 # 引数は、テスト名、コマンドファイル、出力ファイル # 用例: $(call valgrind_cmd,file_cmd,file_out) define valgrind_cmd - -$(VALGRIND) $(VALGRINDFLAG) $(strip $(shell tail -1 $(CMD_FILE))) 1>/dev/null 2>&1 + -$(VALGRIND) $(VALGRINDFLAG) $(CMD_VALGRIND) 1>/dev/null 2>&1 endef # テスト実行コマンド。 @@ -127,7 +129,7 @@ reset: all-clean $(CMD_FILE) @$(CAT) $(TEST0_FILE) clean: - @$(RM) $(TEST_RES_FILES) $(TIME_FILE) $(VALGRIND_FILE) + @$(RM) $(TEST_RES_FILES) $(TIME_FILE) $(VALGRIND_FILE) core all-clean: clean @$(RM) $(TEST0_FILE)