2012-11-10 71 views
0

我不是很擅長寫make文件。但是我需要編寫一個基於GNUMAKE的測試工具。我做了一些研究,但我無法找到有用的東西。所以我甚至不知道從哪裏開始。如何編寫一個基於GNUMAKE的testharness

TEST_SUITE_DIR:=testSuite 

#Get all test names with path & extention 
TEST_SCRIPTS_WITH_PATH:=$(wildcard $(TEST_SUITE_DIR)/*.txt) 

#Test name with out path and extention 
TEST_SCRIPT_NAME:=$(notdir $(patsubst %.txt,%,$(TEST_SCRIPTS_WITH_PATH))) 


vpath %.txt $(TEST_SUITE_DIR) 


TEST_LOG_FILE:=$(TEST_SCRIPT_NAME)OutPutFile.txt 



#This is the program ./bin/programName being tested 
PUT:=man 

#Test requrements: 
#1) Each test in /testSuite dir should have its own logFile 
#2) Each testout will be checked against a goldenout file in /goldenOutput dir to see 
# if the expected resuls match with the test output 
# #3) If the test & golden output file hasnt been modified, we do not want to run that test so 
# we can save time 
# #4) STDERR should be redirected to a stderr.log 
#5) During the regression, if a test failed, test name should be written into the regressionReport.log 

.PHONY: clean test 

test: 
     for i in $(TEST_SCRIPTS_WITH_PATH); do \ 
       echo $$i; \ 
       $(PUT) `head -n 1 $$i` > $$iOutPutFile.txt; \ 
     done 

#$(foreach i, $(TEST_SCRIPTS_WITH_PATH), $(PUT) `head -n 1 $($i)` > $($i)OutPutFile.txt) 
#$(PUT) `head -n 1 $(TEST_SCRIPTS) ` > $(TEST_SCRIPTS)logFile.log 


clean: 
     rm -f *.d $(OBJ_DIR)/*.o $(PROG) 


-include *.d 

這是我dataFile.txt(此刻,我只是試圖讓1個命令工作),

date 

回答

0

我不知道我明白你正在嘗試做的,爲什麼你需要測試規則的依賴關係(特別是你假冒它)。

此外,如果你想測試你需要使用補丁文件的內容不考

0

一個Makefile是自動化某些任務的一種方式,所以你不能用make做什麼,直到你知道該怎麼怎麼做它沒有Make。

有多種方法可以做你想做的事(Make有一個常見的情況),你應該考慮如何擴展makefile文件。構建一個命令最簡單的方法可能是:

man `head -n 1 dataFile.txt` > logFile.log 

所以此生成的文件就足夠了:

.PHONY: all 

all: 
    man `head -n 1 dataFile.txt` > logFile.log 

在這許多進展是可能的,但直到我們知道你打算做超出了什麼。

+0

它確實爲1測試工作。我如何使用這個進行一次以上的測試?爲了讓我的迴歸以我想要的方式工作,我必須添加更多的要求。任何幫助將不勝感激。正如你所看到的,我是一名C,C++程序員。這對我來說就像是希臘語。 – usustarr

相關問題