From 9d2834f078961b2c0da7908bcf9b7db0e9540b84 Mon Sep 17 00:00:00 2001 From: Ambrus Simon <ambrussimon@invenshure.com> Date: Wed, 8 Nov 2017 10:35:06 +0100 Subject: [PATCH] Add --no-abao, --no-report and review fixes --- TESTING.md | 7 ++++-- test/bin/run-tests-docker.sh | 6 +++--- test/bin/run-tests-ubuntu.sh | 41 ++++++++++++++++++++++++++---------- 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/TESTING.md b/TESTING.md index 0e8eedc9..4e2684af 100644 --- a/TESTING.md +++ b/TESTING.md @@ -11,8 +11,11 @@ Run automated tests: * To skip linting, use `--no-lint` (`-L`) * To skip unit tests, use `--no-unit` (`-U`) * To skip integration tests, use `--no-integ` (`-I`) +* To skip abao tests, use `--no-abao` (`-A`) * To pass any arguments to `py.test`, use `-- PYTEST_ARGS` +See [py.test usage](https://docs.pytest.org/en/latest/usage.html) for more. + ### Docker Build scitran-core image and run automated tests in a docker container: ``` @@ -22,9 +25,9 @@ Build scitran-core image and run automated tests in a docker container: * To pass any arguments to `run-tests-ubuntu.sh`, use `-- TEST_ARGS` #### Example -Without rebuilding the image, run only unit tests matching `foo`, use the highest verbosity level for test output and jump into a python debugger session in case an assertion fails: +Without rebuilding the image, run only integration tests matching `foo`, use the highest verbosity level for test output and jump into a python debugger session in case an assertion fails: ``` -./test/bin/run-tests-docker.sh -B -- -L -I -- -k foo -vvv --pdb +./test/bin/run-tests-docker.sh -B -- -L -U -A -- -k foo -vvv --pdb ``` ### Tools diff --git a/test/bin/run-tests-docker.sh b/test/bin/run-tests-docker.sh index dd7349be..0fb0f813 100755 --- a/test/bin/run-tests-docker.sh +++ b/test/bin/run-tests-docker.sh @@ -34,6 +34,8 @@ function main() { shift done + trap clean_up EXIT + if ${DOCKER_BUILD}; then echo "Building scitran-core:run-tests ..." docker build -t scitran-core:run-tests . @@ -62,7 +64,7 @@ function main() { function clean_up() { - export TEST_RESULT_CODE=$? + local TEST_RESULT_CODE=$? set +e # Copy coverage file to host for possible further reporting @@ -75,7 +77,5 @@ function clean_up() { exit $TEST_RESULT_CODE } -trap clean_up EXIT - main "$@" diff --git a/test/bin/run-tests-ubuntu.sh b/test/bin/run-tests-ubuntu.sh index f0e7b798..ce595274 100755 --- a/test/bin/run-tests-ubuntu.sh +++ b/test/bin/run-tests-ubuntu.sh @@ -15,6 +15,8 @@ Options: -L, --no-lint Skip linting -U, --no-unit Skip unit tests -I, --no-integ Skip integration tests + -A, --no-abao Skip abao tests + -R, --no-report Skip coverage report -h, --help Print this help and exit -- PYTEST_ARGS Arguments passed to py.test @@ -34,13 +36,18 @@ function main() { local RUN_LINT=true local RUN_UNIT=true local RUN_INTEG=true + local RUN_ABAO=true local PYTEST_ARGS= + export RUN_REPORT=true + while [[ "$#" > 0 ]]; do case "$1" in - -L|--no-lint) RUN_LINT=false ;; - -U|--no-unit) RUN_UNIT=false ;; - -I|--no-integ) RUN_INTEG=false ;; + -L|--no-lint) RUN_LINT=false ;; + -U|--no-unit) RUN_UNIT=false ;; + -I|--no-integ) RUN_INTEG=false ;; + -A|--no-abao) RUN_ABAO=false ;; + -R|--no-report) RUN_REPORT=false ;; -h|--help) usage; exit 0 ;; --) PYTEST_ARGS="${@:2}"; break ;; *) echo "Invalid argument: $1" >&2; usage; exit 1 ;; @@ -48,6 +55,13 @@ function main() { shift done + if ! (${RUN_LINT} && ${RUN_UNIT} && ${RUN_INTEG} && ${RUN_ABAO}); then + # Skip coverage report if any tests are skipped + RUN_REPORT=false + fi + + trap clean_up EXIT + # Remove __pycache__ directories for issue with __file__ attribute due to # running the tests on the host creating bytecode files hich have a # mismatched __file__ attribute when loaded in docker container @@ -79,8 +93,8 @@ function main() { py.test --cov=api --cov-report= test/unit_tests/python $PYTEST_ARGS fi - if ${RUN_INTEG}; then - echo "Running integration tests ..." + if ${RUN_INTEG} || ${RUN_ABAO}; then + echo "Spinning up dependencies ..." uwsgi --http "localhost:8081" --master --http-keepalive \ --so-keepalive --add-header "Connection: Keep-Alive" \ --processes 1 --threads 1 \ @@ -102,10 +116,15 @@ function main() { printf '.' sleep 1 done + fi + if ${RUN_INTEG}; then + echo "Running integration tests ..." py.test test/integration_tests/python $PYTEST_ARGS + fi - + if ${RUN_ABAO}; then + echo "Running abao tests ..." # Create resources that Abao relies on python test/integration_tests/abao/load_fixture.py @@ -133,7 +152,7 @@ function main() { function clean_up () { - export TEST_RESULT_CODE=$? + local TEST_RESULT_CODE=$? set +e echo @@ -141,11 +160,11 @@ function clean_up () { if [[ -n "${API_PID:-}" ]]; then # Killing uwsgi - kill $API_PID || true + kill $API_PID wait 2> /dev/null fi - if [[ "${TEST_RESULT_CODE}" == "0" ]]; then + if ${RUN_REPORT} && [[ "${TEST_RESULT_CODE}" == "0" ]]; then echo echo "UNIT TEST COVERAGE:" coverage report --skip-covered @@ -154,12 +173,12 @@ function clean_up () { coverage combine coverage report --show-missing coverage html + else + echo "Some tests were skipped or failed, skipping coverage report" fi exit $TEST_RESULT_CODE } -trap clean_up EXIT - main "$@" -- GitLab