0

makeファイルの書き込みはあまり得意ではありません。しかし、GNUMAKEベースのテストハーネスを作成する必要があります。いくつかの調査を行いましたが、有用なものを見つけることができませんでした。ですから、どこから始めればいいのかさえわかりません。

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 
4

2 に答える 2

1

makefileは特定のタスクを自動化する方法であるため、Makeを使用せずに実行する方法を理解するまで、Makeを使用して何も実行できません。

やりたいことを行うには複数の方法があり(Makeの一般的な状況)、makefileをどのようにスケーリングするかを考える必要があります。そのコマンドを作成する最も簡単な方法は、おそらく次のとおりです。

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

したがって、このmakefileで十分です。

.PHONY: all

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

これについては多くの進歩が可能ですが、これを超えてあなたが何をしようとしているのかがわかるまではそうはいきません。

于 2012-11-10T14:25:27.943 に答える
1

あなたが何をしようとしているのか、なぜあなたはテストルールの依存関係が必要なのか(特にあなたがそれを偽物にしたのか)理解できません。

また、ファイルのコンテンツをテストする場合は、テストではなく差分を使用する必要があります

于 2012-11-10T02:00:45.187 に答える