taskflow/run_tests.sh
Joshua Harlow d58427d317 Switch to just using tox
Instead of requiring all the complicated
venv management logic that tox already provides
just use tox directly instead. This maps more
closely to what jenkins does, and how most other
python development occurs (which does not typically
rely on custom venv scripts).

Change-Id: Iff6cf0a7eb24ddd2ef65ddd723d0e4cb803b9bb9
2014-01-02 10:38:15 -08:00

89 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
function usage {
echo "Usage: $0 [OPTION]..."
echo "Run Taskflow's test suite(s)"
echo ""
echo " -f, --force Force a clean re-build of the virtual environment. Useful when dependencies have been added."
echo " -p, --pep8 Just run pep8"
echo " -P, --no-pep8 Don't run static code checks"
echo " -v, --verbose Increase verbosity of reporting output"
echo " -h, --help Print this usage message"
echo ""
exit
}
function process_option {
case "$1" in
-h|--help) usage;;
-p|--pep8) let just_pep8=1;;
-P|--no-pep8) let no_pep8=1;;
-f|--force) let force=1;;
-v|--verbose) let verbose=1;;
*) pos_args="$pos_args $1"
esac
}
verbose=0
force=0
pos_args=""
just_pep8=0
no_pep8=0
tox_args=""
tox=""
for arg in "$@"; do
process_option $arg
done
py=`which python`
if [ -z "$py" ]; then
echo "Python is required to use $0"
echo "Please install it via your distributions package management system."
exit 1
fi
py_envs=`python -c 'import sys; print("py%s%s" % (sys.version_info[0:2]))'`
py_envs=${PY_ENVS:-$py_envs}
function run_tests {
local tox_cmd="${tox} ${tox_args} -e $py_envs ${pos_args}"
echo "Running tests for environments $py_envs via $tox_cmd"
bash -c "$tox_cmd"
}
function run_flake8 {
local tox_cmd="${tox} ${tox_args} -e pep8 ${pos_args}"
echo "Running flake8 via $tox_cmd"
bash -c "$tox_cmd"
}
if [ $force -eq 1 ]; then
tox_args="$tox_args -r"
fi
if [ $verbose -eq 1 ]; then
tox_args="$tox_args -v"
fi
tox=`which tox`
if [ -z "$tox" ]; then
echo "Tox is required to use $0"
echo "Please install it via \`pip\` or via your distributions" \
"package management system."
echo "Visit http://tox.readthedocs.org/ for additional installation" \
"instructions."
exit 1
fi
if [ $just_pep8 -eq 1 ]; then
run_flake8
exit
fi
run_tests || exit
if [ $no_pep8 -eq 0 ]; then
run_flake8
fi