diff -r ce366d67a5b7 -r 24fbd4d1fe80 tests/Makefile --- a/tests/Makefile Sat Mar 05 11:14:00 2022 +0100 +++ b/tests/Makefile Fri Mar 11 14:43:37 2022 +0100 @@ -47,6 +47,7 @@ # Any change in Matiec and Beremiz directory triggers copy of source code # to $(test_dir)/build. # +# BEREMIZPYTHONPATH is expected to be absolute path to python interpreter # # Please note: # In order to run asside a freshly build Matiec, tested beremiz instance @@ -99,12 +100,22 @@ own_apps: $(build_dir)/matiec/iec2c $(build_dir)/beremiz/$(beremiz_checksum).sha1 touch $@ -ide_tests = $(subst $(src)/ide_tests/,,$(wildcard $(src)/ide_tests/*.sikuli)) +ide_test_dir = $(src)/ide_tests +sikuli_ide_tests = $(subst $(ide_test_dir)/,,$(wildcard $(ide_test_dir)/*.sikuli)) +pytest_ide_tests = $(subst $(ide_test_dir)/,,$(wildcard $(ide_test_dir)/*.pytest)) -define idetest_command +define sikuli_idetest_command (fluxbox >/dev/null 2>&1 &); BEREMIZPATH=$(build_dir)/beremiz sikulix -r $(src)/ide_tests/$(1) | tee test_stdout.txt; exit $$$${PIPESTATUS[0]} endef + +DELAY=400 +KILL_DELAY=430 +PYTEST=$(dir $(BEREMIZPYTHONPATH))/pytest +define pytest_idetest_command + (fluxbox >/dev/null 2>&1 &); PYTHONPATH=$(ide_test_dir) timeout -k $(KILL_DELAY) $(DELAY) $(PYTEST) --maxfail=1 --timeout=100 $(src)/ide_tests/$(1) | tee test_stdout.txt; exit $$$${PIPESTATUS[0]} +endef + # Xnest based interactive sessions for tests edit and debug. # Would be nice with something equivalent to xvfb-run, waiting for USR1. # Arbitrary "sleep 1" is probably enough for interactive use @@ -122,7 +133,7 @@ define make_idetest_rule $(test_dir)/$(1)_idetest/.passed: own_apps - $(call prep_test,$(1)); $(xserver_command) bash -c '$(call idetest_command,$(1))' + $(call prep_test,$(1)); $(xserver_command) bash -c '$(call $(2),$(1))' touch $$@ # Manually invoked rule {testname}.sikuli @@ -131,11 +142,12 @@ # Manually invoked rule xnest_{testname}.sikuli # runs test in xnest so that one can see what happens xnest_$(1): own_apps - $(call prep_test,$(1)); $$(call xnest_run, bash -c '$(call idetest_command,$(1))') + $(call prep_test,$(1)); $$(call xnest_run, bash -c '$(call $(2),$(1))') ide_tests_targets += $(test_dir)/$(1)_idetest/.passed endef -$(foreach idetest,$(ide_tests),$(eval $(call make_idetest_rule,$(idetest)))) +$(foreach idetest,$(sikuli_ide_tests),$(eval $(call make_idetest_rule,$(idetest),sikuli_idetest_command))) +$(foreach idetest,$(pytest_ide_tests),$(eval $(call make_idetest_rule,$(idetest),pytest_idetest_command))) ide_tests : $(ide_tests_targets) echo "$(ide_tests_targets) : Passed"