Run tests directly from the Makefile

Depends on: https://github.com/alphagov/notifications-aws/pull/905

Previously this would print some custom text with each step, and
as optionally loading a virtual environment. This moves the actual
test commands to the Makefile. While this no longer prints custom
text, it does print the command that was run:

Before (skipping other output):

  ./scripts/run_tests.sh
  Code style check passed
  Import order check passed
  ...
  JavaScript tests have passed
  ...
  Unit tests have passed

After (skipping other output):

  flake8 .
  isort --check-only ./app ./tests
  npm test
  ...
  py.test -n auto --maxfail=10 tests/
  ...

I think it's more useful to see the command being run, rather than
having to wait until it succeeds to know what was happening. Having
the command also makes it easier to run it again if it fails, rather
than having to go and find it in a script.
This commit is contained in:
Ben Thorner
2021-05-24 15:33:35 +01:00
parent 2d2c82ca87
commit 66ffc0e29b
2 changed files with 4 additions and 38 deletions

View File

@@ -49,7 +49,10 @@ generate-version-file: ## Generates the app version file
.PHONY: test
test: ## Run tests
./scripts/run_tests.sh
flake8 .
isort --check-only ./app ./tests
npm test
py.test -n auto --maxfail=10 tests/
.PHONY: fix-imports
fix-imports:

View File

@@ -1,37 +0,0 @@
#!/bin/bash
#
# Run project tests
#
# NOTE: This script expects to be run from the project root with
# ./scripts/run_tests.sh
set -o pipefail
function display_result {
RESULT=$1
EXIT_STATUS=$2
TEST=$3
if [ $RESULT -ne 0 ]; then
echo -e "\033[31m$TEST failed\033[0m"
exit $EXIT_STATUS
else
echo -e "\033[32m$TEST passed\033[0m"
fi
}
if [[ -z "$VIRTUAL_ENV" ]] && [[ -d venv ]]; then
source ./venv/bin/activate
fi
flake8 .
display_result $? 1 "Code style check"
isort --check-only ./app ./tests
display_result $? 2 "Import order check"
npm test
display_result $? 3 "Javascript tests have"
py.test -n auto --maxfail=10 tests/
display_result $? 4 "Unit tests have"