d58427d317
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
89 lines
1.9 KiB
Bash
Executable File
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
|