Extract function for launching httpbin into its own file

Allow reusing it between GitHub and Travis CI.

Also show httpbin log in Travis CI logs too, not just on GitHub.
This commit is contained in:
Vadim Zeitlin
2021-04-04 00:18:50 +02:00
parent 996469115b
commit 2b89215eec
3 changed files with 67 additions and 51 deletions

View File

@@ -189,13 +189,9 @@ jobs:
if: matrix.skip_testing != true if: matrix.skip_testing != true
working-directory: tests working-directory: tests
run: | run: |
echo "Launching httpbin" . ../build/tools/httpbin.sh
# Current decorator (>= 5) is incompatible with Python 2 which we
# still use under in some builds, so explicitly use a version which httpbin_launch
# is known to work.
pip install decorator==4.4.2 httpbin
python -m httpbin.core 2>&1 >httpbin.log &
export WX_TEST_WEBREQUEST_URL=http://localhost:5000
export ASAN_OPTIONS=fast_unwind_on_malloc=0 export ASAN_OPTIONS=fast_unwind_on_malloc=0
@@ -210,11 +206,9 @@ jobs:
./test || rc=$? ./test || rc=$?
fi fi
fi fi
if [ -n "$rc" ]; then if [ -n "$rc" ]; then
echo '*** Tests failed, contents of httpbin.log follows: ***' httpbin_show_log
echo '-----------------------------------------------------------'
cat httpbin.log
echo '-----------------------------------------------------------'
exit $rc exit $rc
fi fi

44
build/tools/httpbin.sh Normal file
View File

@@ -0,0 +1,44 @@
# This script is sourced by CI scripts to launch httpbin.
#
# Do not run it directly.
httpbin_launch() {
echo 'Launching httpbin...'
case "$(uname -s)" in
Linux)
dist_codename=$(lsb_release --codename --short)
;;
esac
# We need to disable SSL certificate checking under Trusty because Python
# version there is too old to support SNI.
case "$dist_codename" in
trusty)
# Here "decorator==4.4.2" doesn't work neither for some reason ("no
# matching distribution found"), so use an explicit URL.
pip_decorator_arg='https://files.pythonhosted.org/packages/ed/1b/72a1821152d07cf1d8b6fce298aeb06a7eb90f4d6d41acec9861e7cc6df0/decorator-4.4.2-py2.py3-none-any.whl'
pip_options='--trusted-host files.pythonhosted.org'
;;
*)
# Current decorator (>= 5) is incompatible with Python 2 which we
# still use under in some builds, so explicitly use a version which
# is known to work.
pip_decorator_arg='decorator==4.4.2'
;;
esac
pip install $pip_decorator_arg httpbin --user $pip_options
python -m httpbin.core 2>&1 >httpbin.log &
WX_TEST_WEBREQUEST_URL="http://localhost:5000"
export WX_TEST_WEBREQUEST_URL
}
httpbin_show_log() {
echo '*** Tests failed, contents of httpbin.log follows: ***'
echo '-----------------------------------------------------------'
cat httpbin.log
echo '-----------------------------------------------------------'
}

View File

@@ -4,6 +4,8 @@
set -e set -e
. ./build/tools/httpbin.sh
wxPROC_COUNT=`getconf _NPROCESSORS_ONLN` wxPROC_COUNT=`getconf _NPROCESSORS_ONLN`
((wxPROC_COUNT++)) ((wxPROC_COUNT++))
wxBUILD_ARGS="-j$wxPROC_COUNT" wxBUILD_ARGS="-j$wxPROC_COUNT"
@@ -12,42 +14,6 @@ wxBUILD_ARGS="-j$wxPROC_COUNT"
# messages from WebKit tests that we're not interested in. # messages from WebKit tests that we're not interested in.
export NO_AT_BRIDGE=1 export NO_AT_BRIDGE=1
launch_httpbin() {
echo 'travis_fold:start:httpbin'
echo 'Running httpbin...'
case "$(uname -s)" in
Linux)
dist_codename=$(lsb_release --codename --short)
;;
esac
# We need to disable SSL certificate checking under Trusty because Python
# version there is too old to support SNI.
case "$dist_codename" in
trusty)
# Here "decorator==4.4.2" doesn't work neither for some reason ("no
# matching distribution found"), so use an explicit URL.
pip_decorator_arg='https://files.pythonhosted.org/packages/ed/1b/72a1821152d07cf1d8b6fce298aeb06a7eb90f4d6d41acec9861e7cc6df0/decorator-4.4.2-py2.py3-none-any.whl'
pip_options='--trusted-host files.pythonhosted.org'
;;
*)
# Current decorator (>= 5) is incompatible with Python 2 which we
# still use under in some builds, so explicitly use a version which
# is known to work.
pip_decorator_arg='decorator==4.4.2'
;;
esac
pip install $pip_decorator_arg httpbin --user $pip_options
python -m httpbin.core &
WX_TEST_WEBREQUEST_URL="http://localhost:5000"
export WX_TEST_WEBREQUEST_URL
echo 'travis_fold:end:httpbin'
}
case $wxTOOLSET in case $wxTOOLSET in
cmake) cmake)
if [ -z $wxCMAKE_TESTS ]; then wxCMAKE_TESTS=CONSOLE_ONLY; fi if [ -z $wxCMAKE_TESTS ]; then wxCMAKE_TESTS=CONSOLE_ONLY; fi
@@ -78,12 +44,18 @@ case $wxTOOLSET in
echo 'travis_fold:end:install' echo 'travis_fold:end:install'
if [ "$wxCMAKE_TESTS" != "OFF" ]; then if [ "$wxCMAKE_TESTS" != "OFF" ]; then
launch_httpbin echo 'travis_fold:start:httpbin'
httpbin_launch
echo 'travis_fold:end:httpbin'
echo 'travis_fold:start:testing' echo 'travis_fold:start:testing'
echo 'Testing...' echo 'Testing...'
ctest -V -C Debug -E "test_drawing" --output-on-failure --interactive-debug-mode 0 . ctest -V -C Debug -E "test_drawing" --output-on-failure --interactive-debug-mode 0 . || rc=$?
echo 'travis_fold:end:testing' echo 'travis_fold:end:testing'
if [ -n "$rc" ]; then
httpbin_show_log
exit $rc
fi
fi fi
echo 'travis_fold:start:testinstall' echo 'travis_fold:start:testinstall'
@@ -162,14 +134,20 @@ case $wxTOOLSET in
exit 0 exit 0
fi fi
launch_httpbin echo 'travis_fold:start:httpbin'
httpbin_launch
echo 'travis_fold:end:httpbin'
echo 'travis_fold:start:testing' echo 'travis_fold:start:testing'
echo 'Testing...' echo 'Testing...'
pushd tests pushd tests
./test ./test || rc=$?
popd popd
echo 'travis_fold:end:testing' echo 'travis_fold:end:testing'
if [ -n "$rc" ]; then
httpbin_show_log
exit $rc
fi
if [ "$wxSKIP_GUI" = 1 ]; then if [ "$wxSKIP_GUI" = 1 ]; then
echo 'Skipping the rest of tests for non-GUI build.' echo 'Skipping the rest of tests for non-GUI build.'