Skip to content

Commit

Permalink
Extract function for launching httpbin into its own file
Browse files Browse the repository at this point in the history
Allow reusing it between GitHub and Travis CI.

Also show httpbin log in Travis CI logs too, not just on GitHub.
  • Loading branch information
vadz committed Apr 3, 2021
1 parent 9964691 commit 2b89215
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 51 deletions.
16 changes: 5 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -189,13 +189,9 @@ jobs:
if: matrix.skip_testing != true
working-directory: tests
run: |
echo "Launching httpbin"
# 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 install decorator==4.4.2 httpbin
python -m httpbin.core 2>&1 >httpbin.log &
export WX_TEST_WEBREQUEST_URL=http://localhost:5000
. ../build/tools/httpbin.sh
httpbin_launch
export ASAN_OPTIONS=fast_unwind_on_malloc=0
Expand All @@ -210,11 +206,9 @@ jobs:
./test || rc=$?
fi
fi
if [ -n "$rc" ]; then
echo '*** Tests failed, contents of httpbin.log follows: ***'
echo '-----------------------------------------------------------'
cat httpbin.log
echo '-----------------------------------------------------------'
httpbin_show_log
exit $rc
fi
Expand Down
44 changes: 44 additions & 0 deletions build/tools/httpbin.sh
Original file line number Diff line number Diff line change
@@ -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 '-----------------------------------------------------------'
}
58 changes: 18 additions & 40 deletions build/tools/travis-ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

set -e

. ./build/tools/httpbin.sh

wxPROC_COUNT=`getconf _NPROCESSORS_ONLN`
((wxPROC_COUNT++))
wxBUILD_ARGS="-j$wxPROC_COUNT"
Expand All @@ -12,42 +14,6 @@ wxBUILD_ARGS="-j$wxPROC_COUNT"
# messages from WebKit tests that we're not interested in.
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
cmake)
if [ -z $wxCMAKE_TESTS ]; then wxCMAKE_TESTS=CONSOLE_ONLY; fi
Expand Down Expand Up @@ -78,12 +44,18 @@ case $wxTOOLSET in
echo 'travis_fold:end:install'

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 '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'
if [ -n "$rc" ]; then
httpbin_show_log
exit $rc
fi
fi

echo 'travis_fold:start:testinstall'
Expand Down Expand Up @@ -162,14 +134,20 @@ case $wxTOOLSET in
exit 0
fi

launch_httpbin
echo 'travis_fold:start:httpbin'
httpbin_launch
echo 'travis_fold:end:httpbin'

echo 'travis_fold:start:testing'
echo 'Testing...'
pushd tests
./test
./test || rc=$?
popd
echo 'travis_fold:end:testing'
if [ -n "$rc" ]; then
httpbin_show_log
exit $rc
fi

if [ "$wxSKIP_GUI" = 1 ]; then
echo 'Skipping the rest of tests for non-GUI build.'
Expand Down

0 comments on commit 2b89215

Please sign in to comment.