Add ability to test with specific Python versions
This commit is contained in:
parent
30dc7d5788
commit
5babc8f562
4 changed files with 47 additions and 2 deletions
|
@ -17,6 +17,9 @@ started by running `vagrant up`.
|
||||||
The test suite can be run by running `./test`. Selected tests can be run by
|
The test suite can be run by running `./test`. Selected tests can be run by
|
||||||
passing paths to the tests as arguments to `./test`.
|
passing paths to the tests as arguments to `./test`.
|
||||||
|
|
||||||
|
Tests can be run with a specific Python version by running `./test --version
|
||||||
|
<version>` - for example, `./test --version 3.4.3`.
|
||||||
|
|
||||||
When finished with testing, it is good to shut down the virtual machine by
|
When finished with testing, it is good to shut down the virtual machine by
|
||||||
running `vagrant halt`.
|
running `vagrant halt`.
|
||||||
|
|
||||||
|
|
16
test/Vagrantfile
vendored
16
test/Vagrantfile
vendored
|
@ -7,4 +7,20 @@ Vagrant.configure(2) do |config|
|
||||||
|
|
||||||
# disable default synced folder
|
# disable default synced folder
|
||||||
config.vm.synced_folder ".", "/vagrant", disabled: true
|
config.vm.synced_folder ".", "/vagrant", disabled: true
|
||||||
|
|
||||||
|
# install packages
|
||||||
|
config.vm.provision "shell", inline: <<-EOS
|
||||||
|
apt-get -y update
|
||||||
|
apt-get install -y git make build-essential libssl-dev zlib1g-dev \
|
||||||
|
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
|
||||||
|
libncurses5-dev
|
||||||
|
EOS
|
||||||
|
|
||||||
|
# install pyenv
|
||||||
|
config.vm.provision "shell", privileged: false, inline: <<-EOS
|
||||||
|
rm -rf ~/.pyenv
|
||||||
|
git clone git://github.com/yyuu/pyenv.git ~/.pyenv
|
||||||
|
echo 'export PATH="$HOME/.pyenv/bin:$PATH"\neval "$(pyenv init -)"' \
|
||||||
|
> ~/.bashrc
|
||||||
|
EOS
|
||||||
end
|
end
|
||||||
|
|
|
@ -65,6 +65,14 @@ rollback() {
|
||||||
initialize() {
|
initialize() {
|
||||||
echo "initializing."
|
echo "initializing."
|
||||||
vagrant sandbox on >/dev/null 2>&1
|
vagrant sandbox on >/dev/null 2>&1
|
||||||
|
if ! vagrant ssh -c "pyenv local ${2}" >/dev/null 2>&1; then
|
||||||
|
wait_for_vagrant && vagrant sandbox rollback >/dev/null 2>&1
|
||||||
|
wait_for_vagrant
|
||||||
|
if ! vagrant ssh -c "pyenv install -s ${2} && pyenv local ${2}" >/dev/null 2>&1; then
|
||||||
|
die "could not install python ${2}"
|
||||||
|
fi
|
||||||
|
vagrant sandbox commit >/dev/null 2>&1
|
||||||
|
fi
|
||||||
tests_run=0
|
tests_run=0
|
||||||
tests_passed=0
|
tests_passed=0
|
||||||
tests_failed=0
|
tests_failed=0
|
||||||
|
@ -89,6 +97,7 @@ run_test() {
|
||||||
tests_run=$((tests_run + 1))
|
tests_run=$((tests_run + 1))
|
||||||
printf '[%d/%d] (%s)\n' "${tests_run}" "${tests_total}" "${1}"
|
printf '[%d/%d] (%s)\n' "${tests_run}" "${tests_total}" "${1}"
|
||||||
rollback || die "unable to rollback vm." # start with a clean slate
|
rollback || die "unable to rollback vm." # start with a clean slate
|
||||||
|
vagrant ssh -c "pyenv local ${2}" >/dev/null 2>&1
|
||||||
if vagrant ssh -c "cd /dotbot/test/tests && bash ${1}" 2>/dev/null; then
|
if vagrant ssh -c "cd /dotbot/test/tests && bash ${1}" 2>/dev/null; then
|
||||||
pass
|
pass
|
||||||
else
|
else
|
||||||
|
|
21
test/test
21
test/test
|
@ -9,6 +9,23 @@ start="$(date +%s)"
|
||||||
|
|
||||||
check_prereqs || die "prerequisites unsatsfied."
|
check_prereqs || die "prerequisites unsatsfied."
|
||||||
|
|
||||||
|
# command line options
|
||||||
|
while [[ $# > 1 ]]
|
||||||
|
do
|
||||||
|
key="${1}"
|
||||||
|
case $key in
|
||||||
|
-v|--version)
|
||||||
|
VERSION="${2}"
|
||||||
|
shift && shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# unknown option
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
VERSION="${VERSION:-2.7.9}"
|
||||||
|
|
||||||
declare -a tests=()
|
declare -a tests=()
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
|
@ -19,10 +36,10 @@ else
|
||||||
tests=("$@")
|
tests=("$@")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
initialize "${#tests[@]}"
|
initialize "${#tests[@]}" "${VERSION}"
|
||||||
|
|
||||||
for file in "${tests[@]}"; do
|
for file in "${tests[@]}"; do
|
||||||
run_test "$(basename "${file}")"
|
run_test "$(basename "${file}")" "${VERSION}"
|
||||||
done
|
done
|
||||||
|
|
||||||
if report; then
|
if report; then
|
||||||
|
|
Loading…
Reference in a new issue