From 82df8d18df2d34ba1410a40a921d7f0d074755ab Mon Sep 17 00:00:00 2001 From: Jack Wilsdon Date: Tue, 31 May 2016 18:37:11 +0100 Subject: [PATCH 1/6] Update tox configuration - Add support for Python 3 testing. - Add Python 3.3, 3.4 and 3.5 tests to Travis and AppVeyor. - Allow arguments to be passed to tox from test matrix. - Simplify tox configuration so that we now only have `test`, `flake8` and `docs` tasks. --- .travis.yml | 23 ++++++++++++++++++----- appveyor.yml | 22 ++++++++++++++++++---- setup.cfg | 1 - tox.ini | 37 +++++++++++++++++-------------------- 4 files changed, 53 insertions(+), 30 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3399b2bf8..6b3a60e8f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,13 +4,26 @@ sudo: false matrix: include: - python: 2.7 - env: {TOX_ENV: py27cov, COVERAGE: 1} + env: {TOX_ENV: py27-test, TOX_ARGS: --show-skipped --with-coverage, COVERAGE: 1} + - python: 3.3 + env: {TOX_ENV: py33-test, TOX_ARGS: --show-skipped} + - python: 3.4 + env: {TOX_ENV: py34-test, TOX_ARGS: --show-skipped} + - python: 3.5 + env: {TOX_ENV: py35-test, TOX_ARGS: --show-skipped} - python: pypy - env: {TOX_ENV: pypy} + env: {TOX_ENV: pypy-test, TOX_ARGS: --show-skipped} - python: 2.7 - env: {TOX_ENV: docs, NONTEST: 1} + env: {TOX_ENV: py27-flake8, TOX_ARGS: --min-version=2.7} + - python: 3.3 + env: {TOX_ENV: py33-flake8, TOX_ARGS: --min-version=3.3} - python: 2.7 - env: {TOX_ENV: flake8, NONTEST: 1} + env: {TOX_ENV: docs} + allow_failures: + - python: 3.3 + - python: 3.4 + - python: 3.5 + - python: pypy3 # Non-Python dependencies. addons: @@ -25,7 +38,7 @@ install: - travis_retry pip install tox sphinx - travis_retry tox -e $TOX_ENV --notest -script: tox -e $TOX_ENV +script: tox -e $TOX_ENV -- $TOX_ARGS # Report coverage to codecov.io. before_install: diff --git a/appveyor.yml b/appveyor.yml index be561eaaf..6e79877f6 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,17 +4,31 @@ deploy: off environment: matrix: - - PYTHON: "C:\\Python27" - TOXENV: py27 + - PYTHON: C:\Python27 + TOX_ENV: py27-test + TOX_ARGS: --show-skipped + - PYTHON: C:\Python33 + TOX_ENV: py33-test + TOX_ARGS: --show-skipped + - PYTHON: C:\Python34 + TOX_ENV: py34-test + TOX_ARGS: --show-skipped + - PYTHON: C:\Python35 + TOX_ENV: py35-test + TOX_ARGS: --show-skipped # Install Tox for running tests. install: - "%PYTHON%/Scripts/pip.exe install tox" + - "%PYTHON%/Scripts/tox.exe -e %TOX_ENV% --notest" test_script: - - "%PYTHON%/Scripts/tox.exe" + - "%PYTHON%/Scripts/tox.exe -e %TOX_ENV% -- %TOX_ARGS%" # Allow all failures for now: the tests don't yet pass! matrix: allow_failures: - - TOXENV: py27 + - TOX_ENV: py27-test + - TOX_ENV: py33-test + - TOX_ENV: py34-test + - TOX_ENV: py35-test diff --git a/setup.cfg b/setup.cfg index de1f48545..b093a20b5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,7 +4,6 @@ logging-clear-handlers=1 eval-attr="!=slow" [flake8] -min-version = 2.7 # Default pyflakes errors we ignore: # - E241: missing whitespace after ',' (used to align visually) # - E221: multiple spaces before operator (used to align visually) diff --git a/tox.ini b/tox.ini index 6c6818908..41a97e61c 100644 --- a/tox.ini +++ b/tox.ini @@ -4,9 +4,9 @@ # and then run "tox" from this directory. [tox] -envlist = py27, pypy, docs, flake8 +envlist = test, flake8, docs -[testenv] +[_test] deps = beautifulsoup4 flask @@ -21,27 +21,24 @@ deps = pyxdg jellyfish python-mpd2 -commands = nosetests {posargs} - -[testenv:py27cov] -basepython = python2.7 -deps = - {[testenv]deps} coverage -commands = nosetests --show-skipped --with-coverage {posargs} -[testenv:py27setup] -basepython = python2.7 -commands = python ./setup.py test {posargs} - -[testenv:docs] -changedir = docs -deps = sphinx -commands = sphinx-build -W -q -b html . {envtmpdir}/html - -[testenv:flake8] +[_flake8] deps = flake8 flake8-future-import pep8-naming -commands = flake8 beets beetsplug beet test setup.py docs +files = beets beetsplug beet test setup.py docs + +[testenv] +deps = + test: {[_test]deps} + flake8: {[_flake8]deps} +commands = + test: nosetests {posargs} + flake8: flake8 {posargs:--min-version=2.7} {[_flake8]files} + +[testenv:docs] +basepython = python2.7 +deps = sphinx +commands = sphinx-build -W -q -b html docs {envtmpdir}/html {posargs} From 89088ad7509f177787310ab55281cdc76698012d Mon Sep 17 00:00:00 2001 From: Jack Wilsdon Date: Fri, 3 Jun 2016 00:51:53 +0100 Subject: [PATCH 2/6] Remove unused pypy3 test ignore --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6b3a60e8f..d07277cba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,6 @@ matrix: - python: 3.3 - python: 3.4 - python: 3.5 - - python: pypy3 # Non-Python dependencies. addons: From 85864eb747f29501074e559b196b565a4aa8deec Mon Sep 17 00:00:00 2001 From: Jack Wilsdon Date: Fri, 3 Jun 2016 02:32:09 +0100 Subject: [PATCH 3/6] Add specific versions for environments in tox --- tox.ini | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tox.ini b/tox.ini index 41a97e61c..b62c7a6d4 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ # and then run "tox" from this directory. [tox] -envlist = test, flake8, docs +envlist = py{27,33,34,35}-{test,cov}, py{27,33}-flake8, docs [_test] deps = @@ -31,12 +31,21 @@ deps = files = beets beetsplug beet test setup.py docs [testenv] +basepython = + py27: python2.7 + py33: python3.3 + py34: python3.4 + py35: python3.5 +passenv = + NOSE_SHOW_SKIPPED # Undocumented feature of nose-show-skipped. deps = - test: {[_test]deps} - flake8: {[_flake8]deps} + {test,cov}: {[_test]deps} + py{27,33}-flake8: {[_flake8]deps} commands = + cov: nosetests --with-coverage {posargs} test: nosetests {posargs} - flake8: flake8 {posargs:--min-version=2.7} {[_flake8]files} + py27-flake8: flake8 --min-version 2.7 {posargs} {[_flake8]files} + py33-flake8: flake8 --min-version 3.3 {posargs} {[_flake8]files} [testenv:docs] basepython = python2.7 From bd93d66c4764b8ed284a16682da500b3628efc20 Mon Sep 17 00:00:00 2001 From: Jack Wilsdon Date: Fri, 3 Jun 2016 02:42:50 +0100 Subject: [PATCH 4/6] Remove unneeded environment variables in tests --- .travis.yml | 21 +++++++++++++-------- appveyor.yml | 9 ++++----- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index d07277cba..d5611deb5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,22 +1,27 @@ language: python sudo: false +env: + global: + # Undocumented feature of nose-show-skipped. + NOSE_SHOW_SKIPPED: 1 + matrix: include: - python: 2.7 - env: {TOX_ENV: py27-test, TOX_ARGS: --show-skipped --with-coverage, COVERAGE: 1} + env: {TOX_ENV: py27-cov, COVERAGE: 1} - python: 3.3 - env: {TOX_ENV: py33-test, TOX_ARGS: --show-skipped} + env: {TOX_ENV: py33-test} - python: 3.4 - env: {TOX_ENV: py34-test, TOX_ARGS: --show-skipped} + env: {TOX_ENV: py34-test} - python: 3.5 - env: {TOX_ENV: py35-test, TOX_ARGS: --show-skipped} + env: {TOX_ENV: py35-test} - python: pypy - env: {TOX_ENV: pypy-test, TOX_ARGS: --show-skipped} + env: {TOX_ENV: pypy-test} - python: 2.7 - env: {TOX_ENV: py27-flake8, TOX_ARGS: --min-version=2.7} + env: {TOX_ENV: py27-flake8} - python: 3.3 - env: {TOX_ENV: py33-flake8, TOX_ARGS: --min-version=3.3} + env: {TOX_ENV: py33-flake8} - python: 2.7 env: {TOX_ENV: docs} allow_failures: @@ -37,7 +42,7 @@ install: - travis_retry pip install tox sphinx - travis_retry tox -e $TOX_ENV --notest -script: tox -e $TOX_ENV -- $TOX_ARGS +script: tox -e $TOX_ENV # Report coverage to codecov.io. before_install: diff --git a/appveyor.yml b/appveyor.yml index 6e79877f6..ca9e5a520 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,19 +3,18 @@ build: off deploy: off environment: + # Undocumented feature of nose-show-skipped. + NOSE_SHOW_SKIPPED: 1 + matrix: - PYTHON: C:\Python27 TOX_ENV: py27-test - TOX_ARGS: --show-skipped - PYTHON: C:\Python33 TOX_ENV: py33-test - TOX_ARGS: --show-skipped - PYTHON: C:\Python34 TOX_ENV: py34-test - TOX_ARGS: --show-skipped - PYTHON: C:\Python35 TOX_ENV: py35-test - TOX_ARGS: --show-skipped # Install Tox for running tests. install: @@ -23,7 +22,7 @@ install: - "%PYTHON%/Scripts/tox.exe -e %TOX_ENV% --notest" test_script: - - "%PYTHON%/Scripts/tox.exe -e %TOX_ENV% -- %TOX_ARGS%" + - "%PYTHON%/Scripts/tox.exe -e %TOX_ENV%" # Allow all failures for now: the tests don't yet pass! matrix: From 10ce4fa8c57f18b28eaca45055429a5636a1970b Mon Sep 17 00:00:00 2001 From: Jack Wilsdon Date: Fri, 3 Jun 2016 02:44:37 +0100 Subject: [PATCH 5/6] Re-add min-version for flake8 in setup.cfg --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index b093a20b5..099704f2e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,6 +4,7 @@ logging-clear-handlers=1 eval-attr="!=slow" [flake8] +min-version=2.7 # Default pyflakes errors we ignore: # - E241: missing whitespace after ',' (used to align visually) # - E221: multiple spaces before operator (used to align visually) From fa7afba327bd44a4fd1caaeaf11c1a0e83bdf1f1 Mon Sep 17 00:00:00 2001 From: Jack Wilsdon Date: Fri, 3 Jun 2016 02:47:12 +0100 Subject: [PATCH 6/6] Remove basepython so any version can be used --- tox.ini | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tox.ini b/tox.ini index b62c7a6d4..13ac09f5e 100644 --- a/tox.ini +++ b/tox.ini @@ -31,11 +31,6 @@ deps = files = beets beetsplug beet test setup.py docs [testenv] -basepython = - py27: python2.7 - py33: python3.3 - py34: python3.4 - py35: python3.5 passenv = NOSE_SHOW_SKIPPED # Undocumented feature of nose-show-skipped. deps =