Commit 4a0cbde6 authored by Adam Wujek's avatar Adam Wujek 💬

testbench: update Makefile

To support:
--Fatal
--Save transcript files
Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent e512968a
# This Makefile can be called by the Continuous Integration (CI) tool to execute all
# testbenches added for CI
#
# Author: Adam Wujek, CERN 2017
TB_DIRS=wr_minic
TB_DIRS+=wrc_core
TB_DIRS+=wr_streamers/streamers_multi_test
test_results_xml=test_results.xml
.PHONY: $(TB_DIRS)
......@@ -15,8 +16,6 @@ $(TB_DIRS):
@echo $@
@echo "Run HDL-MAKE"
cd "$@"; \
source $(ISE_PATH)/settings64.sh; \
export XILINX=$(ISE_PATH); \
$(HDLMAKE_PATH)/hdl-make 2>&1
@echo "Run make"
......@@ -24,19 +23,25 @@ $(TB_DIRS):
@echo "Run vsim"
cd "$@" ;\
vsim -c -do "run_ci.do" ;\
d="$@";\
d=$${d////_}; \
vsim -c -do "run_ci.do" -l transcript."$$d".txt;\
echo "vsim returned $$?"
summary: $(TB_DIRS)
@echo "-------------------------------------------------------------------"
@echo "Summary:"
@for d in $(TB_DIRS); do \
if [ -f $$d/transcript ]; then \
d_=$${d////_}; \
if [ -f $$d/transcript."$$d_".txt ]; then \
echo "Warnings for $$d:"; \
cat $$d/transcript | grep Warning; \
cat $$d/transcript."$$d_".txt | grep Warning:; \
if [ $$? -eq 1 ]; then echo "None"; fi ;\
echo "Errors for $$d:"; \
cat $$d/transcript | grep Error; \
cat $$d/transcript."$$d_".txt | grep Error:; \
if [ $$? -eq 1 ]; then echo "None"; fi ;\
echo "Fatals for $$d:"; \
cat $$d/transcript."$$d_".txt | grep Fatal:; \
if [ $$? -eq 1 ]; then echo "None"; fi ;\
else \
echo "No transcript file for $$d"; \
......@@ -48,34 +53,42 @@ summary_total: summary summary_xml
@echo "-------------------------------------------------------------------"
@echo ""
@echo "Summary total:"
@echo "+-------------------------------+----------+----------+"
@echo "| Test bench | Warnings | Errors |"
@echo "+-------------------------------+----------+----------+"
@echo "+---------------------------------------------------+----------+----------+----------+"
@echo "| Test bench | Warnings | Errors | Fatals |"
@echo "+---------------------------------------------------+----------+----------+----------+"
@is_error=0;\
for d in $(TB_DIRS); do \
if [ -f $$d/transcript ]; then \
printf "| %-30s" $$d; \
printf "| %8d " `cat $$d/transcript | grep Warning | wc -l`; \
error_n=`cat $$d/transcript | grep Error | wc -l`; \
printf "| %8d |\n" $$error_n;\
d_=$${d////_}; \
if [ -f $$d/transcript."$$d_".txt ]; then \
printf "| %-50s" $$d; \
printf "| %8d " `cat $$d/transcript."$$d_".txt | grep Warning: | wc -l`; \
error_n=`cat $$d/transcript."$$d_".txt | grep Error: | wc -l`; \
printf "| %8d " $$error_n;\
if [ $$error_n -gt 0 ]; then is_error=1; fi ;\
fatal_n=`cat $$d/transcript."$$d_".txt | grep Fatal: | wc -l`; \
printf "| %8d |\n" $$fatal_n;\
if [ $$fatal_n -gt 0 ]; then is_error=1; fi ;\
else \
printf "| %-30s" $$d; \
echo "| No transcript file! |"; is_error=1; \
fi \
done ;\
echo "+-------------------------------+----------+----------+";\
echo "+---------------------------------------------------+----------+----------+----------+";\
if [ $$is_error -gt 0 ]; then exit 1; fi ;
summary_xml: summary
@echo '<?xml version="1.0" encoding="UTF-8"?>' > $(test_results_xml)
@echo '<testsuites tests="0" failures="0" disabled="0" errors="0" time="0" name="AllTests">' >> $(test_results_xml)
@for d in $(TB_DIRS); do \
d_=$${d////_}; \
is_test_error=0;\
error_n=0;\
fatal_n=0;\
echo -n " <testsuite name=\""$$d"\" tests=\"1\" failures=\"" >> $(test_results_xml) ;\
if [ -f $$d/transcript ]; then \
error_n=`cat $$d/transcript | grep Error | wc -l`; \
if [ $$error_n -gt 0 ]; then is_test_error=1; fi ;\
if [ -f $$d/transcript."$$d_".txt ]; then \
error_n=`cat $$d/transcript."$$d_".txt | grep Error: | wc -l`; \
fatal_n=`cat $$d/transcript."$$d_".txt | grep Fatal: | wc -l`; \
if [ $$error_n -gt 0 ] || [ $$fatal_n -gt 0 ]; then is_test_error=1; fi ;\
echo -n $$is_test_error >> $(test_results_xml);\
else \
is_test_error=2; \
......@@ -84,9 +97,16 @@ summary_xml: summary
echo "\" disabled=\"0\" errors=\"0\" time=\"0\">" >> $(test_results_xml) ;\
echo " <testcase name=\""$$d"\" status=\"run\" time=\"0\" classname=\""Testbench"\">" >> $(test_results_xml) ;\
if [ $$is_test_error -eq 1 ]; then \
echo " <failure message=\"Errors\" type=\"\"><![CDATA[" >> $(test_results_xml) ;\
cat $$d/transcript | grep Error >> $(test_results_xml);\
echo " ]]></failure>" >> $(test_results_xml) ;\
if [ $$error_n -gt 0 ]; then \
echo " <failure message=\"Errors\" type=\"\"><![CDATA[" >> $(test_results_xml) ;\
cat $$d/transcript."$$d_".txt | grep Error: >> $(test_results_xml);\
echo " ]]></failure>" >> $(test_results_xml) ;\
fi;\
if [ $$fatal_n -gt 0 ]; then \
echo " <failure message=\"Fatals\" type=\"\"><![CDATA[" >> $(test_results_xml) ;\
cat $$d/transcript."$$d_".txt | grep Fatal: >> $(test_results_xml);\
echo " ]]></failure>" >> $(test_results_xml) ;\
fi;\
fi ;\
if [ $$is_test_error -eq 2 ]; then \
echo " <failure message=\"Output file not found\" type=\"\">" >> $(test_results_xml) ;\
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment