我有一個庫目錄有幾個子目錄,每個子目錄都有自己的單元測試。要運行它們,我增加了以下測試目標:
test: $(addprefix test-,$(SUBDIRS))
test-%:
$(MAKE) -k --directory=$* test
這是很酷的,因爲它運行在每個子目錄中的測試,可以使用分佈式的,例如做測試-j5。但是,它有一個問題。理想情況下,我想在所有目錄中運行測試,而不管個別目錄中的失敗。我還希望能夠總結最後的失敗,並且(更重要的是)能夠在一個或多個測試失敗時返回非零退出代碼。上面的代碼運行所有測試,但不打印摘要,也不打印非零退出狀態。
這是一些更復雜的代碼,它可以做我想做的事情。這不是很優雅,但:
clean_test:
rm -f testfailures
test: clean_test
$(MAKE) $(addprefix test-,$(SUBDIRS))
@echo "=== TEST SUMMARY ==="
@if [ -f $(BUILD_DIR)/testfailures ]; then \
echo "The following tests failed:"; \
cat $(BUILD_DIR)/testfailures; \
false; \
else \
echo "All tests passed."; \
fi
test-%:
$(MAKE) -k --directory=$* test || echo \
" $*" >> $(BUILD_DIR)/testfailures
來源
2012-09-26 03:23:03
dbn
我很想在Python之外重新發布這個問題,因爲沒有好的全面解決方案。 – dbn 2012-11-30 09:00:33
請包括Makefile的相關部分。 *這裏*鏈接不給我一個Makefile。 – reinierpost 2017-02-24 10:17:22