generated from daniil-berg/boilerplate-py
18 lines
750 B
Bash
18 lines
750 B
Bash
|
#!/usr/bin/env bash
|
||
|
# Runs unit tests and prints only coverage percentage, if successful.
|
||
|
# If an error occurs, prints the entire unit tests progress output.
|
||
|
|
||
|
# Ensure that we return to the current working directory in case of an error:
|
||
|
trap "cd $(realpath ${PWD})" ERR
|
||
|
# Change into project root directory:
|
||
|
cd "$(dirname $(dirname $(realpath $0)))"
|
||
|
|
||
|
coverage erase
|
||
|
# Capture the test progression in a variable:
|
||
|
typeset progress
|
||
|
progress=$(coverage run 2>&1)
|
||
|
# If tests failed or produced errors, write progress/messages to stderr and exit:
|
||
|
[[ $? -eq 0 ]] || { >&2 echo "${progress}"; exit 1; }
|
||
|
# Otherwise extract the total coverage percentage from the produced report and write it to stdout:
|
||
|
coverage report | awk '$1 == "TOTAL" {print $NF; exit}'
|