before_script:
- test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
- test -n "${OOT_BUILD_WORKSPACE}" && mkdir "${OOT_BUILD_WORKSPACE}" && cd "${OOT_BUILD_WORKSPACE}"
+ - pip3 install pytest requests || pip install pytest requests || true
script:
- *configure
- make -j${BUILD_PARALLEL_JOBS:-1} -k all V=1
before_script:
- *setup_interfaces
- *setup_softhsm
+ - pip3 install pytest requests || pip install pytest requests || true
script:
- cd bin/tests/system
- make -j${TEST_PARALLEL_JOBS:-1} -k check V=1 || make -j${TEST_PARALLEL_JOBS:-1} -k recheck V=1
before_script:
- pip3 install pylint
- PYTHONPATH="$PYTHONPATH:$CI_PROJECT_DIR/bin/python"
+ - pip3 install pytest requests || pip install pytest requests
script:
- *configure
- pylint --rcfile $CI_PROJECT_DIR/.pylintrc $(git ls-files '*.py' | grep -v 'ans\.py')
# true, the last digit of EXTRAPORTn is "n".
eval "$(${srcdir}/get_ports.sh -p "$baseport")"
+restart=false
+
+start_servers_failed() {
+ echoinfo "I:$systest:starting servers failed"
+ echofail "R:$systest:FAIL"
+ echoend "E:$systest:$(date_with_args)"
+ exit 1
+}
+
+start_servers() {
+ echoinfo "I:$systest:starting servers"
+ if $restart; then
+ $PERL start.pl --restart --port "$PORT" "$systest" || start_fail
+ else
+ restart=true
+ $PERL start.pl --port "$PORT" "$systest" || start_fail
+ fi
+}
+
+stop_servers_failed() {
+ echoinfo "I:$systest:stopping servers failed"
+ echofail "R:$systest:FAIL"
+ echoend "E:$systest:$(date_with_args)"
+ exit 1
+}
+
+stop_servers() {
+ if $stopservers; then
+ echoinfo "I:$systest:stopping servers"
+ $PERL stop.pl "$systest" || stop_servers_failed
+ fi
+}
+
echostart "S:$systest:$(date_with_args)"
echoinfo "T:$systest:1:A"
echoinfo "A:$systest:System test $systest"
( cd "${systest}" && $SHELL setup.sh "$@" )
fi
-# Start name servers running
-if ! $PERL ${srcdir}/start.pl --port "$PORT" "$systest"; then
- echofail "R:$systest:FAIL"
- echoend "E:$systest:$(date_with_args)"
- exit 1
-fi
+status=0
+run=0
# Run the tests
-( cd "${systest}" && $SHELL tests.sh "$@" )
-status=$?
+if [ -r "$systest/tests.sh" ]; then
+ start_servers
+ ( cd "$systest" && $SHELL tests.sh "$@" )
+ status=$?
+ run=$((run+1))
+ stop_servers
+fi
+
+if [ -n "$PYTEST" ]; then
+ run=$((run+1))
+ for test in $(cd "${systest}" && find . -name "tests*.py"); do
+ start_servers
+ rm -f "$systest/$test.status"
+ test_status=0
+ (cd "$systest" && "$PYTEST" -v "$test" "$@" || echo "$?" > "$test.status") | SYSTESTDIR="$systest" cat_d
+ if [ -f "$systest/$test.status" ]; then
+ echo_i "FAILED"
+ test_status=$(cat "$systest/$test.status")
+ fi
+ status=$((status+test_status))
+ stop_servers
+ done
+else
+ echoinfo "I:$systest:pytest not installed, skipping python tests"
+fi
+
+if [ "$run" -eq "0" ]; then
+ echoinfo "I:$systest:No tests were found and run"
+ status=255
+fi
if $stopservers
then
exit $status
fi
-# Shutdown
-$PERL ${srcdir}/stop.pl "$systest"
-
-status=$((status + $?))
-
if [ $status != 0 ]; then
echofail "R:$systest:FAIL"
# Do not clean up - we need the evidence.
AM_PATH_PYTHON([3.4], [], [:])
AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != ":"])
+AC_PATH_PROGS([PYTEST], [pytest-3 pytest pytest-pypy], [])
+AS_IF([test -z "$PYTEST"],
+ [AC_MSG_WARN([pytest not found, some system tests will be skipped])])
+AC_SUBST([PYTEST])
+
AX_PYTHON_MODULE([dns])
AM_CONDITIONAL([HAVE_PYMOD_DNS], [test "$HAVE_PYMOD_DNS" = "yes"])