blob: 166443410d581a5262bc9d34f76e6e71385e7d09 [file] [log] [blame] [edit]
#!/bin/bash
set -eux
# By default, run tests with pytest-forked plugin,
# disable in terminal for debugging, you may add --forked
flag_forked="--forked"
if [[ -z "${CI:-}" ]] && [[ -t 1 ]] ; then
flag_forked=""
fi
test_flags=(
$@
"$flag_forked"
tests/
)
if [[ -n "${CI:-}" ]] ; then
test_flags+=(--fulltrace)
fi
: "${stages="venv,style,test,check_version"}"
main() {
cd "$( dirname "${BASH_SOURCE[0]}" )/.."
if enabled venv && [[ -z "${CI:-}${VIRTUAL_ENV:-}" ]] ; then
echo "environment: neither CI nor existing virtualenv, using \`python -m venv ./venv\`" >&2
[[ -x venv/bin/pip ]] || python -m venv venv
source venv/bin/activate
fi
if enabled style ; then
pip install black isort -r requirements-test.txt
# TODO enable after initial black/isort run
# isort httplib2/ tests/
# black httplib2/ tests/
flake8 httplib2/ tests/
fi
if enabled test ; then
pip install -e . -r requirements-test.txt
pytest --fulltrace "${test_flags[@]}"
fi
if enabled check_version ; then
rm -f dist/*.gz
pip install setuptools
python setup.py sdist bdist_wheel
install_check_version
fi
rm -rf ./_httplib2_test_cache
}
enabled() {
[[ ",${stages}," = *,$1,* ]] || return 1
}
install_check_version() {
version_source=$(python setup.py --version)
pip install "dist/httplib2-${version_source}-py3-none-any.whl"
version_installed=$(pip show httplib2 |grep -F Version: |cut -d' ' -f2)
if [[ "$version_source" != "$version_installed" ]] ; then
echo "error: installed package version=$version_installed does not match source=$version_source" >&2
return 1
fi
}
main "$@"