From 26b0e8fada326aa0a48c2ed2fa9630563a6cfaa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 24 May 2017 11:22:46 -0700 Subject: [PATCH 01/15] tox cleanups from unjank-request branch --- .coveragerc | 13 ++- .travis.yml | 119 +++++++++++++-------------- .travis/install | 29 +++++++ .travis/mypy | 36 +++++++++ .travis/run | 15 ++++ tox.ini | 211 +++++++++++++++++++++++++++++++++++++++++------- 6 files changed, 325 insertions(+), 98 deletions(-) create mode 100755 .travis/install create mode 100755 .travis/mypy create mode 100755 .travis/run diff --git a/.coveragerc b/.coveragerc index 9756cea25..f2654f640 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,11 +1,8 @@ [run] -source = - klein branch = True +source = klein - -[paths] -source = - src/ - .tox/*/lib/python*/site-packages/ - .tox/pypy*/site-packages/ +[report] +fail_under = 100 +precision = 2 +show_missing = True diff --git a/.travis.yml b/.travis.yml index a09062afa..d3e3f4102 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,10 @@ -language: python +dist: trusty sudo: false +language: python + + branches: only: - master @@ -21,91 +24,81 @@ branches: # matrix: include: - - python: pypy - env: TOX_ENV=trial-pypy-tw130 - - python: pypy - env: TOX_ENV=trial-pypy-tw140 - - python: pypy - env: TOX_ENV=trial-pypy-tw150 - - python: pypy - env: TOX_ENV=trial-pypy-tw160 - - python: pypy - env: TOX_ENV=trial-pypy-twcurrent - - python: pypy - env: TOX_ENV=trial-pypy-twtrunk + - python: 3.5 + env: TOXENV=coverage-py35-twtrunk + - python: 3.5 + env: TOXENV=coverage-py35-twcurrent + - python: 3.5 + env: TOXENV=coverage-py35-tw160 + - python: 3.5 + env: TOXENV=coverage-py35-tw155 - - python: 2.7 - env: TOX_ENV=trial-py27-tw130 - - python: 2.7 - env: TOX_ENV=trial-py27-tw140 - - python: 2.7 - env: TOX_ENV=trial-py27-tw150 - - python: 2.7 - env: TOX_ENV=trial-py27-tw160 - - python: 2.7 - env: TOX_ENV=trial-py27-twcurrent - - python: 2.7 - env: TOX_ENV=trial-py27-twtrunk + - python: 3.4 + env: TOXENV=coverage-py34-twtrunk + - python: 3.4 + env: TOXENV=coverage-py34-twcurrent + - python: 3.4 + env: TOXENV=coverage-py34-tw160 + - python: 3.4 + env: TOXENV=coverage-py34-tw155 - python: 3.3 - env: TOX_ENV=trial-py33-tw155 + env: TOXENV=coverage-py33-twtrunk - python: 3.3 - env: TOX_ENV=trial-py33-tw160 + env: TOXENV=coverage-py33-twcurrent - python: 3.3 - env: TOX_ENV=trial-py33-twcurrent + env: TOXENV=coverage-py33-tw160 - python: 3.3 - env: TOX_ENV=trial-py33-twtrunk + env: TOXENV=coverage-py33-tw155 - - python: 3.4 - env: TOX_ENV=trial-py34-tw155 - - python: 3.4 - env: TOX_ENV=trial-py34-tw160 - - python: 3.4 - env: TOX_ENV=trial-py34-twcurrent - - python: 3.4 - env: TOX_ENV=trial-py34-twtrunk + - python: 2.7 + env: TOXENV=coverage-py27-twtrunk + - python: 2.7 + env: TOXENV=coverage-py27-twcurrent + - python: 2.7 + env: TOXENV=coverage-py27-tw160 + - python: 2.7 + env: TOXENV=coverage-py27-tw150 + - python: 2.7 + env: TOXENV=coverage-py27-tw140 + - python: 2.7 + env: TOXENV=coverage-py27-tw130 - - python: 3.5 - env: TOX_ENV=trial-py35-tw155 - - python: 3.5 - env: TOX_ENV=trial-py35-tw160 - - python: 3.5 - env: TOX_ENV=trial-py35-twcurrent - - python: 3.5 - env: TOX_ENV=trial-py35-twtrunk + # PyPy (Python 2.7) + - env: TOXENV=coverage-pypy-twtrunk PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-twcurrent PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw160 PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw150 PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw140 PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw130 PYPY_VERSION=5.7.1 - python: 3.5 - env: TOX_ENV=flake8 + env: TOXENV=flake8 - python: 2.7 - env: TOX_ENV=twistedchecker-diff + env: TOXENV=twistedchecker-diff - python: 2.7 - env: TOX_ENV=docs + env: TOXENV=docs - python: 2.7 - env: TOX_ENV=docs-linkcheck + env: TOXENV=docs-linkcheck allow_failures: # Tests against Twisted trunk are allow to fail, as they are not supported. - - env: TOX_ENV=trial-py27-twtrunk - - env: TOX_ENV=trial-py33-twtrunk - - env: TOX_ENV=trial-py34-twtrunk - - env: TOX_ENV=trial-py35-twtrunk - - env: TOX_ENV=trial-pypy-twtrunk + - env: TOXENV=coverage-py35-twtrunk + - env: TOXENV=coverage-py34-twtrunk + - env: TOXENV=coverage-py33-twtrunk + - env: TOXENV=coverage-py27-twtrunk + - env: TOXENV=coverage-pypy-twtrunk # This is not yet required. - - env: TOX_ENV=twistedchecker-diff + - env: TOXENV=twistedchecker-diff # This depends on external web sites, so it's allowed to fail. - - env: TOX_ENV=docs-linkcheck + - env: TOXENV=docs-linkcheck install: - - pip install tox coverage codecov + - ./.travis/install script: - - tox -e "${TOX_ENV}" - - -after_success: - - coverage combine - - codecov + - ./.travis/run tox diff --git a/.travis/install b/.travis/install new file mode 100755 index 000000000..d47c8e0e8 --- /dev/null +++ b/.travis/install @@ -0,0 +1,29 @@ +#!/bin/sh + +set -e +set -u + +case "${TOXENV}" in + *-pypy*) + echo "Installing pyenv..." + + PYENV_ROOT="${HOME}/.pyenv"; + rm -rf "${PYENV_ROOT}"; + git clone "https://github.com/pyenv/pyenv" "${PYENV_ROOT}"; + + pyenv="${PYENV_ROOT}/bin/pyenv"; + + set +e + set +u + eval "$("${pyenv}" init -)"; + set -e + set -u + + echo "Installing PyPy..." + + "${pyenv}" install "pypy-${PYPY_VERSION}"; + "${pyenv}" global "pypy-${PYPY_VERSION}"; + ;; +esac; + +pip install tox coverage codecov; diff --git a/.travis/mypy b/.travis/mypy new file mode 100755 index 000000000..d3b9290b3 --- /dev/null +++ b/.travis/mypy @@ -0,0 +1,36 @@ +#!/bin/sh + +# +# Work around bugs in mypy by filtering out false positive error messages. +# + +set -e +set -u + +tmp="$(mktemp -t mypy.XXXX)"; + +mypy "$@" \ + | grep -v \ + -e '^src/klein/_decorators.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/_plating.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/app.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/app.py:.[0-9:]*: error: All conditional function variants must have identical signatures' \ + -e '^src/klein/app.py:.[0-9:]*: error: Need type annotation for variable' \ + -e '^src/klein/interfaces.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/resource.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/test/py3_test_resource.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/test/_trial.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/test/test_app.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/test/test_plating.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/test/test_resource.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/test/test_resource.py:.[0-9:]*: error: .* has no attribute' \ + -e '^src/klein/test/util.py:.[0-9:]*: error: Function is missing a type annotation' \ + -e '^src/klein/test/util.py:.[0-9:]*: error: Name .* already defined' \ + -e ': error: Callable\[\[[^\]*\], None\] has no attribute "todo"' \ + > "${tmp}" || true; + +sort < "${tmp}"; + +if grep -e ": error: " "${tmp}" > /dev/null; then + exit 1; +fi; diff --git a/.travis/run b/.travis/run new file mode 100755 index 000000000..2e5a74bb6 --- /dev/null +++ b/.travis/run @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e +set -u +set -x + +case "${TOXENV}" in + *-pypy*) + PYENV_ROOT="${HOME}/.pyenv"; + pyenv="${PYENV_ROOT}/bin/pyenv"; + eval "$("${pyenv}" init -)"; + ;; +esac; + +exec "$@"; diff --git a/tox.ini b/tox.ini index 4e8dce441..4f7dea066 100644 --- a/tox.ini +++ b/tox.ini @@ -1,37 +1,37 @@ [tox] envlist = - flake8, twistedchecker-diff - - # Twisted 13-14 require Python 2. - trial-py{27,py}-tw{130,140} + flake8, mypy # Twisted 15.5 is the first version to support Python 3 (3.3+) - trial-py{27,py,33,34,35,36}-tw{155,166,current,trunk} + {coverage,test}-py{36,35,34,33,27,py}-tw{current,170,160,150,trunk} + + # Twisted 13-14 require Python 2. + {coverage,test}-py{27,py}-tw{140,130} docs, docs-linkcheck -skip_missing_interpreters = True ## -# Default testenv +# Build (default environment) ## [testenv] + basepython = - pypy: pypy py27: python2.7 + py33: python3.3 py34: python3.4 py35: python3.5 py36: python3.6 -deps = - coverage - mock + pypy: pypy + +deps = tw130: Twisted==13.0 tw131: Twisted==13.1 tw132: Twisted==13.2 @@ -52,17 +52,68 @@ deps = twcurrent: Twisted twtrunk: https://github.com/twisted/twisted/archive/trunk.zip + {test,coverage}: hypothesis + {test,coverage}: mock + + coverage: coverage + + +whitelist_externals = + coverage: cp + coverage: mkdir + + +passenv = + PATH + LANG + PYTHON_* + CI CONTINUOUS_INTEGRATION TRAVIS TRAVIS_* + _system_* + CODECOV_OPTIONS + + +setenv = + PIP_DISABLE_PIP_VERSION_CHECK=1 + VIRTUAL_ENV_DISABLE_PROMPT=true + GIT_ASKPASS=echo + HYPOTHESIS_VERBOSITY_LEVEL=normal + + coverage: COVERAGE_FILE={toxworkdir}/coverage/coverage.{envname} + {coverage_combine,codecov}: COVERAGE_FILE={toxworkdir}/coverage/coverage + + {coverage,coverage_combine}: COVERAGE_HTML={envlogdir}/coverage_report_html + {coverage,coverage_combine,codecov}: COVERAGE_XML={envlogdir}/coverage_report.xml + + coverage: COVERAGE_PROCESS_START={toxinidir}/.coveragerc + + commands = - {toxinidir}/.travis/environment - coverage run -p "{envdir}/bin/trial" {posargs:klein} + "{toxinidir}/.travis/environment" + + # Run trial without coverage + test: trial --random=0 --logfile="{envlogdir}/trial.log" --temp-directory="{envlogdir}/trial.d" {posargs:klein} + + coverage: mkdir -p "{toxworkdir}/coverage" + coverage: coverage run --rcfile="{toxinidir}/.coveragerc" "{envdir}/bin/trial" --random=0 --logfile="{envlogdir}/trial.log" --temp-directory="{envlogdir}/trial.d" {posargs:klein} + + # Copy aside coverage data for each test environment in case we want to look at it later + coverage: cp "{env:COVERAGE_FILE}" "{envlogdir}/coverage" + + # Run coverage reports, ignore exit status + coverage: - coverage html --rcfile="{toxinidir}/.coveragerc" -d "{env:COVERAGE_HTML}" + coverage: - coverage xml --rcfile="{toxinidir}/.coveragerc" -o "{env:COVERAGE_XML}" + coverage: - coverage report --rcfile="{toxinidir}/.coveragerc" --skip-covered --omit "*/test/*" + ## -# Run flake8 +# Flake8 linting ## [testenv:flake8] +basepython = python3.5 + skip_install = True deps = @@ -74,23 +125,22 @@ deps = pep8-naming mccabe -basepython = python3.5 - commands = - {toxinidir}/.travis/environment + "{toxinidir}/.travis/environment" + flake8 {posargs:src/klein} [flake8] -select = B,C,E,F,I,N,S,W - disable-noqa = True show-source = True doctests = True # Codes: http://flake8.pycqa.org/en/latest/user/error-codes.html ignore = + # multiple spaces before operator + E221, # too many blank lines E302, # too many blank lines @@ -109,6 +159,47 @@ application-import-names = klein max-complexity = 21 + +## +# Mypy linting +## + +[testenv:mypy] + +basepython = python3.5 + +skip_install = True + + +deps = + mypy + + +commands = + "{toxinidir}/.travis/environment" + + "{toxinidir}/.travis/mypy" --config-file="{toxinidir}/tox.ini" {posargs:src} + + +[mypy] + +# Global settings + +warn_redundant_casts = True +warn_unused_ignores = True +strict_optional = True +show_column_numbers = True + +# Module default settings +# disallow_untyped_calls = True +disallow_untyped_defs = True +# warn_return_any = True + +# Need some stub files to get rid of this +ignore_missing_imports = True + + + ## # Run twistedchecker ## @@ -120,10 +211,12 @@ deps = twistedchecker basepython = python2.7 commands = - {toxinidir}/.travis/environment + "{toxinidir}/.travis/environment" + twistedchecker {posargs:klein} + ## # Run twistedchecker on changes relative to master ## @@ -137,38 +230,102 @@ deps = basepython = python2.7 commands = - {toxinidir}/.travis/environment + "{toxinidir}/.travis/environment" + {toxinidir}/.travis/twistedchecker-diff {posargs:klein} + +## +# Combine coverage reports +## + +[testenv:coverage_combine] + +basepython = python3.5 + +skip_install = True + +deps = coverage + + +whitelist_externals = + cp + + +commands = + "{toxinidir}/.travis/environment" + + coverage combine --append + + # Copy aside coverage data for each test environment in case we want to look at it later + cp "{env:COVERAGE_FILE}" "{envlogdir}/coverage" + + # Run coverage reports, ignore exit status + - coverage html --rcfile="{toxinidir}/.coveragerc" -d "{env:COVERAGE_HTML}" + - coverage xml --rcfile="{toxinidir}/.coveragerc" -o "{env:COVERAGE_XML}" + + # Don't ignore exit status here; this is our failure status if coverage is insufficient. + coverage report --rcfile="{toxinidir}/.coveragerc" + + + +## +# Publish to Codecov +## + +[testenv:codecov] + +basepython = python + +skip_install = True + +deps = codecov + + +commands = + "{toxinidir}/.travis/environment" + + coverage combine --append + + # Generate XML and publish to codecov.io + # Ignore errors generating coverage XML, which may be due to < 100% coverage; we still want to publish + - coverage xml --rcfile="{toxinidir}/.coveragerc" -o "{env:COVERAGE_XML}" + codecov --required --file="{env:COVERAGE_XML}" {env:CODECOV_OPTIONS:} + + + ## # Build the documentation ## [testenv:docs] +basepython = python3.5 + deps = sphinx sphinx_rtd_theme -basepython = python2.7 - commands = - {toxinidir}/.travis/environment + "{toxinidir}/.travis/environment" + sphinx-build -b html -d "{envtmpdir}/doctrees" docs docs/_build/html + ## # Check for broken links in documentation ## [testenv:docs-linkcheck] -deps = {[testenv:docs]deps} +basepython = python3.5 -basepython = python2.7 +deps = {[testenv:docs]deps} commands = - {toxinidir}/.travis/environment + "{toxinidir}/.travis/environment" + sphinx-build -b html -d "{envtmpdir}/doctrees" docs docs/_build/html sphinx-build -b linkcheck docs docs/_build/html From aa95dc79b60ecd23265bdc5261051427b92c5f0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 24 May 2017 12:19:23 -0700 Subject: [PATCH 02/15] Whoops, forgot codecov --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index d3e3f4102..e92a26b55 100644 --- a/.travis.yml +++ b/.travis.yml @@ -80,6 +80,8 @@ matrix: env: TOXENV=docs - python: 2.7 env: TOXENV=docs-linkcheck + - python: 3.5 + env: TOXENV=py35-coverage,codecov allow_failures: # Tests against Twisted trunk are allow to fail, as they are not supported. From fa32a4a6c955feb451df1b804448f2dc4c91c99b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 24 May 2017 18:02:57 -0700 Subject: [PATCH 03/15] No -x --- .travis/run | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis/run b/.travis/run index 2e5a74bb6..860cdc69d 100755 --- a/.travis/run +++ b/.travis/run @@ -2,7 +2,6 @@ set -e set -u -set -x case "${TOXENV}" in *-pypy*) From cb899d27517d57a14c248081407b1f4f7e15737c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 24 May 2017 18:05:01 -0700 Subject: [PATCH 04/15] cosmetic --- tox.ini | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tox.ini b/tox.ini index 4f7dea066..891d5a95c 100644 --- a/tox.ini +++ b/tox.ini @@ -21,12 +21,12 @@ envlist = basepython = - py27: python2.7 - - py33: python3.3 - py34: python3.4 - py35: python3.5 py36: python3.6 + py35: python3.5 + py34: python3.4 + py33: python3.3 + + py27: python2.7 pypy: pypy From c519d719b0aead26f0a02b22ab8f80b4566e7bf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 31 May 2017 10:51:14 -0700 Subject: [PATCH 05/15] sort, use root paths where appropriate --- .gitignore | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index fd7480ed0..22c0be5ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,11 @@ *.pyc -_trial_temp -build -htmlcov -.coverage -*.egg-info -.tox/ -docs/_build/ -.DS_Store -dist/ *~ +.DS_Store +.coverage.* +/.hypothesis/ +/.mypy_cache/ +/.tox/ +/docs/_build/ +/src/*.egg-info +__pycache__ +_trial_temp From 59ef2e2ed2c6387f9bf7fed1f8272f5e94f7011a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 31 May 2017 10:52:02 -0700 Subject: [PATCH 06/15] Add mypy, ignore E305 --- .travis.yml | 2 ++ .travis/mypy | 13 ++++++++++++- src/klein/test/py3_test_resource.py | 1 + tox.ini | 12 +++++++----- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index e92a26b55..49f45036c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -74,6 +74,8 @@ matrix: - python: 3.5 env: TOXENV=flake8 + - python: 3.5 + env: TOXENV=mypy - python: 2.7 env: TOXENV=twistedchecker-diff - python: 2.7 diff --git a/.travis/mypy b/.travis/mypy index d3b9290b3..c1520692b 100755 --- a/.travis/mypy +++ b/.travis/mypy @@ -26,7 +26,18 @@ mypy "$@" \ -e '^src/klein/test/test_resource.py:.[0-9:]*: error: .* has no attribute' \ -e '^src/klein/test/util.py:.[0-9:]*: error: Function is missing a type annotation' \ -e '^src/klein/test/util.py:.[0-9:]*: error: Name .* already defined' \ - -e ': error: Callable\[\[[^\]*\], None\] has no attribute "todo"' \ + -e '^src/klein/_headers.py:.[0-9:]*: error: Incompatible types in assignment (expression has type "str", variable has type "bytes")' \ + -e '^src/klein/test/test_headers.py:.[0-9:]*: error: '\''builtins.object'\'' object is not iterable' \ + -e ': error: Unexpected keyword argument "[^"]*" for "FrozenHTTPHeaders"' \ + -e ': error: Unexpected keyword argument "[^"]*" for "FrozenHTTPRequest"' \ + -e ': error: Unexpected keyword argument "[^"]*" for "HTTPHeadersFromHeaders"' \ + -e ': error: Unexpected keyword argument "[^"]*" for "HTTPRequestFromIRequest"' \ + -e ': error: Unexpected keyword argument "[^"]*" for "IOFount"' \ + -e ': error: Unexpected keyword argument "[^"]*" for "MutableHTTPHeaders"' \ + -e ': error: Incompatible return value type (got "[^"]*", expected "I[^"]*")' \ + -e ': error: Method must have at least one argument' \ + -e ': error: Callable\[\[[^]]*\], [^]]*\] has no attribute "todo"' \ + -e ': error: Generator has incompatible item type' \ > "${tmp}" || true; sort < "${tmp}"; diff --git a/src/klein/test/py3_test_resource.py b/src/klein/test/py3_test_resource.py index 58f3ffa34..b6adce1be 100644 --- a/src/klein/test/py3_test_resource.py +++ b/src/klein/test/py3_test_resource.py @@ -7,6 +7,7 @@ from .test_resource import LeafResource, _render, requestMock + class PY3KleinResourceTests(TestCase): def assertFired(self, deferred, result=None): diff --git a/tox.ini b/tox.ini index 891d5a95c..522004b39 100644 --- a/tox.ini +++ b/tox.ini @@ -21,13 +21,13 @@ envlist = basepython = - py36: python3.6 - py35: python3.5 - py34: python3.4 - py33: python3.3 - py27: python2.7 + py33: python3.3 + py34: python3.4 + py35: python3.5 + py36: python3.6 + pypy: pypy @@ -145,6 +145,8 @@ ignore = E302, # too many blank lines E303, + # expected 2 blank lines after class or function definition + E305, # function name should be lowercase N802, # argument name should be lowercase From 83658a7c15df9d42fff437516aee0f3fadef6cbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 31 May 2017 11:24:13 -0700 Subject: [PATCH 07/15] Upload to codecov after each coverage run --- .travis.yml | 50 ++++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/.travis.yml b/.travis.yml index 49f45036c..4c4e35e0b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,52 +25,52 @@ branches: matrix: include: - python: 3.5 - env: TOXENV=coverage-py35-twtrunk + env: TOXENV=coverage-py35-twtrunk,codecov - python: 3.5 - env: TOXENV=coverage-py35-twcurrent + env: TOXENV=coverage-py35-twcurrent,codecov - python: 3.5 - env: TOXENV=coverage-py35-tw160 + env: TOXENV=coverage-py35-tw160,codecov - python: 3.5 - env: TOXENV=coverage-py35-tw155 + env: TOXENV=coverage-py35-tw155,codecov - python: 3.4 - env: TOXENV=coverage-py34-twtrunk + env: TOXENV=coverage-py34-twtrunk,codecov - python: 3.4 - env: TOXENV=coverage-py34-twcurrent + env: TOXENV=coverage-py34-twcurrent,codecov - python: 3.4 - env: TOXENV=coverage-py34-tw160 + env: TOXENV=coverage-py34-tw160,codecov - python: 3.4 - env: TOXENV=coverage-py34-tw155 + env: TOXENV=coverage-py34-tw155,codecov - python: 3.3 - env: TOXENV=coverage-py33-twtrunk + env: TOXENV=coverage-py33-twtrunk,codecov - python: 3.3 - env: TOXENV=coverage-py33-twcurrent + env: TOXENV=coverage-py33-twcurrent,codecov - python: 3.3 - env: TOXENV=coverage-py33-tw160 + env: TOXENV=coverage-py33-tw160,codecov - python: 3.3 - env: TOXENV=coverage-py33-tw155 + env: TOXENV=coverage-py33-tw155,codecov - python: 2.7 - env: TOXENV=coverage-py27-twtrunk + env: TOXENV=coverage-py27-twtrunk,codecov - python: 2.7 - env: TOXENV=coverage-py27-twcurrent + env: TOXENV=coverage-py27-twcurrent,codecov - python: 2.7 - env: TOXENV=coverage-py27-tw160 + env: TOXENV=coverage-py27-tw160,codecov - python: 2.7 - env: TOXENV=coverage-py27-tw150 + env: TOXENV=coverage-py27-tw150,codecov - python: 2.7 - env: TOXENV=coverage-py27-tw140 + env: TOXENV=coverage-py27-tw140,codecov - python: 2.7 - env: TOXENV=coverage-py27-tw130 + env: TOXENV=coverage-py27-tw130,codecov # PyPy (Python 2.7) - - env: TOXENV=coverage-pypy-twtrunk PYPY_VERSION=5.7.1 - - env: TOXENV=coverage-pypy-twcurrent PYPY_VERSION=5.7.1 - - env: TOXENV=coverage-pypy-tw160 PYPY_VERSION=5.7.1 - - env: TOXENV=coverage-pypy-tw150 PYPY_VERSION=5.7.1 - - env: TOXENV=coverage-pypy-tw140 PYPY_VERSION=5.7.1 - - env: TOXENV=coverage-pypy-tw130 PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-twtrunk,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-twcurrent,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw160,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw150,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw140,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw130,codecov PYPY_VERSION=5.7.1 - python: 3.5 env: TOXENV=flake8 @@ -82,8 +82,6 @@ matrix: env: TOXENV=docs - python: 2.7 env: TOXENV=docs-linkcheck - - python: 3.5 - env: TOXENV=py35-coverage,codecov allow_failures: # Tests against Twisted trunk are allow to fail, as they are not supported. From 961d214523a324fb20fee933c96793f0b4f3ba3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 31 May 2017 11:34:52 -0700 Subject: [PATCH 08/15] codecov needs 3.5 --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 522004b39..aa8542612 100644 --- a/tox.ini +++ b/tox.ini @@ -278,7 +278,7 @@ commands = [testenv:codecov] -basepython = python +basepython = python3.5 skip_install = True From ba8bfba3135272c8d6704bc457ba151178d9005a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Thu, 1 Jun 2017 14:51:24 -0700 Subject: [PATCH 09/15] Add select back in --- tox.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tox.ini b/tox.ini index aa8542612..e84895f41 100644 --- a/tox.ini +++ b/tox.ini @@ -133,6 +133,8 @@ commands = [flake8] +select = B,C,E,F,I,N,S,W + disable-noqa = True show-source = True doctests = True From 6f088a994675817a498f171360b09aabcec598c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Fri, 9 Jun 2017 10:22:10 -0700 Subject: [PATCH 10/15] Revert merged Travis config. --- .travis.yml | 80 +++++++++++++++++++++++++++-------------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9b2d6ec4f..4c4e35e0b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,56 +24,58 @@ branches: # matrix: include: - # PyPy (Python 2.7) - - env: TOXENV=trial-pypy-tw130 PYPY_VERSION=5.7.1 - - env: TOXENV=trial-pypy-tw140 PYPY_VERSION=5.7.1 - - env: TOXENV=trial-pypy-tw150 PYPY_VERSION=5.7.1 - - env: TOXENV=trial-pypy-tw160 PYPY_VERSION=5.7.1 - - env: TOXENV=trial-pypy-twcurrent PYPY_VERSION=5.7.1 - - env: TOXENV=trial-pypy-twtrunk PYPY_VERSION=5.7.1 + - python: 3.5 + env: TOXENV=coverage-py35-twtrunk,codecov + - python: 3.5 + env: TOXENV=coverage-py35-twcurrent,codecov + - python: 3.5 + env: TOXENV=coverage-py35-tw160,codecov + - python: 3.5 + env: TOXENV=coverage-py35-tw155,codecov - - python: 2.7 - env: TOXENV=trial-py27-tw130 - - python: 2.7 - env: TOXENV=trial-py27-tw140 - - python: 2.7 - env: TOXENV=trial-py27-tw150 - - python: 2.7 - env: TOXENV=trial-py27-tw160 - - python: 2.7 - env: TOXENV=trial-py27-twcurrent - - python: 2.7 - env: TOXENV=trial-py27-twtrunk + - python: 3.4 + env: TOXENV=coverage-py34-twtrunk,codecov + - python: 3.4 + env: TOXENV=coverage-py34-twcurrent,codecov + - python: 3.4 + env: TOXENV=coverage-py34-tw160,codecov + - python: 3.4 + env: TOXENV=coverage-py34-tw155,codecov - python: 3.3 - env: TOXENV=trial-py33-tw155 + env: TOXENV=coverage-py33-twtrunk,codecov - python: 3.3 - env: TOXENV=trial-py33-tw160 + env: TOXENV=coverage-py33-twcurrent,codecov - python: 3.3 - env: TOXENV=trial-py33-twcurrent + env: TOXENV=coverage-py33-tw160,codecov - python: 3.3 - env: TOXENV=trial-py33-twtrunk + env: TOXENV=coverage-py33-tw155,codecov - - python: 3.4 - env: TOXENV=trial-py34-tw155 - - python: 3.4 - env: TOXENV=trial-py34-tw160 - - python: 3.4 - env: TOXENV=trial-py34-twcurrent - - python: 3.4 - env: TOXENV=trial-py34-twtrunk + - python: 2.7 + env: TOXENV=coverage-py27-twtrunk,codecov + - python: 2.7 + env: TOXENV=coverage-py27-twcurrent,codecov + - python: 2.7 + env: TOXENV=coverage-py27-tw160,codecov + - python: 2.7 + env: TOXENV=coverage-py27-tw150,codecov + - python: 2.7 + env: TOXENV=coverage-py27-tw140,codecov + - python: 2.7 + env: TOXENV=coverage-py27-tw130,codecov - - python: 3.5 - env: TOXENV=trial-py35-tw155 - - python: 3.5 - env: TOXENV=trial-py35-tw160 - - python: 3.5 - env: TOXENV=trial-py35-twcurrent - - python: 3.5 - env: TOXENV=trial-py35-twtrunk + # PyPy (Python 2.7) + - env: TOXENV=coverage-pypy-twtrunk,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-twcurrent,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw160,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw150,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw140,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw130,codecov PYPY_VERSION=5.7.1 - python: 3.5 env: TOXENV=flake8 + - python: 3.5 + env: TOXENV=mypy - python: 2.7 env: TOXENV=twistedchecker-diff - python: 2.7 From e328aeea845bdfe5ee22b2839adfed715199ef0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Fri, 9 Jun 2017 10:36:24 -0700 Subject: [PATCH 11/15] reorder --- .travis.yml | 85 +++++++++++++++++++++++++++++------------------------ 1 file changed, 47 insertions(+), 38 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4c4e35e0b..f2275e36b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,44 +25,28 @@ branches: matrix: include: - python: 3.5 - env: TOXENV=coverage-py35-twtrunk,codecov - - python: 3.5 - env: TOXENV=coverage-py35-twcurrent,codecov - - python: 3.5 - env: TOXENV=coverage-py35-tw160,codecov + env: TOXENV=flake8 - python: 3.5 - env: TOXENV=coverage-py35-tw155,codecov - - - python: 3.4 - env: TOXENV=coverage-py34-twtrunk,codecov - - python: 3.4 - env: TOXENV=coverage-py34-twcurrent,codecov - - python: 3.4 - env: TOXENV=coverage-py34-tw160,codecov - - python: 3.4 - env: TOXENV=coverage-py34-tw155,codecov - - - python: 3.3 - env: TOXENV=coverage-py33-twtrunk,codecov - - python: 3.3 - env: TOXENV=coverage-py33-twcurrent,codecov - - python: 3.3 - env: TOXENV=coverage-py33-tw160,codecov - - python: 3.3 - env: TOXENV=coverage-py33-tw155,codecov - + env: TOXENV=mypy - python: 2.7 - env: TOXENV=coverage-py27-twtrunk,codecov + env: TOXENV=twistedchecker-diff - python: 2.7 - env: TOXENV=coverage-py27-twcurrent,codecov + env: TOXENV=docs - python: 2.7 - env: TOXENV=coverage-py27-tw160,codecov + env: TOXENV=docs-linkcheck + - python: 2.7 - env: TOXENV=coverage-py27-tw150,codecov + env: TOXENV=coverage-py27-tw130,codecov - python: 2.7 env: TOXENV=coverage-py27-tw140,codecov - python: 2.7 - env: TOXENV=coverage-py27-tw130,codecov + env: TOXENV=coverage-py27-tw150,codecov + - python: 2.7 + env: TOXENV=coverage-py27-tw160,codecov + - python: 2.7 + env: TOXENV=coverage-py27-twcurrent,codecov + - python: 2.7 + env: TOXENV=coverage-py27-twtrunk,codecov # PyPy (Python 2.7) - env: TOXENV=coverage-pypy-twtrunk,codecov PYPY_VERSION=5.7.1 @@ -72,16 +56,41 @@ matrix: - env: TOXENV=coverage-pypy-tw140,codecov PYPY_VERSION=5.7.1 - env: TOXENV=coverage-pypy-tw130,codecov PYPY_VERSION=5.7.1 + - python: 3.3 + env: TOXENV=coverage-py33-tw155,codecov + - python: 3.3 + env: TOXENV=coverage-py33-tw160,codecov + - python: 3.3 + env: TOXENV=coverage-py33-twcurrent,codecov + - python: 3.3 + env: TOXENV=coverage-py33-twtrunk,codecov + + - python: 3.4 + env: TOXENV=coverage-py34-tw155,codecov + - python: 3.4 + env: TOXENV=coverage-py34-tw160,codecov + - python: 3.4 + env: TOXENV=coverage-py34-twcurrent,codecov + - python: 3.4 + env: TOXENV=coverage-py34-twtrunk,codecov + - python: 3.5 - env: TOXENV=flake8 + env: TOXENV=coverage-py35-tw155,codecov - python: 3.5 - env: TOXENV=mypy - - python: 2.7 - env: TOXENV=twistedchecker-diff - - python: 2.7 - env: TOXENV=docs - - python: 2.7 - env: TOXENV=docs-linkcheck + env: TOXENV=coverage-py35-tw160,codecov + - python: 3.5 + env: TOXENV=coverage-py35-twcurrent,codecov + - python: 3.5 + env: TOXENV=coverage-py35-twtrunk,codecov + + - python: 3.6 + env: TOXENV=coverage-py36-tw155,codecov + - python: 3.6 + env: TOXENV=coverage-py36-tw160,codecov + - python: 3.6 + env: TOXENV=coverage-py36-twcurrent,codecov + - python: 3.6 + env: TOXENV=coverage-py36-twtrunk,codecov allow_failures: # Tests against Twisted trunk are allow to fail, as they are not supported. From 73f5f1aa39721fc2d2b0d52dbe52f0c74cafd214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 21 Jun 2017 14:20:13 -0700 Subject: [PATCH 12/15] Add LC_ALL, remove PYTHON_* from passenv. Remove VIRTUAL_ENV_DISABLE_PROMPT, GIT_ASKPASS form setenv --- tox.ini | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/tox.ini b/tox.ini index 8c4c7ea7b..cd8041507 100644 --- a/tox.ini +++ b/tox.ini @@ -19,7 +19,6 @@ envlist = [testenv] - basepython = py27: python2.7 @@ -56,17 +55,14 @@ whitelist_externals = passenv = PATH - LANG - PYTHON_* - CI CONTINUOUS_INTEGRATION TRAVIS TRAVIS_* - _system_* + LANG LC_ALL + CI CONTINUOUS_INTEGRATION + TRAVIS TRAVIS_* _system_* CODECOV_OPTIONS setenv = PIP_DISABLE_PIP_VERSION_CHECK=1 - VIRTUAL_ENV_DISABLE_PROMPT=true - GIT_ASKPASS=echo HYPOTHESIS_VERBOSITY_LEVEL=normal coverage: COVERAGE_FILE={toxworkdir}/coverage/coverage.{envname} From c4e384fc7520a376ef8b78e693d65090102d8330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 21 Jun 2017 14:20:46 -0700 Subject: [PATCH 13/15] Remove tw140 and tw130 from default envlist --- tox.ini | 3 --- 1 file changed, 3 deletions(-) diff --git a/tox.ini b/tox.ini index cd8041507..a5d988298 100644 --- a/tox.ini +++ b/tox.ini @@ -6,9 +6,6 @@ envlist = # Twisted 15.5 is the first version to support Python 3 (3.3+) {coverage,test}-py{36,35,34,27,py}-tw{current,170,160,150,trunk} - # Twisted 13-14 require Python 2. - {coverage,test}-py{27,py}-tw{140,130} - docs, docs-linkcheck From b2123ab471501179ae826bb17406d5ce2e71aac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 21 Jun 2017 14:20:55 -0700 Subject: [PATCH 14/15] =?UTF-8?q?trial=20=E2=9E=9C=20coverage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index cb23475f6..3a4107d1e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,10 +38,10 @@ matrix: env: TOXENV=docs-linkcheck # PyPy (Python 2.7) - - env: TOXENV=trial-pypy-tw155,codecov PYPY_VERSION=5.7.1 - - env: TOXENV=trial-pypy-tw160,codecov PYPY_VERSION=5.7.1 - - env: TOXENV=trial-pypy-twcurrent,codecov PYPY_VERSION=5.7.1 - - env: TOXENV=trial-pypy-twtrunk,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw155,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-tw160,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-twcurrent,codecov PYPY_VERSION=5.7.1 + - env: TOXENV=coverage-pypy-twtrunk,codecov PYPY_VERSION=5.7.1 - python: 2.7 env: TOXENV=coverage-py27-tw155 From 643e070f9abc50b6a83a41756f34ee1eb851bfac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilfredo=20Sa=CC=81nchez?= Date: Wed, 21 Jun 2017 14:21:59 -0700 Subject: [PATCH 15/15] =?UTF-8?q?test=20=E2=9E=9C=20trial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tox.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tox.ini b/tox.ini index a5d988298..6dcfe3182 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ envlist = flake8, mypy # Twisted 15.5 is the first version to support Python 3 (3.3+) - {coverage,test}-py{36,35,34,27,py}-tw{current,170,160,150,trunk} + {coverage,trial}-py{36,35,34,27,py}-tw{current,170,160,150,trunk} docs, docs-linkcheck @@ -39,8 +39,8 @@ deps = twcurrent: Twisted twtrunk: https://github.com/twisted/twisted/archive/trunk.zip - {test,coverage}: hypothesis - {test,coverage}: mock + {trial,coverage}: hypothesis + {trial,coverage}: mock coverage: coverage @@ -75,7 +75,7 @@ commands = "{toxinidir}/.travis/environment" # Run trial without coverage - test: trial --random=0 --logfile="{envlogdir}/trial.log" --temp-directory="{envlogdir}/trial.d" {posargs:klein} + trial: trial --random=0 --logfile="{envlogdir}/trial.log" --temp-directory="{envlogdir}/trial.d" {posargs:klein} coverage: mkdir -p "{toxworkdir}/coverage" coverage: coverage run --rcfile="{toxinidir}/.coveragerc" "{envdir}/bin/trial" --random=0 --logfile="{envlogdir}/trial.log" --temp-directory="{envlogdir}/trial.d" {posargs:klein}