blob: fe8ffce288c4944e6484bfcb1368b0b885717e39 [file] [log] [blame]
# Each plugin shall have a directory named 'test' that contains test cases
# directories and a Makefile which includes this Makefile template.
# The test Makefile specifies which tests to execute and how to verify them.
# The test to execute should be explicitly specified in the TESTS variable.
# Each test needs a verification step define in the name_of_test_verify variable.
# A simple diff verification template have been defined in the template Makefile
# diff_test performs a simple diff and takes name of file and its extension
# Example of a test Makefile is given below:
#
# include $(shell pwd)/../../Makefile_test.common
# TESTS = test1 test2
# test1_verify = $(call diff_test,test1,ext) && test $$(grep "PASS" test1/test1.txt | wc -l) -eq 2
# test2_verify = $(call diff_test,test2,ext)
#
define test_tpl =
$(1): $(1)/ok
@$$($(1)_verify); \
RETVAL=$$$$? ; \
if [ $$$$RETVAL -eq 0 ]; then \
echo "Test $(1) PASSED"; \
touch $$<; \
true; \
else \
echo "Test $(1) FAILED"; \
false; \
fi
$(1)/ok: $(1)/$(1).v
@echo "Running test $(1)"
@cd $(1); \
DESIGN_TOP=$(1) \
yosys -c $(1).tcl -q -l $(1).log
endef
diff_test = diff $(1)/$(1).golden.$(2) $(1)/$(1).$(2)
all: $(TESTS)
.PHONY: all clean $(TESTS)
$(foreach test,$(TESTS),$(eval $(call test_tpl,$(test))))
clean:
@rm -rf $(foreach test,$(TESTS),$(test)/$(test).sdc $(test)/$(test).txt $(test)/$(test).eblif $(test)/$(test).json)
@find . -name "ok" -or -name "*.log" | xargs rm -rf