#!/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 "${CONTINUOUS_INTEGRATION-}" ]] && [[ -t 1 ]] ; then
	flag_forked=""
fi
test_flags=(
	$@
	$flag_forked
	tests/
)

main() {
	cd "$( dirname "${BASH_SOURCE[0]}" )/.."
	if [[ -n "${CONTINUOUS_INTEGRATION-}" ]] ; then
		case "${test_group-}" in
		pep8)
			if [[ "${TRAVIS_PYTHON_VERSION}" = "2.7" ]] ; then
				flake8 python2/
			else
				flake8 python3/ tests/
			fi
			;;
		package)
			# TODO: sdist bdist_wheel
			# but wheels don't roll well with our 2/3 split code base
			python setup.py sdist
			install_check_version "pip"
			;;
		*)
			pip install -e .
			httplib2_test_still_run_skipped=1 pytest --fulltrace -k test_303 $@ tests/ || true
			httplib2_test_still_run_skipped=1 pytest --fulltrace -k test_head_301 $@ tests/ || true
			pytest --fulltrace ${test_flags[@]}
			;;
		esac
	else
		if [[ ! -d ./venv-27 ]] ; then
			virtualenv --python=python2.7 ./venv-27
		fi
		if [[ ! -d ./venv-36 ]] ; then
			virtualenv --python=python3.6 ./venv-36
		fi

		./venv-27/bin/pip install -e . -r requirements-test.txt
		./venv-27/bin/pytest ${test_flags[@]}
		./venv-36/bin/pip install -e . -r requirements-test.txt
		./venv-36/bin/pytest ${test_flags[@]}

		# FIXME: too many errors
		# ./venv-27/bin/flake8 python2/
		# ./venv-36/bin/flake8 python3/ tests/

		# TODO: sdist bdist_wheel
		# but wheels don't roll well with our 2/3 split code base
		./venv-36/bin/python setup.py sdist
		install_check_version "./venv-27/bin/pip"
		install_check_version "./venv-36/bin/pip"
	fi
	rm -rf ./_httplib2_test_cache
}

install_check_version() {
	local pip="$1"
	$pip install dist/httplib2*
	version_source=$(cd python3 ; python3 -Es -c 'import httplib2;print(httplib2.__version__)')
	version_installed=$($pip show httplib2 |fgrep Version |cut -d' ' -f2)
	if [[ "$version_source" != "$version_installed" ]] ; then
		echo "error: installed package version=$version_installed does not match source=$version_source" >&2
		exit 1
	fi
}

main "$@"
