From c441c8f619bca009b68e68f23652ac47afe8c195 Mon Sep 17 00:00:00 2001 From: mattsb42-aws Date: Thu, 30 Aug 2018 12:41:55 -0700 Subject: [PATCH 1/2] Add: * upstream requirements freeze testenvs * frozen upstream requirements * upstream requirements tests --- .travis.yml | 18 +++++++++++ test/freeze-upstream-requirements.sh | 10 ++++++ test/upstream-requirements-py27.txt | 31 ++++++++++++++++++ test/upstream-requirements-py37.txt | 25 +++++++++++++++ tox.ini | 48 ++++++++++++++++++++++++++++ 5 files changed, 132 insertions(+) create mode 100755 test/freeze-upstream-requirements.sh create mode 100644 test/upstream-requirements-py27.txt create mode 100644 test/upstream-requirements-py37.txt diff --git a/.travis.yml b/.travis.yml index c36176120..a68fd7674 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ sudo: false language: python matrix: include: + # CPython 2.7 - python: 2.7 env: TOXENV=py27-local - python: 2.7 @@ -10,6 +11,7 @@ matrix: env: TOXENV=py27-accept - python: 2.7 env: TOXENV=py27-examples + # CPython 3.4 - python: 3.4 env: TOXENV=py34-local - python: 3.4 @@ -18,6 +20,7 @@ matrix: env: TOXENV=py34-accept - python: 3.4 env: TOXENV=py34-examples + # CPython 3.5 - python: 3.5 env: TOXENV=py35-local - python: 3.5 @@ -26,6 +29,7 @@ matrix: env: TOXENV=py35-accept - python: 3.5 env: TOXENV=py35-examples + # CPython 3.6 - python: 3.6 env: TOXENV=py36-local - python: 3.6 @@ -34,6 +38,9 @@ matrix: env: TOXENV=py36-accept - python: 3.6 env: TOXENV=py36-examples + # CPython 3.7 + # xenial + sudo are currently needed to get 3.7 + # https://github.com/travis-ci/travis-ci/issues/9815 - python: 3.7 env: TOXENV=py37-local dist: xenial @@ -50,10 +57,21 @@ matrix: env: TOXENV=py37-examples dist: xenial sudo: true + # Upstream tests - python: 3.6 env: TOXENV=nocmk + - python: 2.7 + env: TOXENV=test-upstream-requirements-py27 + # xenial + sudo are currently needed to get 3.7 + # https://github.com/travis-ci/travis-ci/issues/9815 + - python: 3.7 + env: TOXENV=test-upstream-requirements-py37 + dist: xenial + sudo: true + # Security - python: 3.6 env: TOXENV=bandit + # Linting and autoformatting - python: 3.6 env: TOXENV=doc8 - python: 3.6 diff --git a/test/freeze-upstream-requirements.sh b/test/freeze-upstream-requirements.sh new file mode 100755 index 000000000..293ae16d7 --- /dev/null +++ b/test/freeze-upstream-requirements.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# Minimal wrapper script for upstream requirements install and freeze. +# We do this here rather than as tox commands because tox does not support output redirection. +if [ -z ${1} ]; then + exit 1 +fi + +pip install -r requirements.txt +pip install -r test/requirements.txt +pip freeze > ${1} diff --git a/test/upstream-requirements-py27.txt b/test/upstream-requirements-py27.txt new file mode 100644 index 000000000..adcd138fc --- /dev/null +++ b/test/upstream-requirements-py27.txt @@ -0,0 +1,31 @@ +asn1crypto==0.24.0 +atomicwrites==1.2.1 +attrs==18.1.0 +boto3==1.8.4 +botocore==1.11.4 +cffi==1.11.5 +coverage==4.5.1 +cryptography==2.3.1 +docutils==0.14 +enum34==1.1.6 +funcsigs==1.0.2 +futures==3.2.0 +idna==2.7 +ipaddress==1.0.22 +jmespath==0.9.3 +mock==2.0.0 +more-itertools==4.3.0 +pathlib2==2.3.2 +pbr==4.2.0 +pluggy==0.7.1 +py==1.6.0 +pycparser==2.18 +pytest==3.7.4 +pytest-cov==2.5.1 +pytest-mock==1.10.0 +python-dateutil==2.7.3 +s3transfer==0.1.13 +scandir==1.9.0 +six==1.11.0 +urllib3==1.23 +wrapt==1.10.11 diff --git a/test/upstream-requirements-py37.txt b/test/upstream-requirements-py37.txt new file mode 100644 index 000000000..1c5ed25fe --- /dev/null +++ b/test/upstream-requirements-py37.txt @@ -0,0 +1,25 @@ +asn1crypto==0.24.0 +atomicwrites==1.2.1 +attrs==18.1.0 +boto3==1.8.4 +botocore==1.11.4 +cffi==1.11.5 +coverage==4.5.1 +cryptography==2.3.1 +docutils==0.14 +idna==2.7 +jmespath==0.9.3 +mock==2.0.0 +more-itertools==4.3.0 +pbr==4.2.0 +pluggy==0.7.1 +py==1.6.0 +pycparser==2.18 +pytest==3.7.4 +pytest-cov==2.5.1 +pytest-mock==1.10.0 +python-dateutil==2.7.3 +s3transfer==0.1.13 +six==1.11.0 +urllib3==1.23 +wrapt==1.10.11 diff --git a/tox.ini b/tox.ini index 34cd71015..f14ca897b 100644 --- a/tox.ini +++ b/tox.ini @@ -62,6 +62,54 @@ sitepackages = False deps = -rtest/requirements.txt commands = {[testenv:base-command]commands} test/ -m local +# Collect requirements for use in upstream tests +[testenv:freeze-upstream-requirements-base] +sitepackages = False +skip_install = True +recreate = True +deps = +commands = {toxinidir}/test/freeze-upstream-requirements.sh + +# Freeze for Python 2.7 +[testenv:freeze-upstream-requirements-py27] +basepython = python2.7 +sitepackages = {[testenv:freeze-upstream-requirements-base]sitepackages} +skip_install = {[testenv:freeze-upstream-requirements-base]skip_install} +recreate = {[testenv:freeze-upstream-requirements-base]recreate} +deps = {[testenv:freeze-upstream-requirements-base]deps} +commands = {[testenv:freeze-upstream-requirements-base]commands} test/upstream-requirements-py27.txt + +# Freeze for Python 3.7 +[testenv:freeze-upstream-requirements-py37] +basepython = python3.7 +sitepackages = {[testenv:freeze-upstream-requirements-base]sitepackages} +skip_install = {[testenv:freeze-upstream-requirements-base]skip_install} +recreate = {[testenv:freeze-upstream-requirements-base]recreate} +deps = {[testenv:freeze-upstream-requirements-base]deps} +commands = {[testenv:freeze-upstream-requirements-base]commands} test/upstream-requirements-py37.txt + +# Test frozen upstream requirements +[testenv:test-upstream-requirements-base] +sitepackages = False +recreate = True +commands = {[testenv:base-command]commands} -m local + +# Test frozen upstream requirements for Python 2.7 +[testenv:test-upstream-requirements-py27] +basepython = python2.7 +deps = -rtest/upstream-requirements-py27.txt +sitepackages = {[testenv:test-upstream-requirements-base]sitepackages} +recreate = {[testenv:test-upstream-requirements-base]recreate} +commands = {[testenv:test-upstream-requirements-base]commands} + +# Test frozen upstream requirements for Python 3.7 +[testenv:test-upstream-requirements-py37] +basepython = python3.7 +deps = -rtest/upstream-requirements-py37.txt +sitepackages = {[testenv:test-upstream-requirements-base]sitepackages} +recreate = {[testenv:test-upstream-requirements-base]recreate} +commands = {[testenv:test-upstream-requirements-base]commands} + # Linters [testenv:flake8] basepython = python3 From bc5769bb016f727570cbd73d3ba90b8a3cd15daf Mon Sep 17 00:00:00 2001 From: mattsb42-aws Date: Thu, 30 Aug 2018 12:58:37 -0700 Subject: [PATCH 2/2] fix upstream checks to explicitly identify the test directory --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index f14ca897b..04a6b6039 100644 --- a/tox.ini +++ b/tox.ini @@ -92,7 +92,7 @@ commands = {[testenv:freeze-upstream-requirements-base]commands} test/upstream-r [testenv:test-upstream-requirements-base] sitepackages = False recreate = True -commands = {[testenv:base-command]commands} -m local +commands = {[testenv:base-command]commands} test/ -m local # Test frozen upstream requirements for Python 2.7 [testenv:test-upstream-requirements-py27]