make test: support out-of-tree tests
[vpp.git] / test / Makefile
index 0214980..c65eaae 100644 (file)
@@ -23,14 +23,19 @@ verify-no-running-vpp:
                false; \
        fi
 
-UNITTEST_EXTRA_OPTS=""
+UNITTEST_EXTRA_OPTS=
+UNITTEST_FAILFAST_OPTS=
 
 ifeq ($(FAILFAST),1)
-UNITTEST_EXTRA_OPTS="-f"
+UNITTEST_EXTRA_OPTS=-f
+endif
+
+ifneq ($(EXTERN_TESTS),)
+UNITTEST_EXTRA_OPTS=$(UNITTEST_FAILFAST_OPTS) -d $(EXTERN_TESTS)
 endif
 
 PYTHON_VENV_PATH=$(VPP_PYTHON_PREFIX)/virtualenv
-PYTHON_DEPENDS=scapy==2.3.3 pexpect subprocess32 git+https://github.com/klement/py-lispnetworking@setup
+PYTHON_DEPENDS=scapy==2.3.3 pexpect subprocess32 cffi git+https://github.com/klement/py-lispnetworking@setup
 SCAPY_SOURCE=$(PYTHON_VENV_PATH)/lib/python2.7/site-packages/
 BUILD_COV_DIR = $(BR)/test-cov
 
@@ -59,13 +64,25 @@ $(PAPI_INSTALL_DONE): $(PIP_PATCH_DONE)
        @touch $@
 
 define retest-func
-       @bash -c "source $(PYTHON_VENV_PATH)/bin/activate && python run_tests.py discover $(UNITTEST_EXTRA_OPTS) -p test_\"*.py\""
+       @bash -c "source $(PYTHON_VENV_PATH)/bin/activate && python run_tests.py -d $(TEST_DIR) $(UNITTEST_EXTRA_OPTS)"
 endef
 
-test: verify-python-path verify-no-running-vpp reset $(PAPI_INSTALL_DONE)
+.PHONY: sanity
+
+sanity: verify-no-running-vpp
+       @bash -c "source $(PYTHON_VENV_PATH)/bin/activate && python sanity_import_vpp_papi.py ||\
+               (echo \"*******************************************************************\" &&\
+                echo \"* Sanity check failed, cannot import vpp_papi\" &&\
+                echo \"* to debug: \" &&\
+                echo \"* 1. enter test shell:   make test-shell\" &&\
+                echo \"* 2. execute debugger:   gdb python -ex 'run sanity_import_vpp_papi.py'\" &&\
+                echo \"*******************************************************************\" &&\
+                false)"
+
+test: verify-python-path $(PAPI_INSTALL_DONE) sanity reset 
        $(call retest-func)
 
-retest: verify-python-path verify-no-running-vpp reset
+retest: verify-python-path sanity reset
        $(call retest-func)
 
 shell: verify-python-path $(PAPI_INSTALL_DONE)