From commits-noreply at bitbucket.org Thu May 1 09:12:23 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 01 May 2014 07:12:23 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Close branch test_quickstart_multiline_with_comments Message-ID: <20140501071223.10428.23088@app03.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/780d6f8c5ea9/ Changeset: 780d6f8c5ea9 Branch: test_quickstart_multiline_with_comments User: hpk42 Date: 2014-05-01 09:12:19 Summary: Close branch test_quickstart_multiline_with_comments Affected #: 0 files Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 1 09:12:23 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 01 May 2014 07:12:23 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in msabramo/tox/test_quickstart_multiline_with_comments (pull request #102) Message-ID: <20140501071223.19487.68062@app12.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/275cb4d13406/ Changeset: 275cb4d13406 User: hpk42 Date: 2014-05-01 09:12:19 Summary: Merged in msabramo/tox/test_quickstart_multiline_with_comments (pull request #102) test_quickstart: Use multilines and add comments for better understanding Affected #: 1 file diff -r 9c19ff552a68d173d0fa3146d4e1329d8b6b2012 -r 275cb4d13406a6ce5e59b8dee8b03f98a53d32f1 tests/test_quickstart.py --- a/tests/test_quickstart.py +++ b/tests/test_quickstart.py @@ -6,6 +6,7 @@ def cleandir(tmpdir): tmpdir.chdir() + class TestToxQuickstartMain(object): def mock_term_input_return_values(self, return_values): @@ -23,12 +24,26 @@ return mock_term_input - def test_quickstart_main_choose_individual_pythons_and_pytest(self, - monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_pytest( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', self.get_mock_term_input( - ['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'py.test', 'pytest'])) + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'py.test', # command to run tests + 'pytest' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -49,11 +64,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_nose_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_nose_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', - 'nosetests', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'nosetests', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -74,11 +104,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_trial_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_trial_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', - 'trial', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'trial', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -99,11 +144,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', - 'py.test', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) expected_tox_ini = """ @@ -123,10 +183,19 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_py27_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_py27_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['1', 'py.test', ''])) + self.get_mock_term_input( + [ + '1', # py27 + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -147,10 +216,19 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_py27_and_py33_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_py27_and_py33_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['2', 'py.test', ''])) + self.get_mock_term_input( + [ + '2', # py27 and py33 + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -171,10 +249,19 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_all_pythons_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_all_pythons_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['3', 'py.test', ''])) + self.get_mock_term_input( + [ + '3', # all Python versions + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -195,10 +282,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_defaults(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_defaults( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', '', '', '', '', '', '', '', '', '', '', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + '', # py26 + '', # py27 + '', # py32 + '', # py33 + '', # py34 + '', # pypy + '', # jython + '', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -228,7 +331,22 @@ monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', '', '', '', '', '', '', '', '', '', '', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + '', # py26 + '', # py27 + '', # py32 + '', # py33 + '', # py34 + '', # pypy + '', # jython + '', # command to run tests + '', # test dependencies + '', # tox.ini already exists; overwrite? + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 1 09:12:23 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 01 May 2014 07:12:23 -0000 Subject: [Pytest-commit] commit/tox: 2 new changesets Message-ID: <20140501071223.18486.92157@app05.ash-private.bitbucket.org> 2 new commits in tox: https://bitbucket.org/hpk42/tox/commits/a45597e6314b/ Changeset: a45597e6314b Branch: test_quickstart_multiline_with_comments User: Marc Abramowitz Date: 2014-04-28 18:35:11 Summary: test_quickstart: Use multilines and add comments for better understanding as suggested by Ronny Pfannschmidt at https://bitbucket.org/hpk42/tox/pull-request/99/fix-test_quickstart-failures/diff#comment-1746221 Affected #: 1 file diff -r 6f9368b8b63e8f1f150abc6ccdfaa113fcc05a2c -r a45597e6314b923cd6f2c84f96c14dc563915c80 tests/test_quickstart.py --- a/tests/test_quickstart.py +++ b/tests/test_quickstart.py @@ -6,6 +6,7 @@ def cleandir(tmpdir): tmpdir.chdir() + class TestToxQuickstartMain(object): def mock_term_input_return_values(self, return_values): @@ -23,12 +24,26 @@ return mock_term_input - def test_quickstart_main_choose_individual_pythons_and_pytest(self, - monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_pytest( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', self.get_mock_term_input( - ['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'py.test', 'pytest'])) + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'py.test', # command to run tests + 'pytest' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -49,11 +64,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_nose_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_nose_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', - 'nosetests', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'nosetests', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -74,11 +104,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_trial_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_trial_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', - 'trial', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'trial', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -99,11 +144,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', - 'py.test', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) expected_tox_ini = """ @@ -123,10 +183,19 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_py27_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_py27_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['1', 'py.test', ''])) + self.get_mock_term_input( + [ + '1', # py27 + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -147,10 +216,19 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_py27_and_py33_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_py27_and_py33_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['2', 'py.test', ''])) + self.get_mock_term_input( + [ + '2', # py27 and py33 + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -171,10 +249,19 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_all_pythons_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_all_pythons_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['3', 'py.test', ''])) + self.get_mock_term_input( + [ + '3', # all Python versions + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -195,10 +282,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_defaults(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_defaults( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', '', '', '', '', '', '', '', '', '', '', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + '', # py26 + '', # py27 + '', # py32 + '', # py33 + '', # py34 + '', # pypy + '', # jython + '', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -228,7 +331,22 @@ monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', '', '', '', '', '', '', '', '', '', '', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + '', # py26 + '', # py27 + '', # py32 + '', # py33 + '', # py34 + '', # pypy + '', # jython + '', # command to run tests + '', # test dependencies + '', # tox.ini already exists; overwrite? + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) https://bitbucket.org/hpk42/tox/commits/275cb4d13406/ Changeset: 275cb4d13406 User: hpk42 Date: 2014-05-01 09:12:19 Summary: Merged in msabramo/tox/test_quickstart_multiline_with_comments (pull request #102) test_quickstart: Use multilines and add comments for better understanding Affected #: 1 file diff -r 9c19ff552a68d173d0fa3146d4e1329d8b6b2012 -r 275cb4d13406a6ce5e59b8dee8b03f98a53d32f1 tests/test_quickstart.py --- a/tests/test_quickstart.py +++ b/tests/test_quickstart.py @@ -6,6 +6,7 @@ def cleandir(tmpdir): tmpdir.chdir() + class TestToxQuickstartMain(object): def mock_term_input_return_values(self, return_values): @@ -23,12 +24,26 @@ return mock_term_input - def test_quickstart_main_choose_individual_pythons_and_pytest(self, - monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_pytest( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', self.get_mock_term_input( - ['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'py.test', 'pytest'])) + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'py.test', # command to run tests + 'pytest' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -49,11 +64,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_nose_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_nose_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', - 'nosetests', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'nosetests', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -74,11 +104,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_trial_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_trial_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', - 'trial', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'trial', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -99,11 +144,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', - 'py.test', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + 'Y', # py26 + 'Y', # py27 + 'Y', # py32 + 'Y', # py33 + 'Y', # py34 + 'Y', # pypy + 'N', # jython + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) expected_tox_ini = """ @@ -123,10 +183,19 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_py27_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_py27_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['1', 'py.test', ''])) + self.get_mock_term_input( + [ + '1', # py27 + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -147,10 +216,19 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_py27_and_py33_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_py27_and_py33_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['2', 'py.test', ''])) + self.get_mock_term_input( + [ + '2', # py27 and py33 + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -171,10 +249,19 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_all_pythons_and_pytest_adds_deps(self, monkeypatch): + def test_quickstart_main_choose_all_pythons_and_pytest_adds_deps( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['3', 'py.test', ''])) + self.get_mock_term_input( + [ + '3', # all Python versions + 'py.test', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -195,10 +282,26 @@ result = open('tox.ini').read() assert(result == expected_tox_ini) - def test_quickstart_main_choose_individual_pythons_and_defaults(self, monkeypatch): + def test_quickstart_main_choose_individual_pythons_and_defaults( + self, + monkeypatch): monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', '', '', '', '', '', '', '', '', '', '', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + '', # py26 + '', # py27 + '', # py32 + '', # py33 + '', # py34 + '', # pypy + '', # jython + '', # command to run tests + '' # test dependencies + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) @@ -228,7 +331,22 @@ monkeypatch.setattr( tox._quickstart, 'term_input', - self.get_mock_term_input(['4', '', '', '', '', '', '', '', '', '', '', ''])) + self.get_mock_term_input( + [ + '4', # Python versions: choose one by one + '', # py26 + '', # py27 + '', # py32 + '', # py33 + '', # py34 + '', # pypy + '', # jython + '', # command to run tests + '', # test dependencies + '', # tox.ini already exists; overwrite? + ] + ) + ) tox._quickstart.main(argv=['tox-quickstart']) Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From issues-reply at bitbucket.org Thu May 1 12:51:25 2014 From: issues-reply at bitbucket.org (=?utf-8?q?Jurko_Gospodneti=C4=87?=) Date: Thu, 01 May 2014 10:51:25 -0000 Subject: [Pytest-commit] Issue #508: install fails on 64-bit Python 2.5 on Windows due to colorama issues (hpk42/pytest) Message-ID: <20140501105125.7240.95279@app05.ash-private.bitbucket.org> New issue 508: install fails on 64-bit Python 2.5 on Windows due to colorama issues https://bitbucket.org/hpk42/pytest/issue/508/install-fails-on-64-bit-python-25-on Jurko Gospodneti?: ``colorama`` 0.3.0 made a ``pyreadline`` compatibility realted bug-fix that broke 64-bit Python 2.5 support on Windows. The issue has already been reported to the colorama project [here](https://code.google.com/p/colorama/issues/detail?id=56). Also, ``colorama`` 0.3.1 accidentally broke general Python 2.5 compatibility by a change in its setup.py. The issue has since been fixed in their development repo but this particular version is still broken (and is the currently installed one by default). I would suggest changing pytest requirements to ``colorama<0.3.dev0`` when installing into a Python 2.5/Windows environment. Later on, when and if colorama fixes the underlying issues, that can again be changed to ``colorama`` on all platforms except 64-bit Python 2.5/Windows where it should be ``colorama!=0.3.1``. Best regards, Jurko Gospodneti? From commits-noreply at bitbucket.org Fri May 2 09:22:30 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Fri, 02 May 2014 07:22:30 -0000 Subject: [Pytest-commit] commit/pytest: flub: Do not list python 2.5 as supported in the docs Message-ID: <20140502072230.27886.63318@app32.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/26d43b6c7850/ Changeset: 26d43b6c7850 User: flub Date: 2014-05-01 23:25:03 Summary: Do not list python 2.5 as supported in the docs Affected #: 1 file diff -r 229f3213f7a629f547e6b89a20263a41611807a1 -r 26d43b6c78506d6cc267009d3f0fccf9a5066b2a doc/en/getting-started.txt --- a/doc/en/getting-started.txt +++ b/doc/en/getting-started.txt @@ -1,7 +1,7 @@ Installation and Getting Started =================================== -**Pythons**: Python 2.5-3.3, Jython, PyPy +**Pythons**: Python 2.6-3.3, Jython, PyPy **Platforms**: Unix/Posix and Windows Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Fri May 2 10:39:20 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Fri, 02 May 2014 08:39:20 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in msabramo/tox/hgignore_flakes_cache (pull request #106) Message-ID: <20140502083920.22936.63375@app15.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/dd8cf6df144a/ Changeset: dd8cf6df144a User: hpk42 Date: 2014-05-02 10:39:16 Summary: Merged in msabramo/tox/hgignore_flakes_cache (pull request #106) .hgignore: Ignore .cache dir created by flakes Affected #: 1 file diff -r 275cb4d13406a6ce5e59b8dee8b03f98a53d32f1 -r dd8cf6df144ace26df9fe2ecacd56680b6c032bc .hgignore --- a/.hgignore +++ b/.hgignore @@ -14,3 +14,4 @@ doc/_build/ tox.egg-info .tox +.cache Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Fri May 2 10:39:20 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Fri, 02 May 2014 08:39:20 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Close branch hgignore_flakes_cache Message-ID: <20140502083920.7512.15678@app09.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/0b4acffc2429/ Changeset: 0b4acffc2429 Branch: hgignore_flakes_cache User: hpk42 Date: 2014-05-02 10:39:16 Summary: Close branch hgignore_flakes_cache Affected #: 0 files Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Fri May 2 10:39:20 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Fri, 02 May 2014 08:39:20 -0000 Subject: [Pytest-commit] commit/tox: 2 new changesets Message-ID: <20140502083920.18570.32725@app12.ash-private.bitbucket.org> 2 new commits in tox: https://bitbucket.org/hpk42/tox/commits/afd60ddaee99/ Changeset: afd60ddaee99 Branch: hgignore_flakes_cache User: Marc Abramowitz Date: 2014-05-01 23:18:18 Summary: .hgignore: Ignore .cache dir created by flakes Affected #: 1 file diff -r 275cb4d13406a6ce5e59b8dee8b03f98a53d32f1 -r afd60ddaee9923fb88bb89aa4c243816380496a8 .hgignore --- a/.hgignore +++ b/.hgignore @@ -14,3 +14,4 @@ doc/_build/ tox.egg-info .tox +.cache https://bitbucket.org/hpk42/tox/commits/dd8cf6df144a/ Changeset: dd8cf6df144a User: hpk42 Date: 2014-05-02 10:39:16 Summary: Merged in msabramo/tox/hgignore_flakes_cache (pull request #106) .hgignore: Ignore .cache dir created by flakes Affected #: 1 file diff -r 275cb4d13406a6ce5e59b8dee8b03f98a53d32f1 -r dd8cf6df144ace26df9fe2ecacd56680b6c032bc .hgignore --- a/.hgignore +++ b/.hgignore @@ -14,3 +14,4 @@ doc/_build/ tox.egg-info .tox +.cache Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From issues-reply at bitbucket.org Sat May 3 12:56:11 2014 From: issues-reply at bitbucket.org (=?utf-8?b?w5h5dmluZCDDmHZlcmdhYXJk?=) Date: Sat, 03 May 2014 10:56:11 -0000 Subject: [Pytest-commit] Issue #509: A namedtuple named Testcase with != 1 parameter in scope breaks test suite (hpk42/pytest) Message-ID: <20140503105611.4597.39457@app17.ash-private.bitbucket.org> New issue 509: A namedtuple named Testcase with != 1 parameter in scope breaks test suite https://bitbucket.org/hpk42/pytest/issue/509/a-namedtuple-named-testcase-with-1 ?yvind ?vergaard: I wrote tests for some code which happened to have a namedtuple named Testcase. importing the Testcase namedtuple into the test's scope breaks the test suite in pytest, my Testcase namedtuple seems to override some internal thing named Testcase (see stack trace). Having a class named Testcase in scope, however, doesn't seem to cause any problems. ``` $ cat test_pytest_testcase_bug.py # from collections import namedtuple # Testcase = namedtuple('Testcase', ['foo', 'bar', 'baz', 'quux']) class Testcase(object): def __init__(self, foo, bar, baz, quux): pass def test_Testcase_in_scope_breaks_pytest(): pass ``` ``` $ py.test-2.7 test_pytest_testcase_bug.py ============================ test session starts ============================= platform darwin -- Python 2.7.6 -- py-1.4.20 -- pytest-2.5.2 plugins: cov collected 1 items / 1 errors test_pytest_testcase_bug.py . =================================== ERRORS =================================== ________________ ERROR collecting test_pytest_testcase_bug.py ________________ /usr/local/lib/python2.7/site-packages/_pytest/runner.py:139: in __init__ > self.result = func() /usr/local/lib/python2.7/site-packages/_pytest/main.py:419: in _memocollect > return self._memoizedcall('_collected', lambda: list(self.collect())) /usr/local/lib/python2.7/site-packages/_pytest/main.py:296: in _memoizedcall > res = function() /usr/local/lib/python2.7/site-packages/_pytest/main.py:419: in > return self._memoizedcall('_collected', lambda: list(self.collect())) /usr/local/lib/python2.7/site-packages/_pytest/python.py:526: in collect > self.session._fixturemanager.parsefactories(self) /usr/local/lib/python2.7/site-packages/_pytest/python.py:1661: in parsefactories > holderobj = node_or_obj.obj /usr/local/lib/python2.7/site-packages/_pytest/python.py:247: in fget > self._obj = obj = self._getobj() /usr/local/lib/python2.7/site-packages/_pytest/python.py:522: in _getobj > obj = self.parent.obj() E TypeError: __new__() takes exactly 5 arguments (1 given) ===================== 1 passed, 1 error in 0.05 seconds ====================== ``` From issues-reply at bitbucket.org Mon May 5 11:12:04 2014 From: issues-reply at bitbucket.org (Alex Stapleton) Date: Mon, 05 May 2014 09:12:04 -0000 Subject: [Pytest-commit] Issue #510: Multiple calls to parametrize result in empty value lists not skipping the test (hpk42/pytest) Message-ID: <20140505091204.28415.89270@app12.ash-private.bitbucket.org> New issue 510: Multiple calls to parametrize result in empty value lists not skipping the test https://bitbucket.org/hpk42/pytest/issue/510/multiple-calls-to-parametrize-result-in Alex Stapleton: If you call parametrize on a test more than once for different arguments of the test it doesn't seem to combine the parameters correctly if some of them are empty. This results in tests that would normally get skipped because their parametisation is missing values receiving the internal `_notset` sentinel object for that fixture. Examples here https://gist.github.com/public/e671a53b70fbb6fb6129 The last example is the simplest reproduction of the problem. This does not get skipped and `fixP` is `_notset`. ``` @pytest.mark.parametrize(["fixP"], [(1,)]) @pytest.mark.parametrize(["fixQ"], []) def test_fixA_fixB_bad2(fixP, fixQ): print fixP, fixQ ``` but if you swap the order of the calls to parametrize... ``` @pytest.mark.parametrize(["fixQ"], []) @pytest.mark.parametrize(["fixP"], [(1,)]) def test_fixA_fixB_bad2(fixP, fixQ): print fixP, fixQ ``` it skips as you would expect from reading the documentation. I've reproduced this on 2.5.2 and on the current master 2.6 branch. From issues-reply at bitbucket.org Wed May 7 11:17:36 2014 From: issues-reply at bitbucket.org (Martin Geisler) Date: Wed, 07 May 2014 09:17:36 -0000 Subject: [Pytest-commit] Issue #170: Mercurial can break when executed with environment interpreter (hpk42/tox) Message-ID: <20140507091736.23292.62811@app04.ash-private.bitbucket.org> New issue 170: Mercurial can break when executed with environment interpreter https://bitbucket.org/hpk42/tox/issue/170/mercurial-can-break-when-executed-with Martin Geisler: I ran into a fun little problem today: I have a dependency of this form in my `requirements.txt` file: -e hg+https://bitbucket.org/mg/cram/#egg=cram I'm also a Mercurial developer, so I have a Mercurial compiled for Python 2.7 in my `PATH`. Unlike the system Mercurial (on Debian), this `hg` script starts with #!/usr/bin/env python This causes problems when installing the dependency in a non-Python 2.7 environment since `pip` executes `hg` and this in turn finds the currently selected interpreter. For reference, the error looks like this: Obtaining cram from hg+https://bitbucket.org/mg/cram/#egg=cram (from -r /home/mg/src/zpm/test-requirements.txt (line 8)) Cloning hg https://bitbucket.org/mg/cram/ to /home/mg/src/zpm/.tox/py26/src/cram Traceback (most recent call last): File "/home/mg/opt/bin/hg", line 38, in mercurial.dispatch.run() File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 28, in run sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255) File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 41, in dispatch req.ui = uimod.ui() File "/home/mg/src/mercurial-crew/mercurial/ui.py", line 49, in __init__ for f in scmutil.rcpath(): File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 102, in __getattribute__ self._load() File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 74, in _load mod = _hgextimport(_import, head, globals, locals, None, level) File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 43, in _hgextimport return importfunc(name, globals, *args) File "/home/mg/src/mercurial-crew/mercurial/scmutil.py", line 954, in if util.safehasattr(parsers, 'dirs'): File "/home/mg/src/mercurial-crew/mercurial/util.py", line 81, in safehasattr return getattr(thing, attr, _notset) is not _notset File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 102, in __getattribute__ self._load() File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 74, in _load mod = _hgextimport(_import, head, globals, locals, None, level) File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 43, in _hgextimport return importfunc(name, globals, *args) ImportError: Python minor version mismatch: The Mercurial extension modules were compiled with Python 2.7.6, but Mercurial is currently using Python with sys.hexversion=33949936: Python 2.6.8 (unknown, Jan 29 2013, 10:05:44) [GCC 4.7.2] at: /home/mg/src/zpm/.tox/py26/bin/python The error can probably also occur when installing using a `-e bzr+` line in a `requirements.txt` file. I'm not sure the error really lies with tox ? maybe it's pip that should sanitize the environment before executing the external programs it needs for downloading dependencies. Any advice on a good way to solve this? From issues-reply at bitbucket.org Thu May 8 02:17:46 2014 From: issues-reply at bitbucket.org (Daniel Hahler) Date: Thu, 08 May 2014 00:17:46 -0000 Subject: [Pytest-commit] Issue #511: Support for calls to os.exec* (hpk42/pytest) Message-ID: <20140508001746.29438.8195@app13.ash-private.bitbucket.org> New issue 511: Support for calls to os.exec* https://bitbucket.org/hpk42/pytest/issue/511/support-for-calls-to-osexec Daniel Hahler: I wonder if pytest could provide support for testing code which calls `os.exec*` (and therefore replaces the current process), e.g. by monkey-patching the os.exec* calls during tests. From commits-noreply at bitbucket.org Thu May 8 20:45:33 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 08 May 2014 18:45:33 -0000 Subject: [Pytest-commit] commit/tox: 2 new changesets Message-ID: <20140508184533.12801.26412@app09.ash-private.bitbucket.org> 2 new commits in tox: https://bitbucket.org/hpk42/tox/commits/b7f4d20540a2/ Changeset: b7f4d20540a2 Branch: fix_test_sdistonly User: aconrad Date: 2014-05-01 02:22:37 Summary: make test more specific, less prone to failures Checking for the non-existence of the string "virtualenv" could fail because paths may contain the word virtualenv. Affected #: 1 file diff -r 9c19ff552a68d173d0fa3146d4e1329d8b6b2012 -r b7f4d20540a24d102ee21dcb97985bcb0426ec4e tests/test_z_cmdline.py --- a/tests/test_z_cmdline.py +++ b/tests/test_z_cmdline.py @@ -565,7 +565,7 @@ result.stdout.fnmatch_lines([ "*sdist-make*setup.py*", ]) - assert "virtualenv" not in result.stdout.str() + assert "-mvirtualenv" not in result.stdout.str() def test_separate_sdist_no_sdistfile(cmd, initproj): distshare = cmd.tmpdir.join("distshare") https://bitbucket.org/hpk42/tox/commits/eb294a76305a/ Changeset: eb294a76305a User: hpk42 Date: 2014-05-08 20:45:30 Summary: Merged in aconrad/tox/fix_test_sdistonly (pull request #103) make test more specific, less prone to failures Affected #: 1 file diff -r dd8cf6df144ace26df9fe2ecacd56680b6c032bc -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d tests/test_z_cmdline.py --- a/tests/test_z_cmdline.py +++ b/tests/test_z_cmdline.py @@ -565,7 +565,7 @@ result.stdout.fnmatch_lines([ "*sdist-make*setup.py*", ]) - assert "virtualenv" not in result.stdout.str() + assert "-mvirtualenv" not in result.stdout.str() def test_separate_sdist_no_sdistfile(cmd, initproj): distshare = cmd.tmpdir.join("distshare") Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 8 20:45:33 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 08 May 2014 18:45:33 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in aconrad/tox/fix_test_sdistonly (pull request #103) Message-ID: <20140508184533.21754.26658@app17.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/eb294a76305a/ Changeset: eb294a76305a User: hpk42 Date: 2014-05-08 20:45:30 Summary: Merged in aconrad/tox/fix_test_sdistonly (pull request #103) make test more specific, less prone to failures Affected #: 1 file diff -r dd8cf6df144ace26df9fe2ecacd56680b6c032bc -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d tests/test_z_cmdline.py --- a/tests/test_z_cmdline.py +++ b/tests/test_z_cmdline.py @@ -565,7 +565,7 @@ result.stdout.fnmatch_lines([ "*sdist-make*setup.py*", ]) - assert "virtualenv" not in result.stdout.str() + assert "-mvirtualenv" not in result.stdout.str() def test_separate_sdist_no_sdistfile(cmd, initproj): distshare = cmd.tmpdir.join("distshare") Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 8 20:45:35 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 08 May 2014 18:45:35 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Close branch fix_test_sdistonly Message-ID: <20140508184535.13266.59102@app03.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/d4109b0f097f/ Changeset: d4109b0f097f Branch: fix_test_sdistonly User: hpk42 Date: 2014-05-08 20:45:30 Summary: Close branch fix_test_sdistonly Affected #: 0 files Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 8 20:46:39 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 08 May 2014 18:46:39 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in aconrad/tox/skip-missing-interpreter (pull request #104) Message-ID: <20140508184639.24786.74193@app02.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/b90743edbd42/ Changeset: b90743edbd42 User: hpk42 Date: 2014-05-08 20:46:36 Summary: Merged in aconrad/tox/skip-missing-interpreter (pull request #104) Skip missing interpreters Affected #: 5 files diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +development +----------- + +- fix issue59: add option "--skip-missing-interpreters" which won't fail the + build if Python interpreters listed in tox.ini are missing. + 1.7.1 --------- diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 CONTRIBUTORS --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -23,3 +23,4 @@ Mattieu Agopian Asmund Grammeltwedt Ionel Maries Cristian +Alexandre Conrad diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 tests/test_z_cmdline.py --- a/tests/test_z_cmdline.py +++ b/tests/test_z_cmdline.py @@ -229,6 +229,22 @@ "*ERROR*InterpreterNotFound*xyz_unknown_interpreter*", ]) +def test_skip_unknown_interpreter(cmd, initproj): + initproj("interp123-0.5", filedefs={ + 'tests': {'test_hello.py': "def test_hello(): pass"}, + 'tox.ini': ''' + [testenv:python] + basepython=xyz_unknown_interpreter + [testenv] + changedir=tests + ''' + }) + result = cmd.run("tox", "--skip-missing-interpreters") + assert not result.ret + result.stdout.fnmatch_lines([ + "*SKIPPED*InterpreterNotFound*xyz_unknown_interpreter*", + ]) + def test_unknown_dep(cmd, initproj): initproj("dep123-0.7", filedefs={ 'tests': {'test_hello.py': "def test_hello(): pass"}, diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 tox/_cmdline.py --- a/tox/_cmdline.py +++ b/tox/_cmdline.py @@ -222,6 +222,9 @@ def error(self, msg): self.logline("ERROR: " + msg, red=True) + def skip(self, msg): + self.logline("SKIPPED:" + msg, yellow=True) + def logline(self, msg, **opts): self._reportedlines.append(msg) self.tw.line("%s" % msg, **opts) @@ -461,7 +464,14 @@ retcode = 0 for venv in self.venvlist: status = venv.status - if status and status != "skipped tests": + if isinstance(status, tox.exception.InterpreterNotFound): + msg = " %s: %s" %(venv.envconfig.envname, str(status)) + if self.config.option.skip_missing_interpreters: + self.report.skip(msg) + else: + retcode = 1 + self.report.error(msg) + elif status and status != "skipped tests": msg = " %s: %s" %(venv.envconfig.envname, str(status)) self.report.error(msg) retcode = 1 diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -129,6 +129,8 @@ "'pytest<2.7' or 'django>=1.6'.") parser.add_argument("--sitepackages", action="store_true", help="override sitepackages setting to True in all envs") + parser.add_argument("--skip-missing-interpreters", action="store_true", + help="don't fail tests for missing interpreters") parser.add_argument("args", nargs="*", help="additional arguments available to command positional substitution") Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 8 20:46:39 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 08 May 2014 18:46:39 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Close branch skip-missing-interpreter Message-ID: <20140508184639.8976.37672@app33.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/854cd2eec02c/ Changeset: 854cd2eec02c Branch: skip-missing-interpreter User: hpk42 Date: 2014-05-08 20:46:36 Summary: Close branch skip-missing-interpreter Affected #: 0 files Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 8 20:46:45 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 08 May 2014 18:46:45 -0000 Subject: [Pytest-commit] commit/tox: 3 new changesets Message-ID: <20140508184645.6186.38405@app13.ash-private.bitbucket.org> 3 new commits in tox: https://bitbucket.org/hpk42/tox/commits/25884537a8c8/ Changeset: 25884537a8c8 Branch: skip-missing-interpreter User: aconrad Date: 2014-05-01 08:17:45 Summary: support skipping interpreters if any are missing This implements the option --skip-missing-interpreters. If this option is passed to tox, the tests won't fail if interpreters are missing. The exit status will be 0 if all tests pass but interpreters were missing. Affected #: 3 files diff -r 0bde778e9e0d234a30d207ddde1abcb1678c170e -r 25884537a8c865b1d6f11531f16b946fa71da499 tests/test_z_cmdline.py --- a/tests/test_z_cmdline.py +++ b/tests/test_z_cmdline.py @@ -229,6 +229,22 @@ "*ERROR*InterpreterNotFound*xyz_unknown_interpreter*", ]) +def test_skip_unknown_interpreter(cmd, initproj): + initproj("interp123-0.5", filedefs={ + 'tests': {'test_hello.py': "def test_hello(): pass"}, + 'tox.ini': ''' + [testenv:python] + basepython=xyz_unknown_interpreter + [testenv] + changedir=tests + ''' + }) + result = cmd.run("tox", "--skip-missing-interpreters") + assert not result.ret + result.stdout.fnmatch_lines([ + "*SKIPPED*InterpreterNotFound*xyz_unknown_interpreter*", + ]) + def test_unknown_dep(cmd, initproj): initproj("dep123-0.7", filedefs={ 'tests': {'test_hello.py': "def test_hello(): pass"}, diff -r 0bde778e9e0d234a30d207ddde1abcb1678c170e -r 25884537a8c865b1d6f11531f16b946fa71da499 tox/_cmdline.py --- a/tox/_cmdline.py +++ b/tox/_cmdline.py @@ -222,6 +222,9 @@ def error(self, msg): self.logline("ERROR: " + msg, red=True) + def skip(self, msg): + self.logline("SKIPPED:" + msg, yellow=True) + def logline(self, msg, **opts): self._reportedlines.append(msg) self.tw.line("%s" % msg, **opts) @@ -461,7 +464,14 @@ retcode = 0 for venv in self.venvlist: status = venv.status - if status and status != "skipped tests": + if isinstance(status, tox.exception.InterpreterNotFound): + msg = " %s: %s" %(venv.envconfig.envname, str(status)) + if self.config.option.skip_missing_interpreters: + self.report.skip(msg) + else: + retcode = 1 + self.report.error(msg) + elif status and status != "skipped tests": msg = " %s: %s" %(venv.envconfig.envname, str(status)) self.report.error(msg) retcode = 1 diff -r 0bde778e9e0d234a30d207ddde1abcb1678c170e -r 25884537a8c865b1d6f11531f16b946fa71da499 tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -129,6 +129,8 @@ "'pytest<2.7' or 'django>=1.6'.") parser.add_argument("--sitepackages", action="store_true", help="override sitepackages setting to True in all envs") + parser.add_argument("--skip-missing-interpreters", action="store_true", + help="don't fail tests for missing interpreters") parser.add_argument("args", nargs="*", help="additional arguments available to command positional substitution") https://bitbucket.org/hpk42/tox/commits/b3209345e57a/ Changeset: b3209345e57a Branch: skip-missing-interpreter User: aconrad Date: 2014-05-01 21:12:42 Summary: update CHANGELOG and CONTRIBUTORS Affected #: 2 files diff -r 25884537a8c865b1d6f11531f16b946fa71da499 -r b3209345e57acdcea56283a8a381cd85b6100ad0 CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +development +----------- + +- fix issue59: add option "--skip-missing-interpreters" which won't fail the + build if Python interpreters listed in tox.ini are missing. + 1.7.1 --------- diff -r 25884537a8c865b1d6f11531f16b946fa71da499 -r b3209345e57acdcea56283a8a381cd85b6100ad0 CONTRIBUTORS --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -23,3 +23,4 @@ Mattieu Agopian Asmund Grammeltwedt Ionel Maries Cristian +Alexandre Conrad https://bitbucket.org/hpk42/tox/commits/b90743edbd42/ Changeset: b90743edbd42 User: hpk42 Date: 2014-05-08 20:46:36 Summary: Merged in aconrad/tox/skip-missing-interpreter (pull request #104) Skip missing interpreters Affected #: 5 files diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +development +----------- + +- fix issue59: add option "--skip-missing-interpreters" which won't fail the + build if Python interpreters listed in tox.ini are missing. + 1.7.1 --------- diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 CONTRIBUTORS --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -23,3 +23,4 @@ Mattieu Agopian Asmund Grammeltwedt Ionel Maries Cristian +Alexandre Conrad diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 tests/test_z_cmdline.py --- a/tests/test_z_cmdline.py +++ b/tests/test_z_cmdline.py @@ -229,6 +229,22 @@ "*ERROR*InterpreterNotFound*xyz_unknown_interpreter*", ]) +def test_skip_unknown_interpreter(cmd, initproj): + initproj("interp123-0.5", filedefs={ + 'tests': {'test_hello.py': "def test_hello(): pass"}, + 'tox.ini': ''' + [testenv:python] + basepython=xyz_unknown_interpreter + [testenv] + changedir=tests + ''' + }) + result = cmd.run("tox", "--skip-missing-interpreters") + assert not result.ret + result.stdout.fnmatch_lines([ + "*SKIPPED*InterpreterNotFound*xyz_unknown_interpreter*", + ]) + def test_unknown_dep(cmd, initproj): initproj("dep123-0.7", filedefs={ 'tests': {'test_hello.py': "def test_hello(): pass"}, diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 tox/_cmdline.py --- a/tox/_cmdline.py +++ b/tox/_cmdline.py @@ -222,6 +222,9 @@ def error(self, msg): self.logline("ERROR: " + msg, red=True) + def skip(self, msg): + self.logline("SKIPPED:" + msg, yellow=True) + def logline(self, msg, **opts): self._reportedlines.append(msg) self.tw.line("%s" % msg, **opts) @@ -461,7 +464,14 @@ retcode = 0 for venv in self.venvlist: status = venv.status - if status and status != "skipped tests": + if isinstance(status, tox.exception.InterpreterNotFound): + msg = " %s: %s" %(venv.envconfig.envname, str(status)) + if self.config.option.skip_missing_interpreters: + self.report.skip(msg) + else: + retcode = 1 + self.report.error(msg) + elif status and status != "skipped tests": msg = " %s: %s" %(venv.envconfig.envname, str(status)) self.report.error(msg) retcode = 1 diff -r eb294a76305a09c153b5e21ed5a0c1bc55a3400d -r b90743edbd42cb38b3712688494f6f9948652725 tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -129,6 +129,8 @@ "'pytest<2.7' or 'django>=1.6'.") parser.add_argument("--sitepackages", action="store_true", help="override sitepackages setting to True in all envs") + parser.add_argument("--skip-missing-interpreters", action="store_true", + help="don't fail tests for missing interpreters") parser.add_argument("args", nargs="*", help="additional arguments available to command positional substitution") Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 8 21:04:09 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 08 May 2014 19:04:09 -0000 Subject: [Pytest-commit] commit/tox: hpk42: fix issue59 -- add --skip-if-missing-interpreter. Thanks Message-ID: <20140508190409.30342.82793@app08.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/8e2d6a24bd13/ Changeset: 8e2d6a24bd13 User: hpk42 Date: 2014-05-08 21:04:03 Summary: fix issue59 -- add --skip-if-missing-interpreter. Thanks Alexandre Conrad for the PR. Affected #: 1 file diff -r b90743edbd42cb38b3712688494f6f9948652725 -r 8e2d6a24bd1345158aea401d7afb82e82fcbc4ec CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -2,7 +2,8 @@ ----------- - fix issue59: add option "--skip-missing-interpreters" which won't fail the - build if Python interpreters listed in tox.ini are missing. + build if Python interpreters listed in tox.ini are missing. Thanks + Alexandre Conrad for the PR. 1.7.1 --------- Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From issues-reply at bitbucket.org Fri May 9 19:58:41 2014 From: issues-reply at bitbucket.org (Kirill Sibirev) Date: Fri, 09 May 2014 17:58:41 -0000 Subject: [Pytest-commit] Issue #512: monkeypatch.setattr akward default value in docs (hpk42/pytest) Message-ID: <20140509175841.22441.19964@app08.ash-private.bitbucket.org> New issue 512: monkeypatch.setattr akward default value in docs https://bitbucket.org/hpk42/pytest/issue/512/monkeypatchsetattr-akward-default-value-in Kirill Sibirev: In docs in description of method monkeypatch.setattr (http://pytest.org/latest/monkeypatch.html#_pytest.monkeypatch.monkeypatch.setattr) value arg looks like value=, because of its default value is notset == object(). Not sure is it possible to customize in auto-generated docs, but it looks odd From commits-noreply at bitbucket.org Sat May 10 09:21:04 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 07:21:04 -0000 Subject: [Pytest-commit] commit/tox: 3 new changesets Message-ID: <20140510072104.1617.80939@app08.ash-private.bitbucket.org> 3 new commits in tox: https://bitbucket.org/hpk42/tox/commits/ce1369598289/ Changeset: ce1369598289 Branch: issue_164_msabramo_1 User: Marc Abramowitz Date: 2014-04-03 23:39:22 Summary: Log more info when catch OSError while doing a popen Fixes: https://bitbucket.org/hpk42/tox/issue/164/if-install_command-raises-an-oserror-get-a Affected #: 1 file diff -r 0c390972b576b50dc0e78bd5cbb8e6a164f15f8b -r ce13695982897e4050b2aa3f48ed325b1deca520 tox/_cmdline.py --- a/tox/_cmdline.py +++ b/tox/_cmdline.py @@ -93,8 +93,13 @@ if cwd is None: # XXX cwd = self.session.config.cwd cwd = py.path.local() - popen = self._popen(args, cwd, env=env, - stdout=f, stderr=STDOUT) + try: + popen = self._popen(args, cwd, env=env, + stdout=f, stderr=STDOUT) + except OSError: + self.report.error("invocation failed, args: %s, cwd: %s" % + (args, cwd)) + raise popen.outpath = outpath popen.args = [str(x) for x in args] popen.cwd = cwd https://bitbucket.org/hpk42/tox/commits/b44778191a7b/ Changeset: b44778191a7b Branch: issue_164_msabramo_1 User: Marc Abramowitz Date: 2014-04-29 08:19:28 Summary: Add test_run_custom_install_command_error Affected #: 1 file diff -r ce13695982897e4050b2aa3f48ed325b1deca520 -r b44778191a7b4f50ac24b1d6c05a28096796b0ff tests/test_z_cmdline.py --- a/tests/test_z_cmdline.py +++ b/tests/test_z_cmdline.py @@ -193,6 +193,19 @@ ]) assert result.ret +def test_run_custom_install_command_error(cmd, initproj): + initproj("interp123-0.5", filedefs={ + 'tox.ini': ''' + [testenv] + install_command=./tox.ini {opts} {packages} + ''' + }) + result = cmd.run("tox") + result.stdout.fnmatch_lines([ + "ERROR: invocation failed, args: ['*/tox.ini*", + ]) + assert result.ret + def test_unknown_interpreter_and_env(cmd, initproj): initproj("interp123-0.5", filedefs={ 'tests': {'test_hello.py': "def test_hello(): pass"}, https://bitbucket.org/hpk42/tox/commits/d203e100720d/ Changeset: d203e100720d User: hpk42 Date: 2014-05-10 09:21:01 Summary: Merged in msabramo/tox/issue_164_msabramo_1 (pull request #92) Log more info when catch OSError while doing a popen Affected #: 2 files diff -r 8e2d6a24bd1345158aea401d7afb82e82fcbc4ec -r d203e100720d3b153e557e63f63cfde252edd503 tests/test_z_cmdline.py --- a/tests/test_z_cmdline.py +++ b/tests/test_z_cmdline.py @@ -191,6 +191,19 @@ ]) assert result.ret +def test_run_custom_install_command_error(cmd, initproj): + initproj("interp123-0.5", filedefs={ + 'tox.ini': ''' + [testenv] + install_command=./tox.ini {opts} {packages} + ''' + }) + result = cmd.run("tox") + result.stdout.fnmatch_lines([ + "ERROR: invocation failed, args: ['*/tox.ini*", + ]) + assert result.ret + def test_unknown_interpreter_and_env(cmd, initproj): initproj("interp123-0.5", filedefs={ 'tests': {'test_hello.py': "def test_hello(): pass"}, diff -r 8e2d6a24bd1345158aea401d7afb82e82fcbc4ec -r d203e100720d3b153e557e63f63cfde252edd503 tox/_cmdline.py --- a/tox/_cmdline.py +++ b/tox/_cmdline.py @@ -92,8 +92,13 @@ if cwd is None: # XXX cwd = self.session.config.cwd cwd = py.path.local() - popen = self._popen(args, cwd, env=env, - stdout=f, stderr=STDOUT) + try: + popen = self._popen(args, cwd, env=env, + stdout=f, stderr=STDOUT) + except OSError: + self.report.error("invocation failed, args: %s, cwd: %s" % + (args, cwd)) + raise popen.outpath = outpath popen.args = [str(x) for x in args] popen.cwd = cwd Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 09:21:04 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 07:21:04 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in msabramo/tox/issue_164_msabramo_1 (pull request #92) Message-ID: <20140510072104.2063.35810@app13.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/d203e100720d/ Changeset: d203e100720d User: hpk42 Date: 2014-05-10 09:21:01 Summary: Merged in msabramo/tox/issue_164_msabramo_1 (pull request #92) Log more info when catch OSError while doing a popen Affected #: 2 files diff -r 8e2d6a24bd1345158aea401d7afb82e82fcbc4ec -r d203e100720d3b153e557e63f63cfde252edd503 tests/test_z_cmdline.py --- a/tests/test_z_cmdline.py +++ b/tests/test_z_cmdline.py @@ -191,6 +191,19 @@ ]) assert result.ret +def test_run_custom_install_command_error(cmd, initproj): + initproj("interp123-0.5", filedefs={ + 'tox.ini': ''' + [testenv] + install_command=./tox.ini {opts} {packages} + ''' + }) + result = cmd.run("tox") + result.stdout.fnmatch_lines([ + "ERROR: invocation failed, args: ['*/tox.ini*", + ]) + assert result.ret + def test_unknown_interpreter_and_env(cmd, initproj): initproj("interp123-0.5", filedefs={ 'tests': {'test_hello.py': "def test_hello(): pass"}, diff -r 8e2d6a24bd1345158aea401d7afb82e82fcbc4ec -r d203e100720d3b153e557e63f63cfde252edd503 tox/_cmdline.py --- a/tox/_cmdline.py +++ b/tox/_cmdline.py @@ -92,8 +92,13 @@ if cwd is None: # XXX cwd = self.session.config.cwd cwd = py.path.local() - popen = self._popen(args, cwd, env=env, - stdout=f, stderr=STDOUT) + try: + popen = self._popen(args, cwd, env=env, + stdout=f, stderr=STDOUT) + except OSError: + self.report.error("invocation failed, args: %s, cwd: %s" % + (args, cwd)) + raise popen.outpath = outpath popen.args = [str(x) for x in args] popen.cwd = cwd Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 09:21:06 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 07:21:06 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Close branch issue_164_msabramo_1 Message-ID: <20140510072106.22238.14836@app01.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/1902d3f2ad37/ Changeset: 1902d3f2ad37 Branch: issue_164_msabramo_1 User: hpk42 Date: 2014-05-10 09:21:01 Summary: Close branch issue_164_msabramo_1 Affected #: 0 files Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 09:22:14 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 07:22:14 -0000 Subject: [Pytest-commit] commit/tox: hpk42: fix issue164: better traceback info in case of failing test commands. Message-ID: <20140510072214.1767.2952@app04.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/3556f3c79bc7/ Changeset: 3556f3c79bc7 User: hpk42 Date: 2014-05-10 09:22:07 Summary: fix issue164: better traceback info in case of failing test commands. Thanks Marc Abramowitz for the PR. Affected #: 1 file diff -r d203e100720d3b153e557e63f63cfde252edd503 -r 3556f3c79bc74d76c4cca2aff1af7f28c7074aaa CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,10 @@ build if Python interpreters listed in tox.ini are missing. Thanks Alexandre Conrad for the PR. +- fix issue164: better traceback info in case of failing test commands. + Thanks Marc Abramowitz for the PR. + + 1.7.1 --------- Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 11:43:55 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 09:43:55 -0000 Subject: [Pytest-commit] commit/tox: hpk42: remove executable bit Message-ID: <20140510094355.17277.58518@app18.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/59a4722ecc32/ Changeset: 59a4722ecc32 User: hpk42 Date: 2014-05-10 11:43:40 Summary: remove executable bit Affected #: 1 file Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 12:07:37 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 10:07:37 -0000 Subject: [Pytest-commit] commit/tox: 2 new changesets Message-ID: <20140510100737.23350.35484@app03.ash-private.bitbucket.org> 2 new commits in tox: https://bitbucket.org/hpk42/tox/commits/8730f3fd5bf0/ Changeset: 8730f3fd5bf0 User: pmoore Date: 2014-05-06 15:44:45 Summary: Return value of locate_via_py was being ignored Affected #: 1 file diff -r dd8cf6df144ace26df9fe2ecacd56680b6c032bc -r 8730f3fd5bf03cbed41aeee883bc509a047e4ab9 tox/interpreters.py --- a/tox/interpreters.py +++ b/tox/interpreters.py @@ -159,7 +159,7 @@ # The standard executables can be found as a last resort via the # Python launcher py.exe if m: - locate_via_py(*m.groups()) + return locate_via_py(*m.groups()) def pyinfo(): import sys https://bitbucket.org/hpk42/tox/commits/c07badfc0f02/ Changeset: c07badfc0f02 User: hpk42 Date: 2014-05-10 12:07:33 Summary: Merged in pmoore/tox (pull request #107) Return value of locate_via_py was being ignored Affected #: 1 file diff -r 59a4722ecc323e9f23796e97ee05233566a6c565 -r c07badfc0f02b5816403d3b5dc324c146708efb5 tox/interpreters.py --- a/tox/interpreters.py +++ b/tox/interpreters.py @@ -159,7 +159,7 @@ # The standard executables can be found as a last resort via the # Python launcher py.exe if m: - locate_via_py(*m.groups()) + return locate_via_py(*m.groups()) def pyinfo(): import sys Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 12:07:37 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 10:07:37 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in pmoore/tox (pull request #107) Message-ID: <20140510100737.24219.34123@app07.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/c07badfc0f02/ Changeset: c07badfc0f02 User: hpk42 Date: 2014-05-10 12:07:33 Summary: Merged in pmoore/tox (pull request #107) Return value of locate_via_py was being ignored Affected #: 1 file diff -r 59a4722ecc323e9f23796e97ee05233566a6c565 -r c07badfc0f02b5816403d3b5dc324c146708efb5 tox/interpreters.py --- a/tox/interpreters.py +++ b/tox/interpreters.py @@ -159,7 +159,7 @@ # The standard executables can be found as a last resort via the # Python launcher py.exe if m: - locate_via_py(*m.groups()) + return locate_via_py(*m.groups()) def pyinfo(): import sys Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 12:08:54 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 10:08:54 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in morgan_fainberg/tox (pull request #86) Message-ID: <20140510100854.2555.84705@app12.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/0f763647663b/ Changeset: 0f763647663b User: hpk42 Date: 2014-05-10 12:08:50 Summary: Merged in morgan_fainberg/tox (pull request #86) Support optional ENV variable substitution in tox.ini Affected #: 3 files diff -r c07badfc0f02b5816403d3b5dc324c146708efb5 -r 0f763647663b72f85174897ac1fdbfd5026e97d2 doc/config.txt --- a/doc/config.txt +++ b/doc/config.txt @@ -284,6 +284,26 @@ and raise an Error if the environment variable does not exist. + +environment variable substitutions with default values +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +If you specify a substitution string like this:: + + {env:KEY:DEFAULTVALUE} + +then the value will be retrieved as ``os.environ['KEY']`` +and replace with DEFAULTVALUE if the environment variable does not +exist. + +If you specify a substitution string like this:: + + {env:KEY:} + +then the value will be retrieved as ``os.environ['KEY']`` +and replace with and empty string if the environment variable does not +exist. + .. _`command positional substitution`: .. _`positional substitution`: diff -r c07badfc0f02b5816403d3b5dc324c146708efb5 -r 0f763647663b72f85174897ac1fdbfd5026e97d2 tests/test_config.py --- a/tests/test_config.py +++ b/tests/test_config.py @@ -241,6 +241,22 @@ py.test.raises(tox.exception.ConfigError, 'reader.getdefault("section", "key2")') + def test_getdefault_environment_substitution_with_default(self, monkeypatch, newconfig): + monkeypatch.setenv("KEY1", "hello") + config = newconfig(""" + [section] + key1={env:KEY1:DEFAULT_VALUE} + key2={env:KEY2:DEFAULT_VALUE} + key3={env:KEY3:} + """) + reader = IniReader(config._cfg) + x = reader.getdefault("section", "key1") + assert x == "hello" + x = reader.getdefault("section", "key2") + assert x == "DEFAULT_VALUE" + x = reader.getdefault("section", "key3") + assert x == "" + def test_getdefault_other_section_substitution(self, newconfig): config = newconfig(""" [section] diff -r c07badfc0f02b5816403d3b5dc324c146708efb5 -r 0f763647663b72f85174897ac1fdbfd5026e97d2 tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -595,17 +595,25 @@ return x def _replace_env(self, match): - envkey = match.group('substitution_value') - if not envkey: + match_value = match.group('substitution_value') + if not match_value: raise tox.exception.ConfigError( 'env: requires an environment variable name') - if not envkey in os.environ: + default = None + envkey_split = match_value.split(':', 1) + + if len(envkey_split) is 2: + envkey, default = envkey_split + else: + envkey = match_value + + if not envkey in os.environ and default is None: raise tox.exception.ConfigError( "substitution env:%r: unkown environment variable %r" % (envkey, envkey)) - return os.environ[envkey] + return os.environ.get(envkey, default) def _substitute_from_other_section(self, key): if key.startswith("[") and "]" in key: Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 12:08:54 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 10:08:54 -0000 Subject: [Pytest-commit] commit/tox: 4 new changesets Message-ID: <20140510100854.3746.33971@app04.ash-private.bitbucket.org> 4 new commits in tox: https://bitbucket.org/hpk42/tox/commits/cbcde59447f5/ Changeset: cbcde59447f5 User: morgan_fainberg Date: 2014-03-10 21:39:48 Summary: Support optional ENV variable substitution in tox.ini Add in support for optional ENV variable substitutions where instead of raising an error if the environmental variable does not exist in os.environ, the value is substituted with an empty string. Affected #: 3 files diff -r b0360a54ab368ef428c7f83601ba6b64f6fec64f -r cbcde59447f5e025f6ab08a38cbac7ac4dcfa27a doc/config.txt --- a/doc/config.txt +++ b/doc/config.txt @@ -292,6 +292,18 @@ and raise an Error if the environment variable does not exist. + +optional environment variable substitutions +++++++++++++++++++++++++++++++++++ + +If you specify a substitution string like this:: + + {optionalenv:KEY} + +then the value will be retrieved as ``os.environ['KEY']`` +and replace with '' if the environment variable does not +exist + .. _`command positional substitution`: .. _`positional substitution`: diff -r b0360a54ab368ef428c7f83601ba6b64f6fec64f -r cbcde59447f5e025f6ab08a38cbac7ac4dcfa27a tests/test_config.py --- a/tests/test_config.py +++ b/tests/test_config.py @@ -242,6 +242,19 @@ py.test.raises(tox.exception.ConfigError, 'reader.getdefault("section", "key2")') + def test_getdefault_environment_optional_sub(self, monkeypatch, newconfig): + monkeypatch.setenv("KEY1", "hello") + config = newconfig(""" + [section] + key1={optionalenv:KEY1} + key2={optionalenv:KEY2} + """) + reader = IniReader(config._cfg) + x = reader.getdefault("section", "key1") + assert x == "hello" + x = reader.getdefault("section", "key2") + assert x == "" + def test_getdefault_other_section_substitution(self, newconfig): config = newconfig(""" [section] diff -r b0360a54ab368ef428c7f83601ba6b64f6fec64f -r cbcde59447f5e025f6ab08a38cbac7ac4dcfa27a tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -595,18 +595,25 @@ #print "getdefault", section, name, "returned", repr(x) return x - def _replace_env(self, match): + def _do_replace_env(self, match, error=True): envkey = match.group('substitution_value') if not envkey: raise tox.exception.ConfigError( 'env: requires an environment variable name') if not envkey in os.environ: - raise tox.exception.ConfigError( - "substitution env:%r: unkown environment variable %r" % - (envkey, envkey)) + if error: + raise tox.exception.ConfigError( + "substitution env:%r: unkown environment variable %r" % + (envkey, envkey)) - return os.environ[envkey] + return os.environ.get(envkey, '') + + def _replace_env(self, match): + return self._do_replace_env(match) + + def _replace_env_no_error(self, match): + return self._do_replace_env(match, error=False) def _substitute_from_other_section(self, key): if key.startswith("[") and "]" in key: @@ -647,6 +654,7 @@ handlers = { 'env' : self._replace_env, + 'optionalenv' : self._replace_env_no_error, None : self._replace_substitution, } try: https://bitbucket.org/hpk42/tox/commits/29b0c53fc041/ Changeset: 29b0c53fc041 User: morgan_fainberg Date: 2014-03-19 08:18:30 Summary: Make optionalenv defenv to support default values Change the 'optionalenv' substitution to 'defenv' and support providing a default substitution value. Format is "defenv:DEFAULTVALUE:KEY". Affected #: 3 files diff -r cbcde59447f5e025f6ab08a38cbac7ac4dcfa27a -r 29b0c53fc0411d9894643ce4d7294e3dbeb15727 doc/config.txt --- a/doc/config.txt +++ b/doc/config.txt @@ -293,16 +293,24 @@ does not exist. -optional environment variable substitutions -++++++++++++++++++++++++++++++++++ +environment variable substitutions with default values +++++++++++++++++++++++++++++++++++++++++++++++++++++++ If you specify a substitution string like this:: - {optionalenv:KEY} + {defenv:DEFAULTVALUE:KEY} then the value will be retrieved as ``os.environ['KEY']`` -and replace with '' if the environment variable does not -exist +and replace with DEFAULTVALUE if the environment variable does not +exist. + +If you specify a substitution string like this:: + + {defenv::KEY} + +then the value will be retrieved as ``os.environ['KEY']`` +and replace with and empty string if the environment variable does not +exist. .. _`command positional substitution`: .. _`positional substitution`: diff -r cbcde59447f5e025f6ab08a38cbac7ac4dcfa27a -r 29b0c53fc0411d9894643ce4d7294e3dbeb15727 tests/test_config.py --- a/tests/test_config.py +++ b/tests/test_config.py @@ -242,17 +242,20 @@ py.test.raises(tox.exception.ConfigError, 'reader.getdefault("section", "key2")') - def test_getdefault_environment_optional_sub(self, monkeypatch, newconfig): + def test_getdefault_environment_substitution_with_default(self, monkeypatch, newconfig): monkeypatch.setenv("KEY1", "hello") config = newconfig(""" [section] - key1={optionalenv:KEY1} - key2={optionalenv:KEY2} + key1={defenv:DEFAULT_VALUE:KEY1} + key2={defenv:DEFAULT_VALUE:KEY2} + key3={defenv::KEY3} """) reader = IniReader(config._cfg) x = reader.getdefault("section", "key1") assert x == "hello" x = reader.getdefault("section", "key2") + assert x == "DEFAULT_VALUE" + x = reader.getdefault("section", "key3") assert x == "" def test_getdefault_other_section_substitution(self, newconfig): diff -r cbcde59447f5e025f6ab08a38cbac7ac4dcfa27a -r 29b0c53fc0411d9894643ce4d7294e3dbeb15727 tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -595,25 +595,32 @@ #print "getdefault", section, name, "returned", repr(x) return x - def _do_replace_env(self, match, error=True): - envkey = match.group('substitution_value') + def _do_replace_env(self, envkey, default=None): if not envkey: raise tox.exception.ConfigError( 'env: requires an environment variable name') - if not envkey in os.environ: - if error: - raise tox.exception.ConfigError( - "substitution env:%r: unkown environment variable %r" % - (envkey, envkey)) + if not envkey in os.environ and default is None: + raise tox.exception.ConfigError( + "substitution env:%r: unkown environment variable %r" % + (envkey, envkey)) - return os.environ.get(envkey, '') + return os.environ.get(envkey, default) def _replace_env(self, match): - return self._do_replace_env(match) + envkey = match.group('substitution_value') + return self._do_replace_env(envkey) - def _replace_env_no_error(self, match): - return self._do_replace_env(match, error=False) + def _replace_env_with_default(self, match): + envkey = match.group('substitution_value') + try: + default, envkey = envkey.split(':', 1) + except ValueError: + raise tox.exception.ConfigError( + "substitution 'defenv:%r': malformed, expected " + "'defenv:DEFAULTVALUE:KEY'" % match) + + return self._do_replace_env(envkey, default=default) def _substitute_from_other_section(self, key): if key.startswith("[") and "]" in key: @@ -654,7 +661,7 @@ handlers = { 'env' : self._replace_env, - 'optionalenv' : self._replace_env_no_error, + 'defenv' : self._replace_env_with_default, None : self._replace_substitution, } try: https://bitbucket.org/hpk42/tox/commits/08f051499562/ Changeset: 08f051499562 User: morgan_fainberg Date: 2014-03-25 23:29:38 Summary: Make optional env replacements use the ``env`` keyword The ':' character is a reserved character in shell, meaning it cannot be used as part of the ENV variable name. If the ENV key has a ':' in it split on the ':' and use the second value as the default instead of raising an exception. Affected #: 3 files diff -r 29b0c53fc0411d9894643ce4d7294e3dbeb15727 -r 08f05149956265b2bd85cb9609ce4153c1b8a39a doc/config.txt --- a/doc/config.txt +++ b/doc/config.txt @@ -298,7 +298,7 @@ If you specify a substitution string like this:: - {defenv:DEFAULTVALUE:KEY} + {env:KEY:DEFAULTVALUE} then the value will be retrieved as ``os.environ['KEY']`` and replace with DEFAULTVALUE if the environment variable does not @@ -306,7 +306,7 @@ If you specify a substitution string like this:: - {defenv::KEY} + {env:KEY:} then the value will be retrieved as ``os.environ['KEY']`` and replace with and empty string if the environment variable does not diff -r 29b0c53fc0411d9894643ce4d7294e3dbeb15727 -r 08f05149956265b2bd85cb9609ce4153c1b8a39a tests/test_config.py --- a/tests/test_config.py +++ b/tests/test_config.py @@ -246,9 +246,9 @@ monkeypatch.setenv("KEY1", "hello") config = newconfig(""" [section] - key1={defenv:DEFAULT_VALUE:KEY1} - key2={defenv:DEFAULT_VALUE:KEY2} - key3={defenv::KEY3} + key1={env:KEY1:DEFAULT_VALUE} + key2={env:KEY2:DEFAULT_VALUE} + key3={env:KEY3:} """) reader = IniReader(config._cfg) x = reader.getdefault("section", "key1") diff -r 29b0c53fc0411d9894643ce4d7294e3dbeb15727 -r 08f05149956265b2bd85cb9609ce4153c1b8a39a tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -595,11 +595,20 @@ #print "getdefault", section, name, "returned", repr(x) return x - def _do_replace_env(self, envkey, default=None): - if not envkey: + def _replace_env(self, match): + match_value = match.group('substitution_value') + if not match_value: raise tox.exception.ConfigError( 'env: requires an environment variable name') + default = None + envkey_split = match_value.split(':', 1) + + if len(envkey_split) is 2: + envkey, default = envkey_split + else: + envkey = match_value + if not envkey in os.environ and default is None: raise tox.exception.ConfigError( "substitution env:%r: unkown environment variable %r" % @@ -607,21 +616,6 @@ return os.environ.get(envkey, default) - def _replace_env(self, match): - envkey = match.group('substitution_value') - return self._do_replace_env(envkey) - - def _replace_env_with_default(self, match): - envkey = match.group('substitution_value') - try: - default, envkey = envkey.split(':', 1) - except ValueError: - raise tox.exception.ConfigError( - "substitution 'defenv:%r': malformed, expected " - "'defenv:DEFAULTVALUE:KEY'" % match) - - return self._do_replace_env(envkey, default=default) - def _substitute_from_other_section(self, key): if key.startswith("[") and "]" in key: i = key.find("]") @@ -661,7 +655,6 @@ handlers = { 'env' : self._replace_env, - 'defenv' : self._replace_env_with_default, None : self._replace_substitution, } try: https://bitbucket.org/hpk42/tox/commits/0f763647663b/ Changeset: 0f763647663b User: hpk42 Date: 2014-05-10 12:08:50 Summary: Merged in morgan_fainberg/tox (pull request #86) Support optional ENV variable substitution in tox.ini Affected #: 3 files diff -r c07badfc0f02b5816403d3b5dc324c146708efb5 -r 0f763647663b72f85174897ac1fdbfd5026e97d2 doc/config.txt --- a/doc/config.txt +++ b/doc/config.txt @@ -284,6 +284,26 @@ and raise an Error if the environment variable does not exist. + +environment variable substitutions with default values +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +If you specify a substitution string like this:: + + {env:KEY:DEFAULTVALUE} + +then the value will be retrieved as ``os.environ['KEY']`` +and replace with DEFAULTVALUE if the environment variable does not +exist. + +If you specify a substitution string like this:: + + {env:KEY:} + +then the value will be retrieved as ``os.environ['KEY']`` +and replace with and empty string if the environment variable does not +exist. + .. _`command positional substitution`: .. _`positional substitution`: diff -r c07badfc0f02b5816403d3b5dc324c146708efb5 -r 0f763647663b72f85174897ac1fdbfd5026e97d2 tests/test_config.py --- a/tests/test_config.py +++ b/tests/test_config.py @@ -241,6 +241,22 @@ py.test.raises(tox.exception.ConfigError, 'reader.getdefault("section", "key2")') + def test_getdefault_environment_substitution_with_default(self, monkeypatch, newconfig): + monkeypatch.setenv("KEY1", "hello") + config = newconfig(""" + [section] + key1={env:KEY1:DEFAULT_VALUE} + key2={env:KEY2:DEFAULT_VALUE} + key3={env:KEY3:} + """) + reader = IniReader(config._cfg) + x = reader.getdefault("section", "key1") + assert x == "hello" + x = reader.getdefault("section", "key2") + assert x == "DEFAULT_VALUE" + x = reader.getdefault("section", "key3") + assert x == "" + def test_getdefault_other_section_substitution(self, newconfig): config = newconfig(""" [section] diff -r c07badfc0f02b5816403d3b5dc324c146708efb5 -r 0f763647663b72f85174897ac1fdbfd5026e97d2 tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -595,17 +595,25 @@ return x def _replace_env(self, match): - envkey = match.group('substitution_value') - if not envkey: + match_value = match.group('substitution_value') + if not match_value: raise tox.exception.ConfigError( 'env: requires an environment variable name') - if not envkey in os.environ: + default = None + envkey_split = match_value.split(':', 1) + + if len(envkey_split) is 2: + envkey, default = envkey_split + else: + envkey = match_value + + if not envkey in os.environ and default is None: raise tox.exception.ConfigError( "substitution env:%r: unkown environment variable %r" % (envkey, envkey)) - return os.environ[envkey] + return os.environ.get(envkey, default) def _substitute_from_other_section(self, key): if key.startswith("[") and "]" in key: Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 12:10:43 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 10:10:43 -0000 Subject: [Pytest-commit] commit/tox: hpk42: changelog entry: support optional env variable substitution, thanks Message-ID: <20140510101043.18776.40751@app11.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/ed0dd0ea9de6/ Changeset: ed0dd0ea9de6 User: hpk42 Date: 2014-05-10 12:10:37 Summary: changelog entry: support optional env variable substitution, thanks Morgan Fainberg for the complete PR. Affected #: 2 files diff -r 0f763647663b72f85174897ac1fdbfd5026e97d2 -r ed0dd0ea9de62a58b05b0e7a8b272125d63593e4 CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,9 @@ - fix issue164: better traceback info in case of failing test commands. Thanks Marc Abramowitz for the PR. +- support optional env variable substitution, thanks Morgan Fainberg + for the complete PR. + 1.7.1 --------- diff -r 0f763647663b72f85174897ac1fdbfd5026e97d2 -r ed0dd0ea9de62a58b05b0e7a8b272125d63593e4 CONTRIBUTORS --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -24,3 +24,4 @@ Asmund Grammeltwedt Ionel Maries Cristian Alexandre Conrad +Morgan Fainberg Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 12:17:10 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 10:17:10 -0000 Subject: [Pytest-commit] commit/tox: 3 new changesets Message-ID: <20140510101710.3746.33153@app04.ash-private.bitbucket.org> 3 new commits in tox: https://bitbucket.org/hpk42/tox/commits/4ab00764b338/ Changeset: 4ab00764b338 User: schlamar Date: 2014-03-25 08:44:38 Summary: Limit PYTHONHASHSEED to 1024 on Windows to prevent possible MemoryErrors. See http://bugs.python.org/issue20954. Affected #: 1 file diff -r e8d513cba7d9b36dba0b5995829a23c8a1c1bdb3 -r 4ab00764b33896b5b3e7da6f282242f3378fc0a7 tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -123,7 +123,8 @@ parser.add_argument("--hashseed", action="store", metavar="SEED", default=None, help="set PYTHONHASHSEED to SEED before running commands. " - "Defaults to a random integer in the range 1 to 4294967295. " + "Defaults to a random integer in the range [1, 4294967295] " + "([1, 1024] on Windows). " "Passing 'noset' suppresses this behavior.") parser.add_argument("--force-dep", action="append", metavar="REQ", default=None, @@ -200,7 +201,10 @@ return None def make_hashseed(): - return str(random.randint(1, 4294967295)) + max_seed = 4294967295 + if sys.platform == 'win32': + max_seed = 1024 + return str(random.randint(1, max_seed)) class parseini: def __init__(self, config, inipath): https://bitbucket.org/hpk42/tox/commits/b0afb9641c00/ Changeset: b0afb9641c00 User: schlamar Date: 2014-03-25 08:51:10 Summary: Restrict PYTHONHASHSEED limitation on Windows to Python < 3.4. Affected #: 1 file diff -r 4ab00764b33896b5b3e7da6f282242f3378fc0a7 -r b0afb9641c00aaed4bc83c34bc033017dec1f1c5 tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -202,7 +202,7 @@ def make_hashseed(): max_seed = 4294967295 - if sys.platform == 'win32': + if sys.platform == 'win32' and sys.version_info < (3, 4): max_seed = 1024 return str(random.randint(1, max_seed)) https://bitbucket.org/hpk42/tox/commits/1756abc84032/ Changeset: 1756abc84032 User: hpk42 Date: 2014-05-10 12:17:07 Summary: Merged in schlamar/tox (pull request #90) Limit PYTHONHASHSEED to 1024 on Windows to prevent possible MemoryErrors. Affected #: 1 file diff -r ed0dd0ea9de62a58b05b0e7a8b272125d63593e4 -r 1756abc84032639371a9503a59bda4747055985a tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -120,7 +120,8 @@ parser.add_argument("--hashseed", action="store", metavar="SEED", default=None, help="set PYTHONHASHSEED to SEED before running commands. " - "Defaults to a random integer in the range 1 to 4294967295. " + "Defaults to a random integer in the range [1, 4294967295] " + "([1, 1024] on Windows). " "Passing 'noset' suppresses this behavior.") parser.add_argument("--force-dep", action="append", metavar="REQ", default=None, @@ -199,7 +200,10 @@ return None def make_hashseed(): - return str(random.randint(1, 4294967295)) + max_seed = 4294967295 + if sys.platform == 'win32' and sys.version_info < (3, 4): + max_seed = 1024 + return str(random.randint(1, max_seed)) class parseini: def __init__(self, config, inipath): Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 12:17:11 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 10:17:11 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in schlamar/tox (pull request #90) Message-ID: <20140510101711.4188.59195@app09.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/1756abc84032/ Changeset: 1756abc84032 User: hpk42 Date: 2014-05-10 12:17:07 Summary: Merged in schlamar/tox (pull request #90) Limit PYTHONHASHSEED to 1024 on Windows to prevent possible MemoryErrors. Affected #: 1 file diff -r ed0dd0ea9de62a58b05b0e7a8b272125d63593e4 -r 1756abc84032639371a9503a59bda4747055985a tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -120,7 +120,8 @@ parser.add_argument("--hashseed", action="store", metavar="SEED", default=None, help="set PYTHONHASHSEED to SEED before running commands. " - "Defaults to a random integer in the range 1 to 4294967295. " + "Defaults to a random integer in the range [1, 4294967295] " + "([1, 1024] on Windows). " "Passing 'noset' suppresses this behavior.") parser.add_argument("--force-dep", action="append", metavar="REQ", default=None, @@ -199,7 +200,10 @@ return None def make_hashseed(): - return str(random.randint(1, 4294967295)) + max_seed = 4294967295 + if sys.platform == 'win32' and sys.version_info < (3, 4): + max_seed = 1024 + return str(random.randint(1, max_seed)) class parseini: def __init__(self, config, inipath): Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 12:18:59 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 10:18:59 -0000 Subject: [Pytest-commit] commit/tox: hpk42: limit python hashseed to 1024 on Windows to prevent possible Message-ID: <20140510101859.13148.25764@app10.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/6dc231b739cc/ Changeset: 6dc231b739cc User: hpk42 Date: 2014-05-10 12:17:53 Summary: limit python hashseed to 1024 on Windows to prevent possible memory errors. Affected #: 2 files diff -r 1756abc84032639371a9503a59bda4747055985a -r 6dc231b739cc80b04910e261cb8960430a3e963c CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -3,14 +3,16 @@ - fix issue59: add option "--skip-missing-interpreters" which won't fail the build if Python interpreters listed in tox.ini are missing. Thanks - Alexandre Conrad for the PR. + Alexandre Conrad for PR104. - fix issue164: better traceback info in case of failing test commands. - Thanks Marc Abramowitz for the PR. + Thanks Marc Abramowitz for PR92. - support optional env variable substitution, thanks Morgan Fainberg - for the complete PR. + for PR86. +- limit python hashseed to 1024 on Windows to prevent possible + memory errors. Thanks March Schlaich for the PR90. 1.7.1 --------- diff -r 1756abc84032639371a9503a59bda4747055985a -r 6dc231b739cc80b04910e261cb8960430a3e963c CONTRIBUTORS --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -25,3 +25,4 @@ Ionel Maries Cristian Alexandre Conrad Morgan Fainberg +Marc Schleich Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 13:49:32 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 11:49:32 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: fix issue512: show "" for arguments which might not be set Message-ID: <20140510114932.18776.39411@app11.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/be00b91e997a/ Changeset: be00b91e997a User: hpk42 Date: 2014-05-10 13:49:24 Summary: fix issue512: show "" for arguments which might not be set in monkeypatch plugin. Improves output in documentation. Affected #: 2 files diff -r 26d43b6c78506d6cc267009d3f0fccf9a5066b2a -r be00b91e997a398116539b030e09b25fce816032 CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -78,6 +78,9 @@ functions, including unittest-style Classes. If set to False, the test will not be collected. +- fix issue512: show "" for arguments which might not be set + in monkeypatch plugin. Improves output in documentation. + 2.5.2 ----------------------------------- diff -r 26d43b6c78506d6cc267009d3f0fccf9a5066b2a -r be00b91e997a398116539b030e09b25fce816032 _pytest/monkeypatch.py --- a/_pytest/monkeypatch.py +++ b/_pytest/monkeypatch.py @@ -59,7 +59,11 @@ -notset = object() +class Notset: + def __repr__(self): + return "" + +notset = Notset() class monkeypatch: """ object keeping a record of setattr/item/env/syspath changes. """ Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 10 14:07:44 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 10 May 2014 12:07:44 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: remove the idea that nose support should be moved to a plugin. Message-ID: <20140510120744.12763.84068@app09.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/d969b663878a/ Changeset: d969b663878a User: hpk42 Date: 2014-05-10 14:00:09 Summary: remove the idea that nose support should be moved to a plugin. Affected #: 1 file diff -r be00b91e997a398116539b030e09b25fce816032 -r d969b663878a519dfeba98d5b65a254e95454e14 ISSUES.txt --- a/ISSUES.txt +++ b/ISSUES.txt @@ -79,15 +79,6 @@ to rewrite them. Together with the previously mentioned setup_test() maybe the setupfunc could be ommitted? -checks / deprecations for next release ---------------------------------------------------------------- -tags: bug 2.4 core xdist - -* check oejskit plugin compatibility -* move pytest_nose out of pylib because it implicitely extends - the protocol now - setup/teardown is called at module level. - consider making calling of setup/teardown configurable - optimizations --------------------------------------------------------------- tags: 2.4 core Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From issues-reply at bitbucket.org Sun May 11 02:27:44 2014 From: issues-reply at bitbucket.org (Steven Myint) Date: Sun, 11 May 2014 00:27:44 -0000 Subject: [Pytest-commit] Issue #171: Permission denied with Python 3.4 (hpk42/tox) Message-ID: <20140511002744.8264.57903@app17.ash-private.bitbucket.org> New issue 171: Permission denied with Python 3.4 https://bitbucket.org/hpk42/tox/issue/171/permission-denied-with-python-34 Steven Myint: ```text $ git clone https://github.com/jcrocholl/pep8 $ cd pep8 $ tox -e py34 GLOB sdist-make: /Users/myint/tmp/show/pep8/setup.py py34 create: /Users/myint/tmp/show/pep8/.tox/py34 py34 inst: /Users/myint/tmp/show/pep8/.tox/dist/pep8-1.5.7a0.zip ERROR: invocation failed, logfile: /Users/myint/tmp/show/pep8/.tox/py34/log/py34-1.log ERROR: actionid=py34 msg=installpkg cmdargs=[local('/Users/myint/tmp/show/pep8/.tox/py34/bin/pip'), 'install', '--pre', '/Users/myint/tmp/show/pep8/.tox/dist/pep8-1.5.7a0.zip'] env={'HISTSIZE': '10000', '__CF_USER_TEXT_ENCODING': '0x1F5:0:0', 'TERM_PROGRAM': 'iTerm.app', 'C_INCLUDE_PATH': '/Users/myint/local/include:/opt/local/include:', 'LANG': 'en_US.UTF-8', '_': '/Users/myint/Library/Python/3.4/bin/tox', 'EDITOR': "vim -c ':0'", 'COMMAND_MODE': 'unix2003', 'PATH': '/Users/myint/tmp/show/pep8/.tox/py34/bin:/Users/myint/.cabal/bin:/Users/myint/Library/Python/3.4/bin:/Users/myint/local/bin:/Users/myint/dotfiles/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', 'GIT_PS1_SHOWDIRTYSTATE': '1', 'LS_COLORS': 'no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpe g=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mng=01;35:*.pcx=01;35:*.m4a=01;35:*.mov=01;35:*.mp4=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:', 'TERM': 'xterm-256color', '__PYVENV_LAUNCHER__': '/opt/local/bin/python', 'GIT_PS1_SHOWUNTRACKEDFILES': '1', 'SSH_AUTH_SOCK': '/tmp/launch-wwoDIO/Listeners', 'Apple_PubSub_Socket_Render': '/tmp/launch-SXo6Tz/Render', 'COMP_KNOWN_HOSTS_WITH_HOSTFILE': '', 'TMPDIR': '/var/folders/yl/dlrlbmgx2nqcwn6qfrrkf7440000gn/T/', 'ITERM_PROFILE': 'Default', 'DYLD_LIBRARY_PATH': '/Users/myi nt/local/lib:', 'PWD': '/Users/myint/tmp/show/pep8', 'SHELL': '/opt/local/bin/bash', 'MANPATH': '/Users/myint/local/share/man:/Users/myint/local/man:/opt/local/share/man:', '__CHECKFIX1436934': '1', 'COLORFGBG': '0;15', 'HISTFILESIZE': '10000', 'LOGNAME': 'myint', 'PKG_CONFIG_PATH': '/Users/myint/local/lib/pkgconfig:', 'OLDPWD': '/Users/myint/tmp/show', 'ITERM_SESSION_ID': 'w3t0p0', 'PS1': '\\[\\e[01;32m\\]\\u@\\h\\[\\e[00m\\]:\\[\\e[01;34m\\]\\w\\[\\e[00m\\]$(__git_ps1 " \\[\\e[01;31m\\](%s)\\[\\e[00m\\]")\\n\\$ ', 'LIBRARY_PATH': '/Users/myint/local/lib:/opt/local/lib:', 'CPLUS_INCLUDE_PATH': '/Users/myint/local/include:/opt/local/include:', 'ACK_PAGER': 'less -FRSX', 'USER': 'myint', 'HOME': '/Users/myint', 'PYTHONIOENCODING': 'utf_8', 'CLICOLOR': 'yes', 'SHLVL': '1', 'OBJCPLUS_INCLUDE_PATH': '/Users/myint/local/include:/opt/local/include:', 'OBJC_INCLUDE_PATH': '/Users/myint/local/include:/opt/local/include:', 'SECURITYSESSIONID': '186a4', 'PYTHONHASHSEED': '2745185536'} Unpacking ./.tox/dist/pep8-1.5.7a0.zip Running setup.py (path:/var/folders/yl/dlrlbmgx2nqcwn6qfrrkf7440000gn/T/pip-figzwl8d-build/setup.py) egg_info for package from file:///Users/myint/tmp/show/pep8/.tox/dist/pep8-1.5.7a0.zip warning: no previously-included files matching '*.pyc' found under directory 'docs' warning: no previously-included files matching '*.pyo' found under directory 'docs' warning: no previously-included files matching '*.pyc' found under directory 'testsuite' warning: no previously-included files matching '*.pyo' found under directory 'testsuite' no previously-included directories found matching 'docs/_build' Installing collected packages: pep8 Found existing installation: pep8 1.5.6 Uninstalling pep8: Successfully uninstalled pep8 Running setup.py install for pep8 warning: no previously-included files matching '*.pyc' found under directory 'docs' warning: no previously-included files matching '*.pyo' found under directory 'docs' warning: no previously-included files matching '*.pyc' found under directory 'testsuite' warning: no previously-included files matching '*.pyo' found under directory 'testsuite' no previously-included directories found matching 'docs/_build' error: could not create '/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pep8.py': Permission denied Complete output from command /opt/local/bin/python -c "import setuptools, tokenize;__file__='/var/folders/yl/dlrlbmgx2nqcwn6qfrrkf7440000gn/T/pip-figzwl8d-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/yl/dlrlbmgx2nqcwn6qfrrkf7440000gn/T/pip-_rjf1t94-record/install-record.txt --single-version-externally-managed --compile: running install running build running build_py creating build creating build/lib copying pep8.py -> build/lib running egg_info writing dependency_links to pep8.egg-info/dependency_links.txt writing pep8.egg-info/PKG-INFO writing namespace_packages to pep8.egg-info/namespace_packages.txt writing entry points to pep8.egg-info/entry_points.txt writing top-level names to pep8.egg-info/top_level.txt warning: manifest_maker: standard file '-c' not found reading manifest file 'pep8.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files matching '*.pyc' found under directory 'docs' warning: no previously-included files matching '*.pyo' found under directory 'docs' warning: no previously-included files matching '*.pyc' found under directory 'testsuite' warning: no previously-included files matching '*.pyo' found under directory 'testsuite' no previously-included directories found matching 'docs/_build' writing manifest file 'pep8.egg-info/SOURCES.txt' running install_lib copying build/lib/pep8.py -> /opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages error: could not create '/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pep8.py': Permission denied ---------------------------------------- Rolling back uninstall of pep8 Cleaning up... Command /opt/local/bin/python -c "import setuptools, tokenize;__file__='/var/folders/yl/dlrlbmgx2nqcwn6qfrrkf7440000gn/T/pip-figzwl8d-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/yl/dlrlbmgx2nqcwn6qfrrkf7440000gn/T/pip-_rjf1t94-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /var/folders/yl/dlrlbmgx2nqcwn6qfrrkf7440000gn/T/pip-figzwl8d-build Storing debug log for failure in /Users/myint/.pip/pip.log ___________________________________ summary ____________________________________ ERROR: py34: InvocationError: /Users/myint/tmp/show/pep8/.tox/py34/bin/pip install --pre /Users/myint/tmp/show/pep8/.tox/dist/pep8-1.5.7a0.zip (see /Users/myint/tmp/show/pep8/.tox/py34/log/py34-1.log) ``` From commits-noreply at bitbucket.org Sun May 11 10:43:37 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sun, 11 May 2014 08:43:37 -0000 Subject: [Pytest-commit] commit/tox: hpk42: fix Marc's name :) Message-ID: <20140511084337.30528.16451@app17.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/8dd5fb2026ae/ Changeset: 8dd5fb2026ae User: hpk42 Date: 2014-05-11 10:43:29 Summary: fix Marc's name :) Affected #: 1 file diff -r 6dc231b739cc80b04910e261cb8960430a3e963c -r 8dd5fb2026ae1d5cf33ced059d3855e2104823b3 CONTRIBUTORS --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -25,4 +25,4 @@ Ionel Maries Cristian Alexandre Conrad Morgan Fainberg -Marc Schleich +Marc Schlaich Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From issues-reply at bitbucket.org Sun May 11 17:49:04 2014 From: issues-reply at bitbucket.org (Matthias Urlichs) Date: Sun, 11 May 2014 15:49:04 -0000 Subject: [Pytest-commit] Issue #513: Keyboard Interrupt doesn't show a stack trace (hpk42/pytest) Message-ID: <20140511154904.16801.7399@app09.ash-private.bitbucket.org> New issue 513: Keyboard Interrupt doesn't show a stack trace https://bitbucket.org/hpk42/pytest/issue/513/keyboard-interrupt-doesnt-show-a-stack Matthias Urlichs: Sometimes (a test runs very long for no good reason, goes into endless recursion or a loop) I want an interrupt with stack trace / pdb when I press ^C. Could you please add an option which turns off catching KeyboardInterrupt and handles it like any other error? From commits-noreply at bitbucket.org Sun May 11 19:29:41 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sun, 11 May 2014 17:29:41 -0000 Subject: [Pytest-commit] commit/tox: hpk42: make it clear that tox supports python2.6/2.7 and python3.2ff Message-ID: <20140511172941.20841.3305@app15.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/65be9669e403/ Changeset: 65be9669e403 User: hpk42 Date: 2014-05-11 19:29:35 Summary: make it clear that tox supports python2.6/2.7 and python3.2ff Affected #: 1 file diff -r 8dd5fb2026ae1d5cf33ced059d3855e2104823b3 -r 65be9669e403386305e091ff55c2b3e9fb8c6410 doc/index.txt --- a/doc/index.txt +++ b/doc/index.txt @@ -68,8 +68,8 @@ support for configuring the installer command through :confval:`install_command=ARGV`. -* **cross-Python compatible**: Python-2.6 up to Python-3.3, - Jython and pypy_ support. +* **cross-Python compatible**: CPython-2.6, 2.7, 3.2 and higher, + Jython and pypy_. * **cross-platform**: Windows and Unix style environments Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sun May 11 19:30:15 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sun, 11 May 2014 17:30:15 -0000 Subject: [Pytest-commit] commit/pytest: 2 new changesets Message-ID: <20140511173015.578.1665@app12.ash-private.bitbucket.org> 2 new commits in pytest: https://bitbucket.org/hpk42/pytest/commits/29841c510609/ Changeset: 29841c510609 Branch: require_argparse_for_py3_lt_32 User: Marc Abramowitz Date: 2014-05-10 08:40:06 Summary: setup.py: Require argparse for PY3 < 3.2 E.g.: python3.1; noticed py31 failure while running tox for six Affected #: 1 file diff -r 26d43b6c78506d6cc267009d3f0fccf9a5066b2a -r 29841c51060943b840f479abfb9a31ffc45509b3 setup.py --- a/setup.py +++ b/setup.py @@ -18,7 +18,8 @@ long_description = open("README.rst").read() def main(): install_requires = ["py>=1.4.20"] - if sys.version_info < (2,7): + if (sys.version_info < (2,7) or + sys.version_info > (3, ) and sys.version_info < (3, 2)): install_requires.append("argparse") if sys.platform == "win32": install_requires.append("colorama") https://bitbucket.org/hpk42/pytest/commits/5b76c07eea06/ Changeset: 5b76c07eea06 User: hpk42 Date: 2014-05-11 19:30:11 Summary: Merged in msabramo/pytest/require_argparse_for_py3_lt_32 (pull request #166) setup.py: Require argparse for PY3 < 3.2 Affected #: 1 file diff -r d969b663878a519dfeba98d5b65a254e95454e14 -r 5b76c07eea06a7de5128444cbf8125bea7984dcb setup.py --- a/setup.py +++ b/setup.py @@ -18,7 +18,8 @@ long_description = open("README.rst").read() def main(): install_requires = ["py>=1.4.20"] - if sys.version_info < (2,7): + if (sys.version_info < (2,7) or + sys.version_info > (3, ) and sys.version_info < (3, 2)): install_requires.append("argparse") if sys.platform == "win32": install_requires.append("colorama") Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sun May 11 19:30:15 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sun, 11 May 2014 17:30:15 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: Merged in msabramo/pytest/require_argparse_for_py3_lt_32 (pull request #166) Message-ID: <20140511173015.17978.54479@app08.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/5b76c07eea06/ Changeset: 5b76c07eea06 User: hpk42 Date: 2014-05-11 19:30:11 Summary: Merged in msabramo/pytest/require_argparse_for_py3_lt_32 (pull request #166) setup.py: Require argparse for PY3 < 3.2 Affected #: 1 file diff -r d969b663878a519dfeba98d5b65a254e95454e14 -r 5b76c07eea06a7de5128444cbf8125bea7984dcb setup.py --- a/setup.py +++ b/setup.py @@ -18,7 +18,8 @@ long_description = open("README.rst").read() def main(): install_requires = ["py>=1.4.20"] - if sys.version_info < (2,7): + if (sys.version_info < (2,7) or + sys.version_info > (3, ) and sys.version_info < (3, 2)): install_requires.append("argparse") if sys.platform == "win32": install_requires.append("colorama") Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sun May 11 19:30:17 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sun, 11 May 2014 17:30:17 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: Close branch require_argparse_for_py3_lt_32 Message-ID: <20140511173017.27242.27394@app11.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/43aeb9f0cf3d/ Changeset: 43aeb9f0cf3d Branch: require_argparse_for_py3_lt_32 User: hpk42 Date: 2014-05-11 19:30:11 Summary: Close branch require_argparse_for_py3_lt_32 Affected #: 0 files Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From issues-reply at bitbucket.org Tue May 13 08:56:33 2014 From: issues-reply at bitbucket.org (=?utf-8?q?Jurko_Gospodneti=C4=87?=) Date: Tue, 13 May 2014 06:56:33 -0000 Subject: [Pytest-commit] Issue #514: Error constructing message for unhooked assertion failure based on private variable (hpk42/pytest) Message-ID: <20140513065633.7984.7697@app09.ash-private.bitbucket.org> New issue 514: Error constructing message for unhooked assertion failure based on private variable https://bitbucket.org/hpk42/pytest/issue/514/error-constructing-message-for-unhooked Jurko Gospodneti?: In the following scenario: File: ```test_me.py``` ``` #!python from outsider import Outsider class Insider: def __init__(self): self.__private = 5 assert self.__private == 6 def test_insider(): Insider() def test_outsider(): Outsider() ``` File: ``outsider.py`` ``` #!python class Outsider: def __init__(self): self.__private = 5 assert self.__private == 6 ``` when running the tests using ``pytest --tb=short`` you get the following output: ``` #!text ================================== FAILURES =================================== ________________________________ test_insider _________________________________ test_me.py:9: in test_insider > Insider() test_me.py:6: in __init__ > assert self.__private == 6 E assert 5 == 6 E + where 5 = .__private ________________________________ test_outsider ________________________________ test_me.py:12: in test_outsider > Outsider() outsider.py:4: in __init__ > assert self.__private == 6 E AssertionError: AttributeError: .__private << 'Outsider' object has no attribute '__private' ========================== 2 failed in 0.08 seconds =========================== ``` As you can see, ``pytest`` attempts to construct the assertion failure description message for the failed ``test_outsider`` test but does not access the private ``__private`` attribute correctly which should have been accessed as ``_Outsider__private``. Hope this helps. Best regards, Jurko Gospodneti? From issues-reply at bitbucket.org Tue May 13 09:38:57 2014 From: issues-reply at bitbucket.org (Thomas Lotze) Date: Tue, 13 May 2014 07:38:57 -0000 Subject: [Pytest-commit] Issue #515: Cache causes current code to be ignored (hpk42/pytest) Message-ID: <20140513073857.23743.44166@app10.ash-private.bitbucket.org> New issue 515: Cache causes current code to be ignored https://bitbucket.org/hpk42/pytest/issue/515/cache-causes-current-code-to-be-ignored Thomas Lotze: I just ran across an issue with pytest 2.5.2 which I can unfortunately only describe qualitatively: In a development environment that I had been using for some months, I ran one test selected using the -k option one of the test assertions failed with a custom error message that reported a traceback from an asynchronously called message queue handler implemented by the same package I was testing. The traceback already reported a line number that didn't match the code in its current state. I added "raise RuntimeError" at different places in the method in question but nothing changed, the error wasn't raised. The log output captured on stdout contained current timestamps issued by the message queue server. After deleting the .cache directory pytest was using, suddenly the current code was used, raising the RuntimeError and after that was removed, actually passing the test. Since I actually deleted the cache I cannot now report what it contained and what the timestamps of any files were. From issues-reply at bitbucket.org Tue May 13 17:11:38 2014 From: issues-reply at bitbucket.org (=?utf-8?b?T25kxZllaiDEjGVydMOtaw==?=) Date: Tue, 13 May 2014 15:11:38 -0000 Subject: [Pytest-commit] Issue #516: You should clearly specify dependencies (hpk42/pytest) Message-ID: <20140513151138.10178.84967@app13.ash-private.bitbucket.org> New issue 516: You should clearly specify dependencies https://bitbucket.org/hpk42/pytest/issue/516/you-should-clearly-specify-dependencies Ond?ej ?ert?k: If you just install the `pytest` package, it will fail to run with: ``` $ py.test --version Traceback (most recent call last): File "/nh/nest/u/ondrej/repos/hashstack/default/bin/py.test", line 8, in from pkg_resources import load_entry_point File "/tmp/bld2/profile/xhyi5yguwlf4/lib/python2.7/site-packages/pkg_resources.py", line 2749, in working_set = WorkingSet._build_master() File "/tmp/bld2/profile/xhyi5yguwlf4/lib/python2.7/site-packages/pkg_resources.py", line 444, in _build_master ws.require(__requires__) File "/tmp/bld2/profile/xhyi5yguwlf4/lib/python2.7/site-packages/pkg_resources.py", line 725, in require needed = self.resolve(parse_requirements(requirements)) File "/tmp/bld2/profile/xhyi5yguwlf4/lib/python2.7/site-packages/pkg_resources.py", line 628, in resolve raise DistributionNotFound(req) pkg_resources.DistributionNotFound: py>=1.4.20 ``` So you should: * Specify at http://pytest.org/latest/getting-started.html and also at https://pypi.python.org/pypi/pytest that pytest depends on `py` and where to get `py`. From commits-noreply at bitbucket.org Tue May 13 22:41:16 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Tue, 13 May 2014 20:41:16 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: Close branch python 3.1 fix Message-ID: <20140513204116.2056.29894@app11.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/31dab7103f68/ Changeset: 31dab7103f68 Branch: python 3.1 fix User: hpk42 Date: 2014-05-13 22:41:12 Summary: Close branch python 3.1 fix Affected #: 0 files Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Tue May 13 22:41:16 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Tue, 13 May 2014 20:41:16 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: Merged in jurko/pytest/python 3.1 fix (pull request #168) Message-ID: <20140513204116.26074.25502@app01.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/f0446f3f8db3/ Changeset: f0446f3f8db3 User: hpk42 Date: 2014-05-13 22:41:12 Summary: Merged in jurko/pytest/python 3.1 fix (pull request #168) use py.builtin.callable instead of raw callable in _pytest/runner.py Affected #: 1 file diff -r 5b76c07eea06a7de5128444cbf8125bea7984dcb -r f0446f3f8db3a9e03c0266d0be7e145c8a351f50 _pytest/runner.py --- a/_pytest/runner.py +++ b/_pytest/runner.py @@ -328,7 +328,7 @@ is called at the end of teardown_all(). """ assert colitem and not isinstance(colitem, tuple) - assert callable(finalizer) + assert py.builtin.callable(finalizer) #assert colitem in self.stack # some unit tests don't setup stack :/ self._finalizers.setdefault(colitem, []).append(finalizer) Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Tue May 13 22:41:16 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Tue, 13 May 2014 20:41:16 -0000 Subject: [Pytest-commit] commit/pytest: 2 new changesets Message-ID: <20140513204116.25012.92574@app18.ash-private.bitbucket.org> 2 new commits in pytest: https://bitbucket.org/hpk42/pytest/commits/04c4997da865/ Changeset: 04c4997da865 Branch: python 3.1 fix User: jurko Date: 2014-05-13 21:05:53 Summary: use py.builtin.callable instead of raw callable in _pytest/runner.py This is consistent with how callable() is called from the rest of pytest code (see _pytest/nose.py & _pytest/python.py) plus, as a nice side-effect, it makes pytest work correctly on Python 3.1. Affected #: 1 file diff -r 5b76c07eea06a7de5128444cbf8125bea7984dcb -r 04c4997da865344f2ebb8569c73c51c57cd4ba05 _pytest/runner.py --- a/_pytest/runner.py +++ b/_pytest/runner.py @@ -328,7 +328,7 @@ is called at the end of teardown_all(). """ assert colitem and not isinstance(colitem, tuple) - assert callable(finalizer) + assert py.builtin.callable(finalizer) #assert colitem in self.stack # some unit tests don't setup stack :/ self._finalizers.setdefault(colitem, []).append(finalizer) https://bitbucket.org/hpk42/pytest/commits/f0446f3f8db3/ Changeset: f0446f3f8db3 User: hpk42 Date: 2014-05-13 22:41:12 Summary: Merged in jurko/pytest/python 3.1 fix (pull request #168) use py.builtin.callable instead of raw callable in _pytest/runner.py Affected #: 1 file diff -r 5b76c07eea06a7de5128444cbf8125bea7984dcb -r f0446f3f8db3a9e03c0266d0be7e145c8a351f50 _pytest/runner.py --- a/_pytest/runner.py +++ b/_pytest/runner.py @@ -328,7 +328,7 @@ is called at the end of teardown_all(). """ assert colitem and not isinstance(colitem, tuple) - assert callable(finalizer) + assert py.builtin.callable(finalizer) #assert colitem in self.stack # some unit tests don't setup stack :/ self._finalizers.setdefault(colitem, []).append(finalizer) Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Wed May 14 08:12:25 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Wed, 14 May 2014 06:12:25 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: - restore compatibility to old getvalueorskip behaviour Message-ID: <20140514061225.13183.6263@app04.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/ba0faffae819/ Changeset: ba0faffae819 User: hpk42 Date: 2014-05-14 07:36:31 Summary: - restore compatibility to old getvalueorskip behaviour - introduce a better NOTSET representation to improve docs Affected #: 2 files diff -r f0446f3f8db3a9e03c0266d0be7e145c8a351f50 -r ba0faffae8191c03a51d71135a76822f454198d7 _pytest/config.py --- a/_pytest/config.py +++ b/_pytest/config.py @@ -560,7 +560,11 @@ def __repr__(self): return "" %(self.__dict__,) -notset = object() +class Notset: + def __repr__(self): + return "" + +notset = Notset() FILE_OR_DIR = 'file_or_dir' class Config(object): """ access to configuration values, pluginmanager and plugin hooks. """ @@ -798,11 +802,15 @@ :arg name: name of the option. You may also specify the literal ``--OPT`` option instead of the "dest" option name. :arg default: default value if no option of that name exists. - :arg skip: if True raise pytest.skip if not option exists. + :arg skip: if True raise pytest.skip if option does not exists + or has a None value. """ name = self._opt2dest.get(name, name) try: - return getattr(self.option, name) + val = getattr(self.option, name) + if val is None and skip: + raise AttributeError(name) + return val except AttributeError: if default is not notset: return default diff -r f0446f3f8db3a9e03c0266d0be7e145c8a351f50 -r ba0faffae8191c03a51d71135a76822f454198d7 testing/test_config.py --- a/testing/test_config.py +++ b/testing/test_config.py @@ -117,6 +117,15 @@ verbose = config.getvalueorskip("verbose") assert verbose == config.option.verbose + def test_config_getvalueorskip_None(self, testdir): + testdir.makeconftest(""" + def pytest_addoption(parser): + parser.addoption("--hello") + """) + config = testdir.parseconfig() + pytest.raises(pytest.skip.Exception, + "config.getvalueorskip('hello')") + def test_getoption(self, testdir): config = testdir.parseconfig() with pytest.raises(ValueError): Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Wed May 14 08:14:06 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Wed, 14 May 2014 06:14:06 -0000 Subject: [Pytest-commit] commit/pytest-xdist: 2 new changesets Message-ID: <20140514061406.13183.17742@app04.ash-private.bitbucket.org> 2 new commits in pytest-xdist: https://bitbucket.org/hpk42/pytest-xdist/commits/2a5dbb8df0f6/ Changeset: 2a5dbb8df0f6 User: hpk42 Date: 2014-03-27 11:57:36 Summary: properly extend tests to cover xfailing capturing modes Affected #: 1 file diff -r 81566ffbb2715bdd28499c808fd76e3315489908 -r 2a5dbb8df0f6a804733f537091e15a04f62fb6c0 testing/test_boxed.py --- a/testing/test_boxed.py +++ b/testing/test_boxed.py @@ -18,7 +18,11 @@ ]) @needsfork -def test_functional_boxed_stdout(testdir): + at pytest.mark.parametrize("capmode", [ + "no", + pytest.mark.xfail("sys", reason="capture cleanup needed"), + pytest.mark.xfail("fd", reason="capture cleanup needed")]) +def test_functional_boxed_capturing(testdir, capmode): p1 = testdir.makepyfile(""" import os import sys @@ -27,7 +31,7 @@ sys.stderr.write("world\\n") os.kill(os.getpid(), 15) """) - result = testdir.runpytest(p1, "--boxed") + result = testdir.runpytest(p1, "--boxed", "--capture=%s" % capmode) result.stdout.fnmatch_lines(""" *CRASHED* *stdout* https://bitbucket.org/hpk42/pytest-xdist/commits/5ba5bdb77d30/ Changeset: 5ba5bdb77d30 User: hpk42 Date: 2014-05-14 08:13:56 Summary: use config.getoption instead of deprecated config.getvalue and adapt a few tests to also run against pytest-2.6.0.dev Affected #: 3 files diff -r 2a5dbb8df0f6a804733f537091e15a04f62fb6c0 -r 5ba5bdb77d302b621508bde6fdca37349f7d17d7 testing/acceptance_test.py --- a/testing/acceptance_test.py +++ b/testing/acceptance_test.py @@ -311,9 +311,9 @@ """) result = testdir.runpytest("-n1", "-v") result.stdout.fnmatch_lines_random([ - "*PASS*test_pass_skip_fail.py:2: *test_ok*", - "*SKIP*test_pass_skip_fail.py:4: *test_skip*", - "*FAIL*test_pass_skip_fail.py:6: *test_func*", + "*PASS*test_pass_skip_fail.py?2*test_ok*", + "*SKIP*test_pass_skip_fail.py?4*test_skip*", + "*FAIL*test_pass_skip_fail.py?6*test_func*", ]) result.stdout.fnmatch_lines([ "*def test_func():", @@ -328,7 +328,7 @@ """) result = testdir.runpytest("-n1", "-v") result.stdout.fnmatch_lines([ - "*FAIL*test_fail_platinfo.py:1: *test_func*", + "*FAIL*test_fail_platinfo.py*1*test_func*", "*0*Python*", "*def test_func():", "> assert 0", diff -r 2a5dbb8df0f6a804733f537091e15a04f62fb6c0 -r 5ba5bdb77d302b621508bde6fdca37349f7d17d7 testing/conftest.py --- a/testing/conftest.py +++ b/testing/conftest.py @@ -7,7 +7,7 @@ def pytest_addoption(parser): parser.addoption('--gx', - action="append", dest="gspecs", default=None, + action="append", dest="gspecs", help=("add a global test environment, XSpec-syntax. ")) def pytest_funcarg__specssh(request): diff -r 2a5dbb8df0f6a804733f537091e15a04f62fb6c0 -r 5ba5bdb77d302b621508bde6fdca37349f7d17d7 xdist/plugin.py --- a/xdist/plugin.py +++ b/xdist/plugin.py @@ -53,14 +53,14 @@ def pytest_cmdline_main(config): check_options(config) - if config.getvalue("looponfail"): + if config.getoption("looponfail"): from xdist.looponfail import looponfail_main looponfail_main(config) return 2 # looponfail only can get stop with ctrl-C anyway def pytest_configure(config, __multicall__): __multicall__.execute() - if config.getvalue("dist") != "no": + if config.getoption("dist") != "no": from xdist.dsession import DSession session = DSession(config) config.pluginmanager.register(session, "dsession") Repository URL: https://bitbucket.org/hpk42/pytest-xdist/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Wed May 14 09:10:17 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Wed, 14 May 2014 07:10:17 -0000 Subject: [Pytest-commit] commit/pytest: 3 new changesets Message-ID: <20140514071017.16165.84575@app11.ash-private.bitbucket.org> 3 new commits in pytest: https://bitbucket.org/hpk42/pytest/commits/399de30e0729/ Changeset: 399de30e0729 Branch: setup cleanup User: jurko Date: 2014-05-13 19:02:02 Summary: stylistic setup.py code cleanup Affected #: 1 file diff -r ba0faffae8191c03a51d71135a76822f454198d7 -r 399de30e07291c6415096c535998a5f639550e41 setup.py --- a/setup.py +++ b/setup.py @@ -1,42 +1,41 @@ import os, sys from setuptools import setup, Command -classifiers=['Development Status :: 6 - Mature', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Operating System :: POSIX', - 'Operating System :: Microsoft :: Windows', - 'Operating System :: MacOS :: MacOS X', - 'Topic :: Software Development :: Testing', - 'Topic :: Software Development :: Libraries', - 'Topic :: Utilities', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 3'] + [ - ("Programming Language :: Python :: %s" % x) for x in - "2.6 2.7 3.0 3.1 3.2 3.3".split()] +classifiers = ['Development Status :: 6 - Mature', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: POSIX', + 'Operating System :: Microsoft :: Windows', + 'Operating System :: MacOS :: MacOS X', + 'Topic :: Software Development :: Testing', + 'Topic :: Software Development :: Libraries', + 'Topic :: Utilities'] + [ + ('Programming Language :: Python :: %s' % x) for x in + '2 2.6 2.7 3 3.0 3.1 3.2 3.3'.split()] -long_description = open("README.rst").read() +long_description = open('README.rst').read() + + def main(): - install_requires = ["py>=1.4.20"] - if (sys.version_info < (2,7) or - sys.version_info > (3, ) and sys.version_info < (3, 2)): - install_requires.append("argparse") - if sys.platform == "win32": - install_requires.append("colorama") + install_requires = ['py>=1.4.20'] + if sys.version_info < (2, 7) or (3,) <= sys.version_info < (3, 2): + install_requires.append('argparse') + if sys.platform == 'win32': + install_requires.append('colorama') setup( name='pytest', description='pytest: simple powerful testing with Python', - long_description = long_description, + long_description=long_description, version='2.6.0.dev1', url='http://pytest.org', license='MIT license', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], author='Holger Krekel, Benjamin Peterson, Ronny Pfannschmidt, Floris Bruynooghe and others', author_email='holger at merlinux.eu', - entry_points= make_entry_points(), + entry_points=make_entry_points(), classifiers=classifiers, - cmdclass = {'test': PyTest}, + cmdclass={'test': PyTest}, # the following should be enabled for release install_requires=install_requires, packages=['_pytest', '_pytest.assertion'], @@ -44,24 +43,26 @@ zip_safe=False, ) + def cmdline_entrypoints(versioninfo, platform, basename): target = 'pytest:main' if platform.startswith('java'): points = {'py.test-jython': target} else: - if basename.startswith("pypy"): + if basename.startswith('pypy'): points = {'py.test-%s' % basename: target} else: # cpython - points = {'py.test-%s.%s' % versioninfo[:2] : target,} + points = {'py.test-%s.%s' % versioninfo[:2] : target} points['py.test'] = target return points + def make_entry_points(): basename = os.path.basename(sys.executable) points = cmdline_entrypoints(sys.version_info, sys.platform, basename) keys = list(points.keys()) keys.sort() - l = ["%s = %s" % (x, points[x]) for x in keys] + l = ['%s = %s' % (x, points[x]) for x in keys] return {'console_scripts': l} @@ -72,12 +73,13 @@ def finalize_options(self): pass def run(self): - import sys,subprocess - PPATH=[x for x in os.environ.get("PYTHONPATH", "").split(":") if x] + import subprocess + PPATH = [x for x in os.environ.get('PYTHONPATH', '').split(':') if x] PPATH.insert(0, os.getcwd()) - os.environ["PYTHONPATH"] = ":".join(PPATH) + os.environ['PYTHONPATH'] = ':'.join(PPATH) errno = subprocess.call([sys.executable, 'pytest.py', '--ignore=doc']) raise SystemExit(errno) + if __name__ == '__main__': main() https://bitbucket.org/hpk42/pytest/commits/9f4f17d8b7c8/ Changeset: 9f4f17d8b7c8 Branch: setup cleanup User: jurko Date: 2014-05-13 19:03:17 Summary: update the list of officially supported Python versions in setup.py Removed Python 3.0 & 3.1 off the list and added Python 3.4. Affected #: 1 file diff -r 399de30e07291c6415096c535998a5f639550e41 -r 9f4f17d8b7c86495f6799abd69ee1aa100fda039 setup.py --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ 'Topic :: Software Development :: Libraries', 'Topic :: Utilities'] + [ ('Programming Language :: Python :: %s' % x) for x in - '2 2.6 2.7 3 3.0 3.1 3.2 3.3'.split()] + '2 2.6 2.7 3 3.2 3.3 3.4'.split()] long_description = open('README.rst').read() https://bitbucket.org/hpk42/pytest/commits/6eab623e63be/ Changeset: 6eab623e63be User: hpk42 Date: 2014-05-14 09:10:13 Summary: Merged in jurko/pytest/setup cleanup (pull request #169) setup.py cleanup/update (updated from pull request #167) Affected #: 1 file diff -r ba0faffae8191c03a51d71135a76822f454198d7 -r 6eab623e63be3da6ff3ce9391b0a3e958c7414d8 setup.py --- a/setup.py +++ b/setup.py @@ -1,42 +1,41 @@ import os, sys from setuptools import setup, Command -classifiers=['Development Status :: 6 - Mature', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Operating System :: POSIX', - 'Operating System :: Microsoft :: Windows', - 'Operating System :: MacOS :: MacOS X', - 'Topic :: Software Development :: Testing', - 'Topic :: Software Development :: Libraries', - 'Topic :: Utilities', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 3'] + [ - ("Programming Language :: Python :: %s" % x) for x in - "2.6 2.7 3.0 3.1 3.2 3.3".split()] +classifiers = ['Development Status :: 6 - Mature', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: POSIX', + 'Operating System :: Microsoft :: Windows', + 'Operating System :: MacOS :: MacOS X', + 'Topic :: Software Development :: Testing', + 'Topic :: Software Development :: Libraries', + 'Topic :: Utilities'] + [ + ('Programming Language :: Python :: %s' % x) for x in + '2 2.6 2.7 3 3.2 3.3 3.4'.split()] -long_description = open("README.rst").read() +long_description = open('README.rst').read() + + def main(): - install_requires = ["py>=1.4.20"] - if (sys.version_info < (2,7) or - sys.version_info > (3, ) and sys.version_info < (3, 2)): - install_requires.append("argparse") - if sys.platform == "win32": - install_requires.append("colorama") + install_requires = ['py>=1.4.20'] + if sys.version_info < (2, 7) or (3,) <= sys.version_info < (3, 2): + install_requires.append('argparse') + if sys.platform == 'win32': + install_requires.append('colorama') setup( name='pytest', description='pytest: simple powerful testing with Python', - long_description = long_description, + long_description=long_description, version='2.6.0.dev1', url='http://pytest.org', license='MIT license', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], author='Holger Krekel, Benjamin Peterson, Ronny Pfannschmidt, Floris Bruynooghe and others', author_email='holger at merlinux.eu', - entry_points= make_entry_points(), + entry_points=make_entry_points(), classifiers=classifiers, - cmdclass = {'test': PyTest}, + cmdclass={'test': PyTest}, # the following should be enabled for release install_requires=install_requires, packages=['_pytest', '_pytest.assertion'], @@ -44,24 +43,26 @@ zip_safe=False, ) + def cmdline_entrypoints(versioninfo, platform, basename): target = 'pytest:main' if platform.startswith('java'): points = {'py.test-jython': target} else: - if basename.startswith("pypy"): + if basename.startswith('pypy'): points = {'py.test-%s' % basename: target} else: # cpython - points = {'py.test-%s.%s' % versioninfo[:2] : target,} + points = {'py.test-%s.%s' % versioninfo[:2] : target} points['py.test'] = target return points + def make_entry_points(): basename = os.path.basename(sys.executable) points = cmdline_entrypoints(sys.version_info, sys.platform, basename) keys = list(points.keys()) keys.sort() - l = ["%s = %s" % (x, points[x]) for x in keys] + l = ['%s = %s' % (x, points[x]) for x in keys] return {'console_scripts': l} @@ -72,12 +73,13 @@ def finalize_options(self): pass def run(self): - import sys,subprocess - PPATH=[x for x in os.environ.get("PYTHONPATH", "").split(":") if x] + import subprocess + PPATH = [x for x in os.environ.get('PYTHONPATH', '').split(':') if x] PPATH.insert(0, os.getcwd()) - os.environ["PYTHONPATH"] = ":".join(PPATH) + os.environ['PYTHONPATH'] = ':'.join(PPATH) errno = subprocess.call([sys.executable, 'pytest.py', '--ignore=doc']) raise SystemExit(errno) + if __name__ == '__main__': main() Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Wed May 14 09:10:18 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Wed, 14 May 2014 07:10:18 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: Merged in jurko/pytest/setup cleanup (pull request #169) Message-ID: <20140514071018.19712.74420@app15.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/6eab623e63be/ Changeset: 6eab623e63be User: hpk42 Date: 2014-05-14 09:10:13 Summary: Merged in jurko/pytest/setup cleanup (pull request #169) setup.py cleanup/update (updated from pull request #167) Affected #: 1 file diff -r ba0faffae8191c03a51d71135a76822f454198d7 -r 6eab623e63be3da6ff3ce9391b0a3e958c7414d8 setup.py --- a/setup.py +++ b/setup.py @@ -1,42 +1,41 @@ import os, sys from setuptools import setup, Command -classifiers=['Development Status :: 6 - Mature', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Operating System :: POSIX', - 'Operating System :: Microsoft :: Windows', - 'Operating System :: MacOS :: MacOS X', - 'Topic :: Software Development :: Testing', - 'Topic :: Software Development :: Libraries', - 'Topic :: Utilities', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 3'] + [ - ("Programming Language :: Python :: %s" % x) for x in - "2.6 2.7 3.0 3.1 3.2 3.3".split()] +classifiers = ['Development Status :: 6 - Mature', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: POSIX', + 'Operating System :: Microsoft :: Windows', + 'Operating System :: MacOS :: MacOS X', + 'Topic :: Software Development :: Testing', + 'Topic :: Software Development :: Libraries', + 'Topic :: Utilities'] + [ + ('Programming Language :: Python :: %s' % x) for x in + '2 2.6 2.7 3 3.2 3.3 3.4'.split()] -long_description = open("README.rst").read() +long_description = open('README.rst').read() + + def main(): - install_requires = ["py>=1.4.20"] - if (sys.version_info < (2,7) or - sys.version_info > (3, ) and sys.version_info < (3, 2)): - install_requires.append("argparse") - if sys.platform == "win32": - install_requires.append("colorama") + install_requires = ['py>=1.4.20'] + if sys.version_info < (2, 7) or (3,) <= sys.version_info < (3, 2): + install_requires.append('argparse') + if sys.platform == 'win32': + install_requires.append('colorama') setup( name='pytest', description='pytest: simple powerful testing with Python', - long_description = long_description, + long_description=long_description, version='2.6.0.dev1', url='http://pytest.org', license='MIT license', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], author='Holger Krekel, Benjamin Peterson, Ronny Pfannschmidt, Floris Bruynooghe and others', author_email='holger at merlinux.eu', - entry_points= make_entry_points(), + entry_points=make_entry_points(), classifiers=classifiers, - cmdclass = {'test': PyTest}, + cmdclass={'test': PyTest}, # the following should be enabled for release install_requires=install_requires, packages=['_pytest', '_pytest.assertion'], @@ -44,24 +43,26 @@ zip_safe=False, ) + def cmdline_entrypoints(versioninfo, platform, basename): target = 'pytest:main' if platform.startswith('java'): points = {'py.test-jython': target} else: - if basename.startswith("pypy"): + if basename.startswith('pypy'): points = {'py.test-%s' % basename: target} else: # cpython - points = {'py.test-%s.%s' % versioninfo[:2] : target,} + points = {'py.test-%s.%s' % versioninfo[:2] : target} points['py.test'] = target return points + def make_entry_points(): basename = os.path.basename(sys.executable) points = cmdline_entrypoints(sys.version_info, sys.platform, basename) keys = list(points.keys()) keys.sort() - l = ["%s = %s" % (x, points[x]) for x in keys] + l = ['%s = %s' % (x, points[x]) for x in keys] return {'console_scripts': l} @@ -72,12 +73,13 @@ def finalize_options(self): pass def run(self): - import sys,subprocess - PPATH=[x for x in os.environ.get("PYTHONPATH", "").split(":") if x] + import subprocess + PPATH = [x for x in os.environ.get('PYTHONPATH', '').split(':') if x] PPATH.insert(0, os.getcwd()) - os.environ["PYTHONPATH"] = ":".join(PPATH) + os.environ['PYTHONPATH'] = ':'.join(PPATH) errno = subprocess.call([sys.executable, 'pytest.py', '--ignore=doc']) raise SystemExit(errno) + if __name__ == '__main__': main() Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Wed May 14 09:10:18 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Wed, 14 May 2014 07:10:18 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: Close branch setup cleanup Message-ID: <20140514071018.28072.38169@app07.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/78b2e3d6fdb0/ Changeset: 78b2e3d6fdb0 Branch: setup cleanup User: hpk42 Date: 2014-05-14 09:10:13 Summary: Close branch setup cleanup Affected #: 0 files Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Wed May 14 09:14:46 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Wed, 14 May 2014 07:14:46 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: fix issue512 : document dependencies in getting-started doc. Message-ID: <20140514071446.14421.23423@app12.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/bc65c0388406/ Changeset: bc65c0388406 User: hpk42 Date: 2014-05-14 09:14:40 Summary: fix issue512 : document dependencies in getting-started doc. Affected #: 1 file diff -r 6eab623e63be3da6ff3ce9391b0a3e958c7414d8 -r bc65c038840604f24dc0c82f1abfaee01f0b3f4a doc/en/getting-started.txt --- a/doc/en/getting-started.txt +++ b/doc/en/getting-started.txt @@ -7,6 +7,10 @@ **PyPI package name**: `pytest `_ +**dependencies**: `py `_, +`colorama (Windows) `_, +`argparse (py26) `_. + **documentation as PDF**: `download latest `_ .. _`getstarted`: Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Wed May 14 09:59:12 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Wed, 14 May 2014 07:59:12 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: fix issue516: tell in getting-started about current dependencies. Message-ID: <20140514075912.18849.98816@app03.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/9a891617d5a2/ Changeset: 9a891617d5a2 User: hpk42 Date: 2014-05-14 09:58:34 Summary: fix issue516: tell in getting-started about current dependencies. cleanup setup.py a bit and specify supported versions. Thanks Jurko Gospodnetic for the PR. Affected #: 1 file diff -r bc65c038840604f24dc0c82f1abfaee01f0b3f4a -r 9a891617d5a28b75043d1f6480bf41b8f39ddc2f CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,11 @@ - fix issue 475: fail early and comprehensible if calling pytest.raises with wrong exception type. +- fix issue516: tell in getting-started about current dependencies. + +- cleanup setup.py a bit and specify supported versions. Thanks Jurko + Gospodnetic for the PR. + - change XPASS colour to yellow rather then red when tests are run with -v. Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 15 11:33:32 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 15 May 2014 09:33:32 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in cboylan/tox (pull request #85) Message-ID: <20140515093332.6399.6612@app05.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/169574bf58a4/ Changeset: 169574bf58a4 User: hpk42 Date: 2014-05-15 11:33:28 Summary: Merged in cboylan/tox (pull request #85) Fix command expansion and parsing. Affected #: 2 files diff -r 65be9669e403386305e091ff55c2b3e9fb8c6410 -r 169574bf58a499d179ece389b75a83ee8b6fba4a tests/test_config.py --- a/tests/test_config.py +++ b/tests/test_config.py @@ -293,7 +293,7 @@ # "reader.getargvlist('section', 'key1')") assert reader.getargvlist('section', 'key1') == [] x = reader.getargvlist("section", "key2") - assert x == [["cmd1", "with space", "grr"], + assert x == [["cmd1", "with", "space", "grr"], ["cmd2", "grr"]] def test_argvlist_windows_escaping(self, tmpdir, newconfig): @@ -319,7 +319,7 @@ # "reader.getargvlist('section', 'key1')") assert reader.getargvlist('section', 'key1') == [] x = reader.getargvlist("section", "key2") - assert x == [["cmd1", "with space", "grr"]] + assert x == [["cmd1", "with", "space", "grr"]] def test_argvlist_quoting_in_command(self, tmpdir, newconfig): @@ -361,6 +361,34 @@ assert argvlist[0] == ["cmd1"] assert argvlist[1] == ["cmd2", "value2", "other"] + def test_argvlist_quoted_posargs(self, tmpdir, newconfig): + config = newconfig(""" + [section] + key2= + cmd1 --foo-args='{posargs}' + cmd2 -f '{posargs}' + cmd3 -f {posargs} + """) + reader = IniReader(config._cfg) + reader.addsubstitutions(["foo", "bar"]) + assert reader.getargvlist('section', 'key1') == [] + x = reader.getargvlist("section", "key2") + assert x == [["cmd1", "--foo-args=foo bar"], + ["cmd2", "-f", "foo bar"], + ["cmd3", "-f", "foo", "bar"]] + + def test_argvlist_posargs_with_quotes(self, tmpdir, newconfig): + config = newconfig(""" + [section] + key2= + cmd1 -f {posargs} + """) + reader = IniReader(config._cfg) + reader.addsubstitutions(["foo", "'bar", "baz'"]) + assert reader.getargvlist('section', 'key1') == [] + x = reader.getargvlist("section", "key2") + assert x == [["cmd1", "-f", "foo", "bar baz"]] + def test_positional_arguments_are_only_replaced_when_standing_alone(self, tmpdir, newconfig): config = newconfig(""" diff -r 65be9669e403386305e091ff55c2b3e9fb8c6410 -r 169574bf58a499d179ece389b75a83ee8b6fba4a tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -530,30 +530,35 @@ def _processcommand(self, command): posargs = getattr(self, "posargs", None) - # special treat posargs which might contain multiple arguments - # in their defaults + # Iterate through each word of the command substituting as + # appropriate to construct the new command string. This + # string is then broken up into exec argv components using + # shlex. newcommand = "" for word in CommandParser(command).words(): - if word.startswith("{posargs:") and word.endswith("}"): + if word == "{posargs}" or word == "[]": if posargs: - word = "{posargs}" + newcommand += " ".join(posargs) + continue + elif word.startswith("{posargs:") and word.endswith("}"): + if posargs: + newcommand += " ".join(posargs) + continue else: word = word[9:-1] - newcommand += word + new_arg = "" + new_word = self._replace(word) + new_word = self._replace(new_word) + new_arg += new_word + newcommand += new_arg - # now we can properly parse the command - argv = [] - for arg in shlex.split(newcommand): - if arg in ('[]', "{posargs}"): - if posargs: - argv.extend(posargs) - continue - new_arg = "" - for word in CommandParser(arg).words(): - new_word = self._replace(word) - new_word = self._replace(new_word) - new_arg += new_word - argv.append(new_arg) + # Construct shlex object that will not escape any values, + # use all values as is in argv. + shlexer = shlex.shlex(newcommand, posix=True) + shlexer.whitespace_split = True + shlexer.escape = '' + shlexer.commenters = '' + argv = list(shlexer) return argv def getargv(self, section, name, default=None, replace=True): Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 15 11:33:32 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 15 May 2014 09:33:32 -0000 Subject: [Pytest-commit] commit/tox: 3 new changesets Message-ID: <20140515093332.7598.46086@app13.ash-private.bitbucket.org> 3 new commits in tox: https://bitbucket.org/hpk42/tox/commits/62fe57a8fd3f/ Changeset: 62fe57a8fd3f User: cboylan Date: 2014-02-08 04:38:24 Summary: Fix command expansion and parsing. Tox testenv commands are parsed to expand variable substitutions and construct the argv list that will be passed to exec. Prior to this commit this parsing ate quotes surrounding variables and treated multiword variables as single argv items. Neither behavior was correct. To fix this create the expanded command before handing it off to shlex to do the tokenization of the argv list. Doing the parsing in this order ensures it is correct. Affected #: 2 files diff -r b0360a54ab368ef428c7f83601ba6b64f6fec64f -r 62fe57a8fd3f8f44be8957e59846387d2f505227 tests/test_config.py --- a/tests/test_config.py +++ b/tests/test_config.py @@ -278,7 +278,7 @@ # "reader.getargvlist('section', 'key1')") assert reader.getargvlist('section', 'key1') == [] x = reader.getargvlist("section", "key2") - assert x == [["cmd1", "with space", "grr"], + assert x == [["cmd1", "with", "space", "grr"], ["cmd2", "grr"]] def test_argvlist_windows_escaping(self, tmpdir, newconfig): @@ -304,7 +304,7 @@ # "reader.getargvlist('section', 'key1')") assert reader.getargvlist('section', 'key1') == [] x = reader.getargvlist("section", "key2") - assert x == [["cmd1", "with space", "grr"]] + assert x == [["cmd1", "with", "space", "grr"]] def test_argvlist_quoting_in_command(self, tmpdir, newconfig): diff -r b0360a54ab368ef428c7f83601ba6b64f6fec64f -r 62fe57a8fd3f8f44be8957e59846387d2f505227 tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -527,30 +527,35 @@ def _processcommand(self, command): posargs = getattr(self, "posargs", None) - # special treat posargs which might contain multiple arguments - # in their defaults + # Iterate through each word of the command substituting as + # appropriate to construct the new command string. This + # string is then broken up into exec argv components using + # shlex. newcommand = "" for word in CommandParser(command).words(): - if word.startswith("{posargs:") and word.endswith("}"): + if word == "{posargs}" or word == "[]": if posargs: - word = "{posargs}" + newcommand += " ".join(posargs) + continue + elif word.startswith("{posargs:") and word.endswith("}"): + if posargs: + newcommand += " ".join(posargs) + continue else: word = word[9:-1] - newcommand += word + new_arg = "" + new_word = self._replace(word) + new_word = self._replace(new_word) + new_arg += new_word + newcommand += new_arg - # now we can properly parse the command - argv = [] - for arg in shlex.split(newcommand): - if arg in ('[]', "{posargs}"): - if posargs: - argv.extend(posargs) - continue - new_arg = "" - for word in CommandParser(arg).words(): - new_word = self._replace(word) - new_word = self._replace(new_word) - new_arg += new_word - argv.append(new_arg) + # Construct shlex object that will not escape any values, + # use all values as is in argv. + shlexer = shlex.shlex(newcommand, posix=True) + shlexer.whitespace_split = True + shlexer.escape = '' + shlexer.commenters = '' + argv = list(shlexer) return argv def getargv(self, section, name, default=None, replace=True): https://bitbucket.org/hpk42/tox/commits/a5be60e9e68c/ Changeset: a5be60e9e68c User: cboylan Date: 2014-02-08 05:33:48 Summary: Add tests for posargs quoting. Two new tests ensure posargs quoting works as expected. When {posargs} is surrounded by quotes in the commands list the contents of posargs should be a single entry in the argv list for the commands. When the posargs themselves include quotes the same behavior should occur. Affected #: 1 file diff -r 62fe57a8fd3f8f44be8957e59846387d2f505227 -r a5be60e9e68ccde0f0d6e7a180923d16bcb8a350 tests/test_config.py --- a/tests/test_config.py +++ b/tests/test_config.py @@ -346,6 +346,34 @@ assert argvlist[0] == ["cmd1"] assert argvlist[1] == ["cmd2", "value2", "other"] + def test_argvlist_quoted_posargs(self, tmpdir, newconfig): + config = newconfig(""" + [section] + key2= + cmd1 --foo-args='{posargs}' + cmd2 -f '{posargs}' + cmd3 -f {posargs} + """) + reader = IniReader(config._cfg) + reader.addsubstitutions(["foo", "bar"]) + assert reader.getargvlist('section', 'key1') == [] + x = reader.getargvlist("section", "key2") + assert x == [["cmd1", "--foo-args=foo bar"], + ["cmd2", "-f", "foo bar"], + ["cmd3", "-f", "foo", "bar"]] + + def test_argvlist_posargs_with_quotes(self, tmpdir, newconfig): + config = newconfig(""" + [section] + key2= + cmd1 -f {posargs} + """) + reader = IniReader(config._cfg) + reader.addsubstitutions(["foo", "'bar", "baz'"]) + assert reader.getargvlist('section', 'key1') == [] + x = reader.getargvlist("section", "key2") + assert x == [["cmd1", "-f", "foo", "bar baz"]] + def test_positional_arguments_are_only_replaced_when_standing_alone(self, tmpdir, newconfig): config = newconfig(""" https://bitbucket.org/hpk42/tox/commits/169574bf58a4/ Changeset: 169574bf58a4 User: hpk42 Date: 2014-05-15 11:33:28 Summary: Merged in cboylan/tox (pull request #85) Fix command expansion and parsing. Affected #: 2 files diff -r 65be9669e403386305e091ff55c2b3e9fb8c6410 -r 169574bf58a499d179ece389b75a83ee8b6fba4a tests/test_config.py --- a/tests/test_config.py +++ b/tests/test_config.py @@ -293,7 +293,7 @@ # "reader.getargvlist('section', 'key1')") assert reader.getargvlist('section', 'key1') == [] x = reader.getargvlist("section", "key2") - assert x == [["cmd1", "with space", "grr"], + assert x == [["cmd1", "with", "space", "grr"], ["cmd2", "grr"]] def test_argvlist_windows_escaping(self, tmpdir, newconfig): @@ -319,7 +319,7 @@ # "reader.getargvlist('section', 'key1')") assert reader.getargvlist('section', 'key1') == [] x = reader.getargvlist("section", "key2") - assert x == [["cmd1", "with space", "grr"]] + assert x == [["cmd1", "with", "space", "grr"]] def test_argvlist_quoting_in_command(self, tmpdir, newconfig): @@ -361,6 +361,34 @@ assert argvlist[0] == ["cmd1"] assert argvlist[1] == ["cmd2", "value2", "other"] + def test_argvlist_quoted_posargs(self, tmpdir, newconfig): + config = newconfig(""" + [section] + key2= + cmd1 --foo-args='{posargs}' + cmd2 -f '{posargs}' + cmd3 -f {posargs} + """) + reader = IniReader(config._cfg) + reader.addsubstitutions(["foo", "bar"]) + assert reader.getargvlist('section', 'key1') == [] + x = reader.getargvlist("section", "key2") + assert x == [["cmd1", "--foo-args=foo bar"], + ["cmd2", "-f", "foo bar"], + ["cmd3", "-f", "foo", "bar"]] + + def test_argvlist_posargs_with_quotes(self, tmpdir, newconfig): + config = newconfig(""" + [section] + key2= + cmd1 -f {posargs} + """) + reader = IniReader(config._cfg) + reader.addsubstitutions(["foo", "'bar", "baz'"]) + assert reader.getargvlist('section', 'key1') == [] + x = reader.getargvlist("section", "key2") + assert x == [["cmd1", "-f", "foo", "bar baz"]] + def test_positional_arguments_are_only_replaced_when_standing_alone(self, tmpdir, newconfig): config = newconfig(""" diff -r 65be9669e403386305e091ff55c2b3e9fb8c6410 -r 169574bf58a499d179ece389b75a83ee8b6fba4a tox/_config.py --- a/tox/_config.py +++ b/tox/_config.py @@ -530,30 +530,35 @@ def _processcommand(self, command): posargs = getattr(self, "posargs", None) - # special treat posargs which might contain multiple arguments - # in their defaults + # Iterate through each word of the command substituting as + # appropriate to construct the new command string. This + # string is then broken up into exec argv components using + # shlex. newcommand = "" for word in CommandParser(command).words(): - if word.startswith("{posargs:") and word.endswith("}"): + if word == "{posargs}" or word == "[]": if posargs: - word = "{posargs}" + newcommand += " ".join(posargs) + continue + elif word.startswith("{posargs:") and word.endswith("}"): + if posargs: + newcommand += " ".join(posargs) + continue else: word = word[9:-1] - newcommand += word + new_arg = "" + new_word = self._replace(word) + new_word = self._replace(new_word) + new_arg += new_word + newcommand += new_arg - # now we can properly parse the command - argv = [] - for arg in shlex.split(newcommand): - if arg in ('[]', "{posargs}"): - if posargs: - argv.extend(posargs) - continue - new_arg = "" - for word in CommandParser(arg).words(): - new_word = self._replace(word) - new_word = self._replace(new_word) - new_arg += new_word - argv.append(new_arg) + # Construct shlex object that will not escape any values, + # use all values as is in argv. + shlexer = shlex.shlex(newcommand, posix=True) + shlexer.whitespace_split = True + shlexer.escape = '' + shlexer.commenters = '' + argv = list(shlexer) return argv def getargv(self, section, name, default=None, replace=True): Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 15 11:41:47 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 15 May 2014 09:41:47 -0000 Subject: [Pytest-commit] commit/tox: hpk42: fix issue150: parse {posargs} more like we used to do it pre 1.7.0. Message-ID: <20140515094147.8743.35982@app04.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/acb4f0db1d40/ Changeset: acb4f0db1d40 User: hpk42 Date: 2014-05-15 11:41:19 Summary: fix issue150: parse {posargs} more like we used to do it pre 1.7.0. The 1.7.0 behaviour broke a lot of OpenStack projects. See PR85 and the issue discussions for (far) more details, hopefully resulting in a more refined behaviour in the 1.8 series. And thanks to Clark Boylan for the PR. Affected #: 4 files diff -r 169574bf58a499d179ece389b75a83ee8b6fba4a -r acb4f0db1d405a772c17217b28d87859fc12084e CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,12 @@ development ----------- +- fix issue150: parse {posargs} more like we used to do it pre 1.7.0. + The 1.7.0 behaviour broke a lot of OpenStack projects. + See PR85 and the issue discussions for (far) more details, hopefully + resulting in a more refined behaviour in the 1.8 series. + And thanks to Clark Boylan for the PR. + - fix issue59: add option "--skip-missing-interpreters" which won't fail the build if Python interpreters listed in tox.ini are missing. Thanks Alexandre Conrad for PR104. diff -r 169574bf58a499d179ece389b75a83ee8b6fba4a -r acb4f0db1d405a772c17217b28d87859fc12084e CONTRIBUTORS --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -26,3 +26,4 @@ Alexandre Conrad Morgan Fainberg Marc Schlaich +Clark Boylan diff -r 169574bf58a499d179ece389b75a83ee8b6fba4a -r acb4f0db1d405a772c17217b28d87859fc12084e setup.py --- a/setup.py +++ b/setup.py @@ -28,7 +28,7 @@ description='virtualenv-based automation of test activities', long_description=open("README.rst").read(), url='http://tox.testrun.org/', - version='1.7.1', + version='1.7.2.dev1', license='http://opensource.org/licenses/MIT', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], author='holger krekel', diff -r 169574bf58a499d179ece389b75a83ee8b6fba4a -r acb4f0db1d405a772c17217b28d87859fc12084e tox/__init__.py --- a/tox/__init__.py +++ b/tox/__init__.py @@ -1,5 +1,5 @@ # -__version__ = '1.7.1' +__version__ = '1.7.2.dev1' class exception: class Error(Exception): Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From issues-reply at bitbucket.org Thu May 15 13:18:36 2014 From: issues-reply at bitbucket.org (Haak Saxberg) Date: Thu, 15 May 2014 11:18:36 -0000 Subject: [Pytest-commit] Issue #517: setup_method executed before session fixtures (hpk42/pytest) Message-ID: <20140515111836.20994.33097@app18.ash-private.bitbucket.org> New issue 517: setup_method executed before session fixtures https://bitbucket.org/hpk42/pytest/issue/517/setup_method-executed-before-session Haak Saxberg: consider the following dummy test file: ``` #!python import pytest @pytest.yield_fixture(scope="session", autouse=True) def print_session(): print "session fixture" yield print "session teardown" class TestClass(object): def setup_method(self, method): print "method setup" def teardown_method(self, method): print "method teardown" def test_printer(self): print "test method" ``` `pytest --capture=no test_file.py` will generate the following output: ``` #!bash ==================== test session starts ==================== platform darwin -- Python 2.7.5 -- py-1.4.20 -- pytest-2.5.2 collected 1 items tests/test_ordering.py method setup session fixture test method .method teardown session teardown ================= 1 passed in 0.01 seconds ================= ``` that doesn't seem right, especially since the teardowns are in the correct order. In fact it's pretty bad, because you might (I would think rightly) depend on the session having been set up already in your setup_method. From issues-reply at bitbucket.org Thu May 15 17:02:23 2014 From: issues-reply at bitbucket.org (Charlie Clark) Date: Thu, 15 May 2014 15:02:23 -0000 Subject: [Pytest-commit] Issue #172: Getting ImportMismatchErrors in combination with Jenkins (hpk42/tox) Message-ID: <20140515150223.31327.35236@app02.ash-private.bitbucket.org> New issue 172: Getting ImportMismatchErrors in combination with Jenkins https://bitbucket.org/hpk42/tox/issue/172/getting-importmismatcherrors-in Charlie Clark: Not sure what the problem is. Tox works fine locally but we've hit a few problems recently. A sample TB can be found here http://build.adimian.com/job/openpyxl-2.0/26/console But the key line is: ``` #!python E ImportMismatchError: ('openpyxl.conftest', '/var/lib/jenkins/workspace/openpyxl-2.0/openpyxl/conftest.py', local('/var/lib/jenkins/workspace/openpyxl-2.0/.tox/py34/lib64/python3.4/site-packages/openpyxl/conftest.py')) ``` Looking at the source this relates to problems with __file__ but what problems? Should the two files be the same? From commits-noreply at bitbucket.org Mon May 19 20:30:59 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Mon, 19 May 2014 18:30:59 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: Merged in tbekolay/pytest/tbekolay/better-setuptools-integration-in-goodpra-1400520902689 (pull request #171) Message-ID: <20140519183059.8526.12265@app07.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/7b67cc5603a6/ Changeset: 7b67cc5603a6 User: hpk42 Date: 2014-05-19 20:30:54 Summary: Merged in tbekolay/pytest/tbekolay/better-setuptools-integration-in-goodpra-1400520902689 (pull request #171) Better setuptools integration in goodpractices Affected #: 1 file diff -r 9a891617d5a28b75043d1f6480bf41b8f39ddc2f -r 7b67cc5603a6d67b8867874595a82e9a8137233e doc/en/goodpractises.txt --- a/doc/en/goodpractises.txt +++ b/doc/en/goodpractises.txt @@ -229,6 +229,12 @@ class PyTest(TestCommand): + user_options = [('pytest-args=', 'a', "Arguments to pass to py.test")] + + def initialize_options(self): + TestCommand.initialize_options(self) + self.pytest_args = None + def finalize_options(self): TestCommand.finalize_options(self) self.test_args = [] @@ -237,7 +243,7 @@ def run_tests(self): #import here, cause outside the eggs aren't loaded import pytest - errno = pytest.main(self.test_args) + errno = pytest.main(self.pytest_args) sys.exit(errno) @@ -252,7 +258,12 @@ python setup.py test this will download ``pytest`` if needed and then run your tests -as you would expect it to. +as you would expect it to. You can pass a single string of arguments +using the ``--pytest-args`` or ``-a`` command-line option. For example:: + + python setup.py test -a "--durations=5" + +is equivalent to running ``py.test --durations=5``. .. _`test discovery`: .. _`Python test discovery`: Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Mon May 19 20:30:59 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Mon, 19 May 2014 18:30:59 -0000 Subject: [Pytest-commit] commit/pytest: 2 new changesets Message-ID: <20140519183059.2347.55538@app04.ash-private.bitbucket.org> 2 new commits in pytest: https://bitbucket.org/hpk42/pytest/commits/9f1c5ee5a82b/ Changeset: 9f1c5ee5a82b Branch: tbekolay/better-setuptools-integration-in-goodpra-1400520902689 User: tbekolay Date: 2014-05-19 19:35:28 Summary: Better setuptools integration in goodpractices Affected #: 1 file diff -r 9a891617d5a28b75043d1f6480bf41b8f39ddc2f -r 9f1c5ee5a82b1496a47e3e3890ab1412d2b54caa doc/en/goodpractises.txt --- a/doc/en/goodpractises.txt +++ b/doc/en/goodpractises.txt @@ -229,6 +229,12 @@ class PyTest(TestCommand): + user_options = [('pytest-args=', 'a', "Arguments to pass to py.test")] + + def initialize_options(self): + TestCommand.initialize_options(self) + self.pytest_args = None + def finalize_options(self): TestCommand.finalize_options(self) self.test_args = [] @@ -237,7 +243,7 @@ def run_tests(self): #import here, cause outside the eggs aren't loaded import pytest - errno = pytest.main(self.test_args) + errno = pytest.main(self.pytest_args) sys.exit(errno) @@ -252,7 +258,12 @@ python setup.py test this will download ``pytest`` if needed and then run your tests -as you would expect it to. +as you would expect it to. You can pass a single string of arguments +using the ``--pytest-args`` or ``-a`` command-line option. For example:: + + python setup.py test -a "--durations=5" + +is equivalent to running ``py.test --durations=5``. .. _`test discovery`: .. _`Python test discovery`: https://bitbucket.org/hpk42/pytest/commits/7b67cc5603a6/ Changeset: 7b67cc5603a6 User: hpk42 Date: 2014-05-19 20:30:54 Summary: Merged in tbekolay/pytest/tbekolay/better-setuptools-integration-in-goodpra-1400520902689 (pull request #171) Better setuptools integration in goodpractices Affected #: 1 file diff -r 9a891617d5a28b75043d1f6480bf41b8f39ddc2f -r 7b67cc5603a6d67b8867874595a82e9a8137233e doc/en/goodpractises.txt --- a/doc/en/goodpractises.txt +++ b/doc/en/goodpractises.txt @@ -229,6 +229,12 @@ class PyTest(TestCommand): + user_options = [('pytest-args=', 'a', "Arguments to pass to py.test")] + + def initialize_options(self): + TestCommand.initialize_options(self) + self.pytest_args = None + def finalize_options(self): TestCommand.finalize_options(self) self.test_args = [] @@ -237,7 +243,7 @@ def run_tests(self): #import here, cause outside the eggs aren't loaded import pytest - errno = pytest.main(self.test_args) + errno = pytest.main(self.pytest_args) sys.exit(errno) @@ -252,7 +258,12 @@ python setup.py test this will download ``pytest`` if needed and then run your tests -as you would expect it to. +as you would expect it to. You can pass a single string of arguments +using the ``--pytest-args`` or ``-a`` command-line option. For example:: + + python setup.py test -a "--durations=5" + +is equivalent to running ``py.test --durations=5``. .. _`test discovery`: .. _`Python test discovery`: Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Mon May 19 20:32:23 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Mon, 19 May 2014 18:32:23 -0000 Subject: [Pytest-commit] commit/pytest: hpk42: improve example for pytest integration with "python setup.py test" Message-ID: <20140519183223.17790.68666@app01.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/95655acb1f90/ Changeset: 95655acb1f90 User: hpk42 Date: 2014-05-19 20:32:09 Summary: improve example for pytest integration with "python setup.py test" which now has a generic "-a" or "--pytest-args" option where you can pass additional options as a quoted string. Thanks Trevor Bekolay. Affected #: 2 files diff -r 7b67cc5603a6d67b8867874595a82e9a8137233e -r 95655acb1f906fbe0a737c2676094aad77bbab1d AUTHORS --- a/AUTHORS +++ b/AUTHORS @@ -42,3 +42,4 @@ Christopher Gilling Daniel Grana Andy Freeland +Trevor Bekolay diff -r 7b67cc5603a6d67b8867874595a82e9a8137233e -r 95655acb1f906fbe0a737c2676094aad77bbab1d CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -57,6 +57,10 @@ - fix issue483: trial/py33 works now properly. Thanks Daniel Grana for PR. +- improve example for pytest integration with "python setup.py test" + which now has a generic "-a" or "--pytest-args" option where you + can pass additional options as a quoted string. Thanks Trevor Bekolay. + - simplified internal capturing mechanism and made it more robust against tests or setups changing FD1/FD2, also better integrated now with pytest.pdb() in single tests. Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Mon May 19 20:38:12 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Mon, 19 May 2014 18:38:12 -0000 Subject: [Pytest-commit] commit/tox: 2 new changesets Message-ID: <20140519183812.22324.23862@app13.ash-private.bitbucket.org> 2 new commits in tox: https://bitbucket.org/hpk42/tox/commits/4d9994e4b353/ Changeset: 4d9994e4b353 Branch: tbekolay/better-setuptools-integration-in-basic-1400524487298 User: tbekolay Date: 2014-05-19 20:34:48 Summary: Better setuptools integration in basic Affected #: 1 file diff -r acb4f0db1d405a772c17217b28d87859fc12084e -r 4d9994e4b3539405fc08738554f50ab154eb38a4 doc/example/basic.txt --- a/doc/example/basic.txt +++ b/doc/example/basic.txt @@ -1,4 +1,3 @@ - Basic usage ============================================= @@ -207,6 +206,10 @@ import sys class Tox(TestCommand): + user_options = [('tox-args=', 'a', "Arguments to pass to tox")] + def initialize_options(self): + TestCommand.initialize_options(self) + self.tox_args = None def finalize_options(self): TestCommand.finalize_options(self) self.test_args = [] @@ -214,7 +217,8 @@ def run_tests(self): #import here, cause outside the eggs aren't loaded import tox - errno = tox.cmdline(self.test_args) + import shlex + errno = tox.cmdline(args=shlex.split(self.tox_args)) sys.exit(errno) setup( @@ -227,5 +231,9 @@ python setup.py test -this will install tox and then run tox. +this will install tox and then run tox. You can pass arguments to ``tox`` +using the ``--tox-args`` or ``-a`` command-line options. For example:: + python setup.py test -a "-epy27" + +is equivalent to running ``tox -epy27``. \ No newline at end of file https://bitbucket.org/hpk42/tox/commits/8b4012b098d6/ Changeset: 8b4012b098d6 User: hpk42 Date: 2014-05-19 20:38:10 Summary: Merged in tbekolay/tox/tbekolay/better-setuptools-integration-in-basic-1400524487298 (pull request #109) Better setuptools integration in basic Affected #: 1 file diff -r acb4f0db1d405a772c17217b28d87859fc12084e -r 8b4012b098d62830708944185a53aaf855915bd1 doc/example/basic.txt --- a/doc/example/basic.txt +++ b/doc/example/basic.txt @@ -1,4 +1,3 @@ - Basic usage ============================================= @@ -207,6 +206,10 @@ import sys class Tox(TestCommand): + user_options = [('tox-args=', 'a', "Arguments to pass to tox")] + def initialize_options(self): + TestCommand.initialize_options(self) + self.tox_args = None def finalize_options(self): TestCommand.finalize_options(self) self.test_args = [] @@ -214,7 +217,8 @@ def run_tests(self): #import here, cause outside the eggs aren't loaded import tox - errno = tox.cmdline(self.test_args) + import shlex + errno = tox.cmdline(args=shlex.split(self.tox_args)) sys.exit(errno) setup( @@ -227,5 +231,9 @@ python setup.py test -this will install tox and then run tox. +this will install tox and then run tox. You can pass arguments to ``tox`` +using the ``--tox-args`` or ``-a`` command-line options. For example:: + python setup.py test -a "-epy27" + +is equivalent to running ``tox -epy27``. \ No newline at end of file Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Mon May 19 20:38:12 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Mon, 19 May 2014 18:38:12 -0000 Subject: [Pytest-commit] commit/tox: hpk42: Merged in tbekolay/tox/tbekolay/better-setuptools-integration-in-basic-1400524487298 (pull request #109) Message-ID: <20140519183812.15449.84412@app09.ash-private.bitbucket.org> 1 new commit in tox: https://bitbucket.org/hpk42/tox/commits/8b4012b098d6/ Changeset: 8b4012b098d6 User: hpk42 Date: 2014-05-19 20:38:10 Summary: Merged in tbekolay/tox/tbekolay/better-setuptools-integration-in-basic-1400524487298 (pull request #109) Better setuptools integration in basic Affected #: 1 file diff -r acb4f0db1d405a772c17217b28d87859fc12084e -r 8b4012b098d62830708944185a53aaf855915bd1 doc/example/basic.txt --- a/doc/example/basic.txt +++ b/doc/example/basic.txt @@ -1,4 +1,3 @@ - Basic usage ============================================= @@ -207,6 +206,10 @@ import sys class Tox(TestCommand): + user_options = [('tox-args=', 'a', "Arguments to pass to tox")] + def initialize_options(self): + TestCommand.initialize_options(self) + self.tox_args = None def finalize_options(self): TestCommand.finalize_options(self) self.test_args = [] @@ -214,7 +217,8 @@ def run_tests(self): #import here, cause outside the eggs aren't loaded import tox - errno = tox.cmdline(self.test_args) + import shlex + errno = tox.cmdline(args=shlex.split(self.tox_args)) sys.exit(errno) setup( @@ -227,5 +231,9 @@ python setup.py test -this will install tox and then run tox. +this will install tox and then run tox. You can pass arguments to ``tox`` +using the ``--tox-args`` or ``-a`` command-line options. For example:: + python setup.py test -a "-epy27" + +is equivalent to running ``tox -epy27``. \ No newline at end of file Repository URL: https://bitbucket.org/hpk42/tox/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From issues-reply at bitbucket.org Wed May 21 15:18:26 2014 From: issues-reply at bitbucket.org (Michael Mercier) Date: Wed, 21 May 2014 13:18:26 -0000 Subject: [Pytest-commit] Issue #173: Substitution access current env name (hpk42/tox) Message-ID: <20140521131826.31886.74166@app13.ash-private.bitbucket.org> New issue 173: Substitution access current env name https://bitbucket.org/hpk42/tox/issue/173/substitution-access-current-env-name Michael Mercier: Hello, I would like to access to the current env name in the conf file to make a different report for each env. For example in {current_env} substitution variable that gives "py32" or py"34". Here is the config file I would like to use: ``` #! [tox] envlist = py32, py34 [testenv] commands = python setup.py install py.test -v --cov myproject > docs/source/pytest_{current_env}_report.txt ``` From issues-reply at bitbucket.org Sat May 24 16:52:25 2014 From: issues-reply at bitbucket.org (Matthias Geier) Date: Sat, 24 May 2014 14:52:25 -0000 Subject: [Pytest-commit] Issue #518: parametrize: allow ellipsis to avoid repeating argument list? (hpk42/pytest) Message-ID: <20140524145225.5377.68751@app03.ash-private.bitbucket.org> New issue 518: parametrize: allow ellipsis to avoid repeating argument list? https://bitbucket.org/hpk42/pytest/issue/518/parametrize-allow-ellipsis-to-avoid Matthias Geier: I'm new to py.test, so please forgive me if this is nonsense ... I really like py.test and especially the parametrize-feature but I found it gets a bit tedious if I have many arguments in my test function. The problem is that I basically have to repeat the whole list of arguments: I have to write them once in the string-argument to the `parametrize` decorator and then again in the argument list of the test function itself. Here's an example: ``` #!python import pytest testparams = [ (1, 2, 3, 4, 5, 6, 7, 8), (8, 7, 6, 5, 4, 3, 2, 1), ] @pytest.mark.parametrize("a, b, c, d, e, f, g, h", testparams) def test_many_args(a, b, c, d, e, f, g, h): assert False ``` I thought it would be nice if the decorator could automatically deduce the list of arguments from the test function, like this: ``` #!python @pytest.mark.parametrize(..., testparams) def test_many_args(a, b, c, d, e, f, g, h): assert False ``` In Python 2.x, you'd have to use `Ellipsis` instead of `...`, of course. I tried to implement this and came up with a little patch: ``` #!diff diff -r 95655acb1f90 _pytest/python.py --- a/_pytest/python.py Mon May 19 20:32:09 2014 +0200 +++ b/_pytest/python.py Sat May 24 16:14:38 2014 +0200 @@ -796,7 +796,9 @@ unwrapped_argvalues.append(argval) argvalues = unwrapped_argvalues - if not isinstance(argnames, (tuple, list)): + if argnames is Ellipsis: + argnames = inspect.getargspec(self.function)[0][:len(argval)] + elif not isinstance(argnames, (tuple, list)): argnames = [x.strip() for x in argnames.split(",") if x.strip()] if len(argnames) == 1: argvalues = [(val,) for val in argvalues] ``` I'm sorry that I didn't make a pull request, but I have no clue about Mercurial. But I guess the change is small enough. Fixture arguments to the test function do still work, but now they have to be in the end of the argument list, e.g.: ``` #!python @pytest.fixture def myfixture(): pass @pytest.mark.parametrize(..., testparams) def test_many_args_and_fixture(a, b, c, d, e, f, g, h, myfixture): assert False ``` What do you think of this idea? Has something like this been discussed already? From issues-reply at bitbucket.org Tue May 27 06:43:58 2014 From: issues-reply at bitbucket.org (Nikolaus Rath) Date: Tue, 27 May 2014 04:43:58 -0000 Subject: [Pytest-commit] Issue #519: fixture scope is ignored when using metafunc.parametrize() (hpk42/pytest) Message-ID: <20140527044358.32608.38858@app13.ash-private.bitbucket.org> New issue 519: fixture scope is ignored when using metafunc.parametrize() https://bitbucket.org/hpk42/pytest/issue/519/fixture-scope-is-ignored-when-using Nikolaus Rath: Please take a look at the following example: ``` #!python import pytest def pytest_generate_tests(metafunc): if 'arg1' in metafunc.fixturenames: metafunc.parametrize("arg1", [ 'arg1v1', 'arg1v2' ], scope='module') if 'arg2' in metafunc.fixturenames: metafunc.parametrize("arg2", [ 'arg2v1', 'arg2v2' ], scope='function') @pytest.yield_fixture(scope='module') def fix1(arg1): print('running fix1 with', arg1) yield 'fix1-' + arg1 @pytest.yield_fixture(scope='function') def fix2(fix1, arg2): print('running fix2 with', fix1, arg2) yield 'fix2-' + arg2 + fix1 def test_one(fix2): assert True def test_two(fix2): assert True ``` As I understand, `test_one` and `test_two` should be executed 4 times each. The `fix2` function should be called once for every test execution (because it has function scope), and the `fix1` function once for every value of `arg1` (because it has module scope). However, in practice `fix1` seems to be called for every test function as well, as if it had function scope: ``` #!text $ python3 ~/clones/pytest/pytest.py -v -s test_bug.py ============================= test session starts ============================== platform linux -- Python 3.3.5 -- py-1.4.20 -- pytest-2.6.0.dev1 -- /usr/bin/python3 collected 8 items test_bug.py at 20::test_one[arg1v1-arg2v1] running fix1 with arg1v1 running fix2 with fix1-arg1v1 arg2v1 PASSED test_bug.py at 23::test_two[arg1v1-arg2v1] running fix2 with fix1-arg1v1 arg2v1 PASSED test_bug.py at 20::test_one[arg1v1-arg2v2] running fix1 with arg1v1 running fix2 with fix1-arg1v1 arg2v2 PASSED test_bug.py at 23::test_two[arg1v1-arg2v2] running fix2 with fix1-arg1v1 arg2v2 PASSED test_bug.py at 20::test_one[arg1v2-arg2v1] running fix1 with arg1v2 running fix2 with fix1-arg1v2 arg2v1 PASSED test_bug.py at 23::test_two[arg1v2-arg2v1] running fix2 with fix1-arg1v2 arg2v1 PASSED test_bug.py at 20::test_one[arg1v2-arg2v2] running fix1 with arg1v2 running fix2 with fix1-arg1v2 arg2v2 PASSED test_bug.py at 23::test_two[arg1v2-arg2v2] running fix2 with fix1-arg1v2 arg2v2 PASSED =========================== 8 passed in 0.01 seconds =========================== ``` Looks like a bug to me. From issues-reply at bitbucket.org Tue May 27 21:23:01 2014 From: issues-reply at bitbucket.org (Kodi Arfer) Date: Tue, 27 May 2014 19:23:01 -0000 Subject: [Pytest-commit] Issue #520: Silent crash when exec produces a syntax error involving Unicode (hpk42/pytest) Message-ID: <20140527192301.7053.43070@app08.ash-private.bitbucket.org> New issue 520: Silent crash when exec produces a syntax error involving Unicode https://bitbucket.org/hpk42/pytest/issue/520/silent-crash-when-exec-produces-a-syntax Kodi Arfer: Input: ``` #!python def test_foo(): exec u'foo u"\u03b1"' ``` Output: ``` ===================== test session starts ====================== platform linux2 -- Python 2.7.6 -- py-1.4.20 -- pytest-2.5.2 collected 1 items test_something.py ``` (Except the output has no trailing newline, just a trailing space after `test_something.py`.) Using `--assert=plain` makes no difference. From issues-reply at bitbucket.org Wed May 28 03:13:44 2014 From: issues-reply at bitbucket.org (Alexandre Conrad) Date: Wed, 28 May 2014 01:13:44 -0000 Subject: [Pytest-commit] Issue #174: Allow testenv to be "non-voting" (optional) (hpk42/tox) Message-ID: <20140528011344.13138.31732@app08.ash-private.bitbucket.org> New issue 174: Allow testenv to be "non-voting" (optional) https://bitbucket.org/hpk42/tox/issue/174/allow-testenv-to-be-non-voting-optional Alexandre Conrad: I would like to see an option that tells tox to not fail for testenvs / jobs that are considered optional. For example, if I have a section [testenv:pep8] I don't want tox to fail if I mark it as non-voting. So if a testenv returns a non-zero status (failure) then tox would still exit with a zero status but display a warning that a non-voting test failed. ``` #!ini [tox] skipsdist = True envlist = py26, py27, pep8 [testenv] commands = pip install -e . pip install -r test-requirements.txt py.test {posargs} [testenv:pep8] voting = False commands = pip install pep8 pep8 --ignore=E501 surveyservice/ ``` If this is considered a good idea, I'd like to try implementing it. From issues-reply at bitbucket.org Wed May 28 17:59:28 2014 From: issues-reply at bitbucket.org (Daniel Hahler) Date: Wed, 28 May 2014 15:59:28 -0000 Subject: [Pytest-commit] Issue #521: ghost.exit() in py.test teardown/finalizer causes Python to exit with return code 1 (hpk42/pytest) Message-ID: <20140528155928.19594.70693@app07.ash-private.bitbucket.org> New issue 521: ghost.exit() in py.test teardown/finalizer causes Python to exit with return code 1 https://bitbucket.org/hpk42/pytest/issue/521/ghostexit-in-pytest-teardown-finalizer Daniel Hahler: Using Ghost.py with Xvfb (on a Linux framebuffer console (Ctrl-Alt-F1)), causes Python to exit with return code 1, although py.test calls `sys.exit(0)` after the tests have all passed. It can be reproduced using this `test_ghost.py` file: import pytest from ghost import Ghost @pytest.yield_fixture() def ghost(): ghost = Ghost() yield ghost ghost.exit() def test_ghost(ghost): assert True TEST CASE: 1. Create a new virtualenv: `mktmpenv` 2. Install py.test and Ghost.py: `bin/pip install pytest git+git://github.com/jeanphix/Ghost.py.git` 3. Install PySide, e.g. by copying it (after installing it systemwide): cp -a /usr/lib/python2.7/dist-packages/PySide $VIRTUAL_ENV/lib/python2.7/site-packages/PySide I am using `python-pyside.qtwebkit` (version 1.2.1-4build1) on Ubuntu 14.04. 4. Run the above test file: `py.test test_ghost.py` I could not find the reason for this to happen using `ipdb` stepping. It would be nice if `py.test` could ensure somehow that its own exit code is being used, and additionally output some warning in case a finalizer acts like the one above. From issues-reply at bitbucket.org Sat May 31 04:00:20 2014 From: issues-reply at bitbucket.org (Marc Abramowitz) Date: Sat, 31 May 2014 02:00:20 -0000 Subject: [Pytest-commit] Issue #175: Can't do substitution {[base]commands} (hpk42/tox) Message-ID: <20140531020020.5747.79023@app05.ash-private.bitbucket.org> New issue 175: Can't do substitution {[base]commands} https://bitbucket.org/hpk42/tox/issue/175/cant-do-substitution-base-commands Marc Abramowitz: I can't seem to do a substitution with "commands" in tox ? e.g.: ```ini [wheel] deps = wheel commands = pip wheel -i http://packages/index . [testenv:wheelpy26] deps = {[wheel]deps} commands = {[wheel]commands} ``` results in: ``` ERROR: InvocationError: could not find executable 'pip wheel -i http://packages/index .' ``` It would be nice if it were possible to reuse commands. From commits-noreply at bitbucket.org Sat May 31 23:42:32 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 31 May 2014 21:42:32 -0000 Subject: [Pytest-commit] commit/pytest: gutworth: assert reinterpretation: try mangling attributes that look like private class vars (fixes #514) Message-ID: <20140531214232.31164.99857@app04.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/a79829a4061e/ Changeset: a79829a4061e User: gutworth Date: 2014-05-31 23:37:02 Summary: assert reinterpretation: try mangling attributes that look like private class vars (fixes #514) Affected #: 4 files diff -r eac38fd28362f3f5d81ce2e39bf2f56189153782 -r a79829a4061e5ff521cd94925910e8ad56e0112b CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,8 @@ NEXT (2.6) ----------------------------------- +- fix issue514: teach assertion reinterpretation about private class attributes + - change -v output to include full node IDs of tests. Users can copy a node ID from a test run, including line number, and use it as a positional argument in order to run only a single test. diff -r eac38fd28362f3f5d81ce2e39bf2f56189153782 -r a79829a4061e5ff521cd94925910e8ad56e0112b _pytest/assertion/newinterpret.py --- a/_pytest/assertion/newinterpret.py +++ b/_pytest/assertion/newinterpret.py @@ -286,7 +286,19 @@ source = "__exprinfo_expr.%s" % (attr.attr,) co = self._compile(source) try: - result = self.frame.eval(co, __exprinfo_expr=source_result) + try: + result = self.frame.eval(co, __exprinfo_expr=source_result) + except AttributeError: + # Maybe the attribute name needs to be mangled? + if not attr.attr.startswith("__") or attr.attr.endswith("__"): + raise + source = "getattr(__exprinfo_expr.__class__, '__name__', '')" + co = self._compile(source) + class_name = self.frame.eval(co, __exprinfo_expr=source_result) + mangled_attr = "_" + class_name + attr.attr + source = "__exprinfo_expr.%s" % (mangled_attr,) + co = self._compile(source) + result = self.frame.eval(co, __exprinfo_expr=source_result) except Exception: raise Failure(explanation) explanation = "%s\n{%s = %s.%s\n}" % (self.frame.repr(result), diff -r eac38fd28362f3f5d81ce2e39bf2f56189153782 -r a79829a4061e5ff521cd94925910e8ad56e0112b _pytest/assertion/oldinterpret.py --- a/_pytest/assertion/oldinterpret.py +++ b/_pytest/assertion/oldinterpret.py @@ -355,7 +355,18 @@ expr.eval(frame) source = '__exprinfo_expr.%s' % self.attrname try: - self.result = frame.eval(source, __exprinfo_expr=expr.result) + try: + self.result = frame.eval(source, __exprinfo_expr=expr.result) + except AttributeError: + # Maybe the attribute name needs to be mangled? + if (not self.attrname.startswith("__") or + self.attrname.endswith("__")): + raise + source = "getattr(__exprinfo_expr.__class__, '__name__', '')" + class_name = frame.eval(source, __exprinfo_expr=expr.result) + mangled_attr = "_" + class_name + self.attrname + source = "__exprinfo_expr.%s" % (mangled_attr,) + self.result = frame.eval(source, __exprinfo_expr=expr.result) except passthroughex: raise except: diff -r eac38fd28362f3f5d81ce2e39bf2f56189153782 -r a79829a4061e5ff521cd94925910e8ad56e0112b testing/test_assertinterpret.py --- a/testing/test_assertinterpret.py +++ b/testing/test_assertinterpret.py @@ -131,6 +131,18 @@ e = exvalue() assert "x=5" in e.msg +def test_private_class_variable(): + class X: + def __init__(self): + self.__v = 41 + def m(self): + assert self.__v == 42 + try: + X().m() + except AssertionError: + e = exvalue() + assert "== 42" in e.msg + # These tests should both fail, but should fail nicely... class WeirdRepr: def __repr__(self): Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Sat May 31 23:51:11 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Sat, 31 May 2014 21:51:11 -0000 Subject: [Pytest-commit] commit/pytest: gutworth: fix test on Python 3.2 Message-ID: <20140531215111.6259.77183@app18.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/76c9e65c1687/ Changeset: 76c9e65c1687 User: gutworth Date: 2014-05-31 23:51:05 Summary: fix test on Python 3.2 Affected #: 1 file diff -r a79829a4061e5ff521cd94925910e8ad56e0112b -r 76c9e65c1687a58a194ca230871d9b3b28e4421b testing/test_assertion.py --- a/testing/test_assertion.py +++ b/testing/test_assertion.py @@ -206,7 +206,7 @@ # Issue 453, for the bug this would raise IndexError testdir.makepyfile(""" def test_foo(): - assert u'\\n}' == u'' + assert '\\n}' == '' """) result = testdir.runpytest() assert result.ret == 1 Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. From commits-noreply at bitbucket.org Thu May 29 04:18:09 2014 From: commits-noreply at bitbucket.org (commits-noreply at bitbucket.org) Date: Thu, 29 May 2014 02:18:09 -0000 Subject: [Pytest-commit] commit/pytest: nicoddemus: Updated plugins_index and updated python 3 to 3.4 Message-ID: <20140529021809.29434.6634@app08.ash-private.bitbucket.org> 1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/eac38fd28362/ Changeset: eac38fd28362 User: nicoddemus Date: 2014-05-29 04:16:49 Summary: Updated plugins_index and updated python 3 to 3.4 Affected #: 2 files diff -r 95655acb1f906fbe0a737c2676094aad77bbab1d -r eac38fd28362f3f5d81ce2e39bf2f56189153782 doc/en/plugins_index/index.txt --- a/doc/en/plugins_index/index.txt +++ b/doc/en/plugins_index/index.txt @@ -1,133 +1,143 @@ -.. _plugins_index: - -List of Third-Party Plugins -=========================== - -The table below contains a listing of plugins found in PyPI and -their status when tested using py.test **2.5.2** and python 2.7 and -3.3. - -A complete listing can also be found at -`pytest-plugs `_, which contains tests -status against other py.test releases. - - -========================================================================================== ============================================================================================================ ============================================================================================================ ========================================================================= ============================================================================================================================================= - Name Py27 Py33 Repo Summary -========================================================================================== ============================================================================================================ ============================================================================================================ ========================================================================= ============================================================================================================================================= - `pytest-bdd-2.0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bdd-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bdd-latest?py=py33&pytest=2.5.2 .. image:: github.png BDD for pytest - :target: http://pytest-plugs.herokuapp.com/output/pytest-bdd-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-bdd-latest?py=py33&pytest=2.5.2 :target: https://github.com/olegpidsadnyi/pytest-bdd - `pytest-bdd-splinter-0.5.99 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bdd-splinter-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bdd-splinter-latest?py=py33&pytest=2.5.2 .. image:: github.png Splinter subplugin for Pytest BDD plugin - :target: http://pytest-plugs.herokuapp.com/output/pytest-bdd-splinter-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-bdd-splinter-latest?py=py33&pytest=2.5.2 :target: https://github.com/olegpidsadnyi/pytest-bdd-splinter - `pytest-bench-0.2.5 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bench-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bench-latest?py=py33&pytest=2.5.2 .. image:: github.png Benchmark utility that plugs into pytest. - :target: http://pytest-plugs.herokuapp.com/output/pytest-bench-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-bench-latest?py=py33&pytest=2.5.2 :target: http://github.com/concordusapps/pytest-bench - `pytest-blockage-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-blockage-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-blockage-latest?py=py33&pytest=2.5.2 .. image:: github.png Disable network requests during a test run. - :target: http://pytest-plugs.herokuapp.com/output/pytest-blockage-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-blockage-latest?py=py33&pytest=2.5.2 :target: https://github.com/rob-b/pytest-blockage - `pytest-browsermob-proxy-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-browsermob-proxy-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-browsermob-proxy-latest?py=py33&pytest=2.5.2 .. image:: github.png BrowserMob proxy plugin for py.test. - :target: http://pytest-plugs.herokuapp.com/output/pytest-browsermob-proxy-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-browsermob-proxy-latest?py=py33&pytest=2.5.2 :target: https://github.com/davehunt/pytest-browsermob-proxy - `pytest-bugzilla-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bugzilla-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bugzilla-latest?py=py33&pytest=2.5.2 .. image:: github.png py.test bugzilla integration plugin - :target: http://pytest-plugs.herokuapp.com/output/pytest-bugzilla-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-bugzilla-latest?py=py33&pytest=2.5.2 :target: http://github.com/nibrahim/pytest_bugzilla - `pytest-cache-1.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-cache-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-cache-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png pytest plugin with mechanisms for caching across test runs - :target: http://pytest-plugs.herokuapp.com/output/pytest-cache-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-cache-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-cache/ - `pytest-capturelog-0.7 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-capturelog-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-capturelog-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png py.test plugin to capture log messages - :target: http://pytest-plugs.herokuapp.com/output/pytest-capturelog-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-capturelog-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/memedough/pytest-capturelog/overview - `pytest-codecheckers-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-codecheckers-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-codecheckers-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to add source code sanity checks (pep8 and friends) - :target: http://pytest-plugs.herokuapp.com/output/pytest-codecheckers-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-codecheckers-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/RonnyPfannschmidt/pytest-codecheckers/ - `pytest-contextfixture-0.1.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-contextfixture-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-contextfixture-latest?py=py33&pytest=2.5.2 .. image:: github.png Define pytest fixtures as context managers. - :target: http://pytest-plugs.herokuapp.com/output/pytest-contextfixture-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-contextfixture-latest?py=py33&pytest=2.5.2 :target: http://github.com/pelme/pytest-contextfixture/ - `pytest-couchdbkit-0.5.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-couchdbkit-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-couchdbkit-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png py.test extension for per-test couchdb databases using couchdbkit - :target: http://pytest-plugs.herokuapp.com/output/pytest-couchdbkit-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-couchdbkit-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/RonnyPfannschmidt/pytest-couchdbkit - `pytest-cov-1.6 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-cov-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-cov-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png py.test plugin for coverage reporting with support for both centralised and distributed testing, including subprocesses and multiprocessing - :target: http://pytest-plugs.herokuapp.com/output/pytest-cov-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-cov-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/memedough/pytest-cov/overview - `pytest-dbfixtures-0.4.6 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-dbfixtures-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-dbfixtures-latest?py=py33&pytest=2.5.2 .. image:: github.png Databases fixtures plugin for py.test. - :target: http://pytest-plugs.herokuapp.com/output/pytest-dbfixtures-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-dbfixtures-latest?py=py33&pytest=2.5.2 :target: https://github.com/clearcode/pytest-dbfixtures - `pytest-dbus-notification-1.0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-dbus-notification-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-dbus-notification-latest?py=py33&pytest=2.5.2 .. image:: github.png D-BUS notifications for pytest results. - :target: http://pytest-plugs.herokuapp.com/output/pytest-dbus-notification-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-dbus-notification-latest?py=py33&pytest=2.5.2 :target: https://github.com/bmathieu33/pytest-dbus-notification - `pytest-diffeo-0.1.4 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-diffeo-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-diffeo-latest?py=py33&pytest=2.5.2 .. image:: github.png Common py.test support for Diffeo packages - :target: http://pytest-plugs.herokuapp.com/output/pytest-diffeo-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-diffeo-latest?py=py33&pytest=2.5.2 :target: https://github.com/diffeo/pytest-diffeo - `pytest-django-2.6 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-latest?py=py33&pytest=2.5.2 `link `_ A Django plugin for py.test. - :target: http://pytest-plugs.herokuapp.com/output/pytest-django-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-django-latest?py=py33&pytest=2.5.2 - `pytest-django-haystack-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-haystack-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-haystack-latest?py=py33&pytest=2.5.2 .. image:: github.png Cleanup your Haystack indexes between tests - :target: http://pytest-plugs.herokuapp.com/output/pytest-django-haystack-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-django-haystack-latest?py=py33&pytest=2.5.2 :target: http://github.com/rouge8/pytest-django-haystack - `pytest-django-lite-0.1.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-lite-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-lite-latest?py=py33&pytest=2.5.2 .. image:: github.png The bare minimum to integrate py.test with Django. - :target: http://pytest-plugs.herokuapp.com/output/pytest-django-lite-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-django-lite-latest?py=py33&pytest=2.5.2 :target: https://github.com/dcramer/pytest-django-lite - `pytest-figleaf-1.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-figleaf-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-figleaf-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png py.test figleaf coverage plugin - :target: http://pytest-plugs.herokuapp.com/output/pytest-figleaf-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-figleaf-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-figleaf - `pytest-flakes-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-flakes-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-flakes-latest?py=py33&pytest=2.5.2 .. image:: github.png pytest plugin to check source code with pyflakes - :target: http://pytest-plugs.herokuapp.com/output/pytest-flakes-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-flakes-latest?py=py33&pytest=2.5.2 :target: https://github.com/fschulze/pytest-flakes - `pytest-greendots-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-greendots-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-greendots-latest?py=py33&pytest=2.5.2 ? Green progress dots - :target: http://pytest-plugs.herokuapp.com/output/pytest-greendots-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-greendots-latest?py=py33&pytest=2.5.2 - `pytest-growl-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-growl-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-growl-latest?py=py33&pytest=2.5.2 ? Growl notifications for pytest results. - :target: http://pytest-plugs.herokuapp.com/output/pytest-growl-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-growl-latest?py=py33&pytest=2.5.2 - `pytest-httpretty-0.2.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-httpretty-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-httpretty-latest?py=py33&pytest=2.5.2 .. image:: github.png A thin wrapper of HTTPretty for pytest - :target: http://pytest-plugs.herokuapp.com/output/pytest-httpretty-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-httpretty-latest?py=py33&pytest=2.5.2 :target: http://github.com/papaeye/pytest-httpretty - `pytest-incremental-0.3.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-incremental-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-incremental-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png an incremental test runner (pytest plugin) - :target: http://pytest-plugs.herokuapp.com/output/pytest-incremental-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-incremental-latest?py=py33&pytest=2.5.2 :target: https://bitbucket.org/schettino72/pytest-incremental - `pytest-instafail-0.2.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-instafail-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-instafail-latest?py=py33&pytest=2.5.2 .. image:: github.png py.test plugin to show failures instantly - :target: http://pytest-plugs.herokuapp.com/output/pytest-instafail-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-instafail-latest?py=py33&pytest=2.5.2 :target: https://github.com/jpvanhal/pytest-instafail - `pytest-ipdb-0.1-prerelease `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-ipdb-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-ipdb-latest?py=py33&pytest=2.5.2 .. image:: github.png A py.test plug-in to enable drop to ipdb debugger on test failure. - :target: http://pytest-plugs.herokuapp.com/output/pytest-ipdb-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-ipdb-latest?py=py33&pytest=2.5.2 :target: https://github.com/mverteuil/pytest-ipdb - `pytest-jira-0.01 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-jira-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-jira-latest?py=py33&pytest=2.5.2 .. image:: github.png py.test JIRA integration plugin, using markers - :target: http://pytest-plugs.herokuapp.com/output/pytest-jira-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-jira-latest?py=py33&pytest=2.5.2 :target: http://github.com/jlaska/pytest_jira - `pytest-konira-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-konira-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-konira-latest?py=py33&pytest=2.5.2 .. image:: github.png Run Konira DSL tests with py.test - :target: http://pytest-plugs.herokuapp.com/output/pytest-konira-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-konira-latest?py=py33&pytest=2.5.2 :target: http://github.com/alfredodeza/pytest-konira - `pytest-localserver-0.3.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-localserver-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-localserver-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png py.test plugin to test server connections locally. - :target: http://pytest-plugs.herokuapp.com/output/pytest-localserver-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-localserver-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/basti/pytest-localserver/ - `pytest-marker-bugzilla-0.06 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-marker-bugzilla-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-marker-bugzilla-latest?py=py33&pytest=2.5.2 .. image:: github.png py.test bugzilla integration plugin, using markers - :target: http://pytest-plugs.herokuapp.com/output/pytest-marker-bugzilla-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-marker-bugzilla-latest?py=py33&pytest=2.5.2 :target: http://github.com/eanxgeek/pytest_marker_bugzilla - `pytest-markfiltration-0.8 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-markfiltration-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-markfiltration-latest?py=py33&pytest=2.5.2 .. image:: github.png UNKNOWN - :target: http://pytest-plugs.herokuapp.com/output/pytest-markfiltration-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-markfiltration-latest?py=py33&pytest=2.5.2 :target: https://github.com/adamgoucher/pytest-markfiltration - `pytest-marks-0.4 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-marks-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-marks-latest?py=py33&pytest=2.5.2 .. image:: github.png UNKNOWN - :target: http://pytest-plugs.herokuapp.com/output/pytest-marks-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-marks-latest?py=py33&pytest=2.5.2 :target: https://github.com/adamgoucher/pytest-marks - `pytest-monkeyplus-1.1.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-monkeyplus-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-monkeyplus-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png pytest's monkeypatch subclass with extra functionalities - :target: http://pytest-plugs.herokuapp.com/output/pytest-monkeyplus-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-monkeyplus-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/hsoft/pytest-monkeyplus/ - `pytest-mozwebqa-1.1.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-mozwebqa-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-mozwebqa-latest?py=py33&pytest=2.5.2 .. image:: github.png Mozilla WebQA plugin for py.test. - :target: http://pytest-plugs.herokuapp.com/output/pytest-mozwebqa-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-mozwebqa-latest?py=py33&pytest=2.5.2 :target: https://github.com/davehunt/pytest-mozwebqa - `pytest-oerp-0.2.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-oerp-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-oerp-latest?py=py33&pytest=2.5.2 .. image:: github.png pytest plugin to test OpenERP modules - :target: http://pytest-plugs.herokuapp.com/output/pytest-oerp-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-oerp-latest?py=py33&pytest=2.5.2 :target: http://github.com/santagada/pytest-oerp/ - `pytest-ordering-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-ordering-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-ordering-latest?py=py33&pytest=2.5.2 .. image:: github.png pytest plugin to run your tests in a specific order - :target: http://pytest-plugs.herokuapp.com/output/pytest-ordering-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-ordering-latest?py=py33&pytest=2.5.2 :target: https://github.com/ftobia/pytest-ordering - `pytest-osxnotify-0.1.4 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-osxnotify-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-osxnotify-latest?py=py33&pytest=2.5.2 .. image:: github.png OS X notifications for py.test results. - :target: http://pytest-plugs.herokuapp.com/output/pytest-osxnotify-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-osxnotify-latest?py=py33&pytest=2.5.2 :target: https://github.com/dbader/pytest-osxnotify - `pytest-paste-config-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-paste-config-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-paste-config-latest?py=py33&pytest=2.5.2 ? Allow setting the path to a paste config file - :target: http://pytest-plugs.herokuapp.com/output/pytest-paste-config-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-paste-config-latest?py=py33&pytest=2.5.2 - `pytest-pep8-1.0.5 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pep8-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pep8-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to check PEP8 requirements - :target: http://pytest-plugs.herokuapp.com/output/pytest-pep8-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-pep8-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-pep8/ - `pytest-poo-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-poo-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-poo-latest?py=py33&pytest=2.5.2 .. image:: github.png Visualize your crappy tests - :target: http://pytest-plugs.herokuapp.com/output/pytest-poo-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-poo-latest?py=py33&pytest=2.5.2 :target: http://github.com/pelme/pytest-poo - `pytest-pydev-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pydev-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pydev-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png py.test plugin to connect to a remote debug server with PyDev or PyCharm. - :target: http://pytest-plugs.herokuapp.com/output/pytest-pydev-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-pydev-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/basti/pytest-pydev/ - `pytest-pythonpath-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pythonpath-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pythonpath-latest?py=py33&pytest=2.5.2 .. image:: github.png pytest plugin for adding to the PYTHONPATH from command line or configs. - :target: http://pytest-plugs.herokuapp.com/output/pytest-pythonpath-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-pythonpath-latest?py=py33&pytest=2.5.2 :target: https://github.com/bigsassy/pytest-pythonpath - `pytest-qt-1.0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-qt-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-qt-latest?py=py33&pytest=2.5.2 .. image:: github.png pytest plugin that adds fixtures for testing Qt (PyQt and PySide) applications. - :target: http://pytest-plugs.herokuapp.com/output/pytest-qt-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-qt-latest?py=py33&pytest=2.5.2 :target: http://github.com/nicoddemus/pytest-qt - `pytest-quickcheck-0.8 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-quickcheck-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-quickcheck-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to generate random data inspired by QuickCheck - :target: http://pytest-plugs.herokuapp.com/output/pytest-quickcheck-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-quickcheck-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/t2y/pytest-quickcheck/ - `pytest-rage-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-rage-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-rage-latest?py=py33&pytest=2.5.2 .. image:: github.png pytest plugin to implement PEP712 - :target: http://pytest-plugs.herokuapp.com/output/pytest-rage-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-rage-latest?py=py33&pytest=2.5.2 :target: http://github.com/santagada/pytest-rage/ - `pytest-random-0.02 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-random-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-random-latest?py=py33&pytest=2.5.2 .. image:: github.png py.test plugin to randomize tests - :target: http://pytest-plugs.herokuapp.com/output/pytest-random-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-random-latest?py=py33&pytest=2.5.2 :target: https://github.com/klrmn/pytest-random - `pytest-rerunfailures-0.03 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-rerunfailures-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-rerunfailures-latest?py=py33&pytest=2.5.2 .. image:: github.png py.test plugin to re-run tests to eliminate flakey failures - :target: http://pytest-plugs.herokuapp.com/output/pytest-rerunfailures-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-rerunfailures-latest?py=py33&pytest=2.5.2 :target: https://github.com/klrmn/pytest-rerunfailures - `pytest-runfailed-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-runfailed-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-runfailed-latest?py=py33&pytest=2.5.2 .. image:: github.png implement a --failed option for pytest - :target: http://pytest-plugs.herokuapp.com/output/pytest-runfailed-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-runfailed-latest?py=py33&pytest=2.5.2 :target: http://github.com/dmerejkowsky/pytest-runfailed - `pytest-runner-2.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-runner-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-runner-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png UNKNOWN - :target: http://pytest-plugs.herokuapp.com/output/pytest-runner-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-runner-latest?py=py33&pytest=2.5.2 :target: https://bitbucket.org/jaraco/pytest-runner - `pytest-sugar-0.3.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-sugar-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-sugar-latest?py=py33&pytest=2.5.2 .. image:: github.png py.test is a plugin for py.test that changes the default look and feel of py.test (e.g. progressbar, show tests that fail instantly). - :target: http://pytest-plugs.herokuapp.com/output/pytest-sugar-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-sugar-latest?py=py33&pytest=2.5.2 :target: https://github.com/Frozenball/pytest-sugar - `pytest-timeout-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-timeout-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-timeout-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to abort tests after a timeout - :target: http://pytest-plugs.herokuapp.com/output/pytest-timeout-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-timeout-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/flub/pytest-timeout/ - `pytest-twisted-1.5 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-twisted-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-twisted-latest?py=py33&pytest=2.5.2 .. image:: github.png A twisted plugin for py.test. - :target: http://pytest-plugs.herokuapp.com/output/pytest-twisted-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-twisted-latest?py=py33&pytest=2.5.2 :target: https://github.com/schmir/pytest-twisted - `pytest-xdist-1.10 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-xdist-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-xdist-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png py.test xdist plugin for distributed testing and loop-on-failing modes - :target: http://pytest-plugs.herokuapp.com/output/pytest-xdist-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-xdist-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-xdist - `pytest-xprocess-0.8 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-xprocess-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-xprocess-latest?py=py33&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to manage external processes across test runs - :target: http://pytest-plugs.herokuapp.com/output/pytest-xprocess-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-xprocess-latest?py=py33&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-xprocess/ - `pytest-yamlwsgi-0.6 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-yamlwsgi-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-yamlwsgi-latest?py=py33&pytest=2.5.2 ? Run tests against wsgi apps defined in yaml - :target: http://pytest-plugs.herokuapp.com/output/pytest-yamlwsgi-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-yamlwsgi-latest?py=py33&pytest=2.5.2 - `pytest-zap-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-zap-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-zap-latest?py=py33&pytest=2.5.2 .. image:: github.png OWASP ZAP plugin for py.test. - :target: http://pytest-plugs.herokuapp.com/output/pytest-zap-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-zap-latest?py=py33&pytest=2.5.2 :target: https://github.com/davehunt/pytest-zap - -========================================================================================== ============================================================================================================ ============================================================================================================ ========================================================================= ============================================================================================================================================= - -*(Updated on 2014-04-02)* +.. _plugins_index: + +List of Third-Party Plugins +=========================== + +The table below contains a listing of plugins found in PyPI and +their status when tested using py.test **2.5.2** and python 2.7 and +3.3. + +A complete listing can also be found at +`pytest-plugs `_, which contains tests +status against other py.test releases. + + +========================================================================================== ============================================================================================================ ============================================================================================================ ========================================================================= ============================================================================================================================================= + Name Py27 Py34 Repo Summary +========================================================================================== ============================================================================================================ ============================================================================================================ ========================================================================= ============================================================================================================================================= + `pytest-allure-adaptor-1.3.8 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-allure-adaptor-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-allure-adaptor-latest?py=py34&pytest=2.5.2 .. image:: github.png Plugin for py.test to generate allure xml reports + :target: http://pytest-plugs.herokuapp.com/output/pytest-allure-adaptor-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-allure-adaptor-latest?py=py34&pytest=2.5.2 :target: https://github.com/allure-framework/allure-python + `pytest-bdd-2.1.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bdd-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bdd-latest?py=py34&pytest=2.5.2 .. image:: github.png BDD for pytest + :target: http://pytest-plugs.herokuapp.com/output/pytest-bdd-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-bdd-latest?py=py34&pytest=2.5.2 :target: https://github.com/olegpidsadnyi/pytest-bdd + `pytest-beds-0.0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-beds-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-beds-latest?py=py34&pytest=2.5.2 .. image:: github.png Fixtures for testing Google Appengine (GAE) apps + :target: http://pytest-plugs.herokuapp.com/output/pytest-beds-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-beds-latest?py=py34&pytest=2.5.2 :target: https://github.com/kaste/pytest-beds + `pytest-bench-0.2.5 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bench-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bench-latest?py=py34&pytest=2.5.2 .. image:: github.png Benchmark utility that plugs into pytest. + :target: http://pytest-plugs.herokuapp.com/output/pytest-bench-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-bench-latest?py=py34&pytest=2.5.2 :target: http://github.com/concordusapps/pytest-bench + `pytest-blockage-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-blockage-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-blockage-latest?py=py34&pytest=2.5.2 .. image:: github.png Disable network requests during a test run. + :target: http://pytest-plugs.herokuapp.com/output/pytest-blockage-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-blockage-latest?py=py34&pytest=2.5.2 :target: https://github.com/rob-b/pytest-blockage + `pytest-browsermob-proxy-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-browsermob-proxy-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-browsermob-proxy-latest?py=py34&pytest=2.5.2 .. image:: github.png BrowserMob proxy plugin for py.test. + :target: http://pytest-plugs.herokuapp.com/output/pytest-browsermob-proxy-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-browsermob-proxy-latest?py=py34&pytest=2.5.2 :target: https://github.com/davehunt/pytest-browsermob-proxy + `pytest-bugzilla-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bugzilla-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-bugzilla-latest?py=py34&pytest=2.5.2 .. image:: github.png py.test bugzilla integration plugin + :target: http://pytest-plugs.herokuapp.com/output/pytest-bugzilla-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-bugzilla-latest?py=py34&pytest=2.5.2 :target: http://github.com/nibrahim/pytest_bugzilla + `pytest-cache-1.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-cache-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-cache-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png pytest plugin with mechanisms for caching across test runs + :target: http://pytest-plugs.herokuapp.com/output/pytest-cache-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-cache-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-cache/ + `pytest-capturelog-0.7 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-capturelog-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-capturelog-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png py.test plugin to capture log messages + :target: http://pytest-plugs.herokuapp.com/output/pytest-capturelog-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-capturelog-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/memedough/pytest-capturelog/overview + `pytest-codecheckers-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-codecheckers-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-codecheckers-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to add source code sanity checks (pep8 and friends) + :target: http://pytest-plugs.herokuapp.com/output/pytest-codecheckers-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-codecheckers-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/RonnyPfannschmidt/pytest-codecheckers/ + `pytest-contextfixture-0.1.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-contextfixture-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-contextfixture-latest?py=py34&pytest=2.5.2 .. image:: github.png Define pytest fixtures as context managers. + :target: http://pytest-plugs.herokuapp.com/output/pytest-contextfixture-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-contextfixture-latest?py=py34&pytest=2.5.2 :target: http://github.com/pelme/pytest-contextfixture/ + `pytest-couchdbkit-0.5.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-couchdbkit-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-couchdbkit-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png py.test extension for per-test couchdb databases using couchdbkit + :target: http://pytest-plugs.herokuapp.com/output/pytest-couchdbkit-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-couchdbkit-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/RonnyPfannschmidt/pytest-couchdbkit + `pytest-cov-1.6 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-cov-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-cov-latest?py=py34&pytest=2.5.2 .. image:: github.png py.test plugin for coverage reporting with support for both centralised and distributed testing, including subprocesses and multiprocessing + :target: http://pytest-plugs.herokuapp.com/output/pytest-cov-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-cov-latest?py=py34&pytest=2.5.2 :target: https://github.com/schlamar/pytest-cov + `pytest-dbfixtures-0.4.18 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-dbfixtures-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-dbfixtures-latest?py=py34&pytest=2.5.2 .. image:: github.png Databases fixtures plugin for py.test. + :target: http://pytest-plugs.herokuapp.com/output/pytest-dbfixtures-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-dbfixtures-latest?py=py34&pytest=2.5.2 :target: https://github.com/ClearcodeHQ/pytest-dbfixtures + `pytest-dbus-notification-1.0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-dbus-notification-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-dbus-notification-latest?py=py34&pytest=2.5.2 .. image:: github.png D-BUS notifications for pytest results. + :target: http://pytest-plugs.herokuapp.com/output/pytest-dbus-notification-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-dbus-notification-latest?py=py34&pytest=2.5.2 :target: https://github.com/bmathieu33/pytest-dbus-notification + `pytest-diffeo-0.1.7 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-diffeo-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-diffeo-latest?py=py34&pytest=2.5.2 .. image:: github.png Common py.test support for Diffeo packages + :target: http://pytest-plugs.herokuapp.com/output/pytest-diffeo-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-diffeo-latest?py=py34&pytest=2.5.2 :target: https://github.com/diffeo/pytest-diffeo + `pytest-django-2.6.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-latest?py=py34&pytest=2.5.2 `link `_ A Django plugin for py.test. + :target: http://pytest-plugs.herokuapp.com/output/pytest-django-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-django-latest?py=py34&pytest=2.5.2 + `pytest-django-haystack-0.1.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-haystack-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-haystack-latest?py=py34&pytest=2.5.2 .. image:: github.png Cleanup your Haystack indexes between tests + :target: http://pytest-plugs.herokuapp.com/output/pytest-django-haystack-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-django-haystack-latest?py=py34&pytest=2.5.2 :target: http://github.com/rouge8/pytest-django-haystack + `pytest-django-lite-0.1.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-lite-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-django-lite-latest?py=py34&pytest=2.5.2 .. image:: github.png The bare minimum to integrate py.test with Django. + :target: http://pytest-plugs.herokuapp.com/output/pytest-django-lite-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-django-lite-latest?py=py34&pytest=2.5.2 :target: https://github.com/dcramer/pytest-django-lite + `pytest-eradicate-0.0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-eradicate-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-eradicate-latest?py=py34&pytest=2.5.2 .. image:: github.png pytest plugin to check for commented out code + :target: http://pytest-plugs.herokuapp.com/output/pytest-eradicate-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-eradicate-latest?py=py34&pytest=2.5.2 :target: https://github.com/spil-johan/pytest-eradicate + `pytest-figleaf-1.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-figleaf-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-figleaf-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png py.test figleaf coverage plugin + :target: http://pytest-plugs.herokuapp.com/output/pytest-figleaf-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-figleaf-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-figleaf + `pytest-flakes-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-flakes-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-flakes-latest?py=py34&pytest=2.5.2 .. image:: github.png pytest plugin to check source code with pyflakes + :target: http://pytest-plugs.herokuapp.com/output/pytest-flakes-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-flakes-latest?py=py34&pytest=2.5.2 :target: https://github.com/fschulze/pytest-flakes + `pytest-greendots-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-greendots-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-greendots-latest?py=py34&pytest=2.5.2 ? Green progress dots + :target: http://pytest-plugs.herokuapp.com/output/pytest-greendots-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-greendots-latest?py=py34&pytest=2.5.2 + `pytest-growl-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-growl-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-growl-latest?py=py34&pytest=2.5.2 ? Growl notifications for pytest results. + :target: http://pytest-plugs.herokuapp.com/output/pytest-growl-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-growl-latest?py=py34&pytest=2.5.2 + `pytest-httpretty-0.2.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-httpretty-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-httpretty-latest?py=py34&pytest=2.5.2 .. image:: github.png A thin wrapper of HTTPretty for pytest + :target: http://pytest-plugs.herokuapp.com/output/pytest-httpretty-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-httpretty-latest?py=py34&pytest=2.5.2 :target: http://github.com/papaeye/pytest-httpretty + `pytest-incremental-0.3.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-incremental-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-incremental-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png an incremental test runner (pytest plugin) + :target: http://pytest-plugs.herokuapp.com/output/pytest-incremental-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-incremental-latest?py=py34&pytest=2.5.2 :target: https://bitbucket.org/schettino72/pytest-incremental + `pytest-instafail-0.2.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-instafail-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-instafail-latest?py=py34&pytest=2.5.2 .. image:: github.png py.test plugin to show failures instantly + :target: http://pytest-plugs.herokuapp.com/output/pytest-instafail-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-instafail-latest?py=py34&pytest=2.5.2 :target: https://github.com/jpvanhal/pytest-instafail + `pytest-ipdb-0.1-prerelease `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-ipdb-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-ipdb-latest?py=py34&pytest=2.5.2 .. image:: github.png A py.test plug-in to enable drop to ipdb debugger on test failure. + :target: http://pytest-plugs.herokuapp.com/output/pytest-ipdb-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-ipdb-latest?py=py34&pytest=2.5.2 :target: https://github.com/mverteuil/pytest-ipdb + `pytest-jira-0.01 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-jira-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-jira-latest?py=py34&pytest=2.5.2 .. image:: github.png py.test JIRA integration plugin, using markers + :target: http://pytest-plugs.herokuapp.com/output/pytest-jira-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-jira-latest?py=py34&pytest=2.5.2 :target: http://github.com/jlaska/pytest_jira + `pytest-knows-0.1.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-knows-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-knows-latest?py=py34&pytest=2.5.2 .. image:: github.png A pytest plugin that can automaticly skip test case based on dependence info calculated by trace + :target: http://pytest-plugs.herokuapp.com/output/pytest-knows-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-knows-latest?py=py34&pytest=2.5.2 :target: https://github.com/mapix/ptknows + `pytest-konira-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-konira-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-konira-latest?py=py34&pytest=2.5.2 .. image:: github.png Run Konira DSL tests with py.test + :target: http://pytest-plugs.herokuapp.com/output/pytest-konira-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-konira-latest?py=py34&pytest=2.5.2 :target: http://github.com/alfredodeza/pytest-konira + `pytest-localserver-0.3.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-localserver-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-localserver-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png py.test plugin to test server connections locally. + :target: http://pytest-plugs.herokuapp.com/output/pytest-localserver-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-localserver-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/basti/pytest-localserver/ + `pytest-marker-bugzilla-0.06 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-marker-bugzilla-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-marker-bugzilla-latest?py=py34&pytest=2.5.2 .. image:: github.png py.test bugzilla integration plugin, using markers + :target: http://pytest-plugs.herokuapp.com/output/pytest-marker-bugzilla-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-marker-bugzilla-latest?py=py34&pytest=2.5.2 :target: http://github.com/eanxgeek/pytest_marker_bugzilla + `pytest-markfiltration-0.8 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-markfiltration-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-markfiltration-latest?py=py34&pytest=2.5.2 .. image:: github.png UNKNOWN + :target: http://pytest-plugs.herokuapp.com/output/pytest-markfiltration-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-markfiltration-latest?py=py34&pytest=2.5.2 :target: https://github.com/adamgoucher/pytest-markfiltration + `pytest-marks-0.4 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-marks-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-marks-latest?py=py34&pytest=2.5.2 .. image:: github.png UNKNOWN + :target: http://pytest-plugs.herokuapp.com/output/pytest-marks-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-marks-latest?py=py34&pytest=2.5.2 :target: https://github.com/adamgoucher/pytest-marks + `pytest-monkeyplus-1.1.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-monkeyplus-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-monkeyplus-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png pytest's monkeypatch subclass with extra functionalities + :target: http://pytest-plugs.herokuapp.com/output/pytest-monkeyplus-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-monkeyplus-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/hsoft/pytest-monkeyplus/ + `pytest-mozwebqa-1.1.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-mozwebqa-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-mozwebqa-latest?py=py34&pytest=2.5.2 .. image:: github.png Mozilla WebQA plugin for py.test. + :target: http://pytest-plugs.herokuapp.com/output/pytest-mozwebqa-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-mozwebqa-latest?py=py34&pytest=2.5.2 :target: https://github.com/davehunt/pytest-mozwebqa + `pytest-oerp-0.2.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-oerp-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-oerp-latest?py=py34&pytest=2.5.2 .. image:: github.png pytest plugin to test OpenERP modules + :target: http://pytest-plugs.herokuapp.com/output/pytest-oerp-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-oerp-latest?py=py34&pytest=2.5.2 :target: http://github.com/santagada/pytest-oerp/ + `pytest-ordering-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-ordering-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-ordering-latest?py=py34&pytest=2.5.2 .. image:: github.png pytest plugin to run your tests in a specific order + :target: http://pytest-plugs.herokuapp.com/output/pytest-ordering-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-ordering-latest?py=py34&pytest=2.5.2 :target: https://github.com/ftobia/pytest-ordering + `pytest-osxnotify-0.1.4 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-osxnotify-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-osxnotify-latest?py=py34&pytest=2.5.2 .. image:: github.png OS X notifications for py.test results. + :target: http://pytest-plugs.herokuapp.com/output/pytest-osxnotify-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-osxnotify-latest?py=py34&pytest=2.5.2 :target: https://github.com/dbader/pytest-osxnotify + `pytest-paste-config-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-paste-config-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-paste-config-latest?py=py34&pytest=2.5.2 ? Allow setting the path to a paste config file + :target: http://pytest-plugs.herokuapp.com/output/pytest-paste-config-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-paste-config-latest?py=py34&pytest=2.5.2 + `pytest-pep8-1.0.6 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pep8-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pep8-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to check PEP8 requirements + :target: http://pytest-plugs.herokuapp.com/output/pytest-pep8-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-pep8-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-pep8/ + `pytest-poo-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-poo-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-poo-latest?py=py34&pytest=2.5.2 .. image:: github.png Visualize your crappy tests + :target: http://pytest-plugs.herokuapp.com/output/pytest-poo-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-poo-latest?py=py34&pytest=2.5.2 :target: http://github.com/pelme/pytest-poo + `pytest-pydev-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pydev-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pydev-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png py.test plugin to connect to a remote debug server with PyDev or PyCharm. + :target: http://pytest-plugs.herokuapp.com/output/pytest-pydev-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-pydev-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/basti/pytest-pydev/ + `pytest-pythonpath-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pythonpath-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-pythonpath-latest?py=py34&pytest=2.5.2 .. image:: github.png pytest plugin for adding to the PYTHONPATH from command line or configs. + :target: http://pytest-plugs.herokuapp.com/output/pytest-pythonpath-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-pythonpath-latest?py=py34&pytest=2.5.2 :target: https://github.com/bigsassy/pytest-pythonpath + `pytest-qt-1.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-qt-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-qt-latest?py=py34&pytest=2.5.2 .. image:: github.png pytest plugin that adds fixtures for testing Qt (PyQt and PySide) applications. + :target: http://pytest-plugs.herokuapp.com/output/pytest-qt-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-qt-latest?py=py34&pytest=2.5.2 :target: http://github.com/nicoddemus/pytest-qt + `pytest-quickcheck-0.8 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-quickcheck-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-quickcheck-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to generate random data inspired by QuickCheck + :target: http://pytest-plugs.herokuapp.com/output/pytest-quickcheck-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-quickcheck-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/t2y/pytest-quickcheck/ + `pytest-rage-0.1 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-rage-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-rage-latest?py=py34&pytest=2.5.2 .. image:: github.png pytest plugin to implement PEP712 + :target: http://pytest-plugs.herokuapp.com/output/pytest-rage-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-rage-latest?py=py34&pytest=2.5.2 :target: http://github.com/santagada/pytest-rage/ + `pytest-raisesregexp-1.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-raisesregexp-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-raisesregexp-latest?py=py34&pytest=2.5.2 .. image:: github.png Simple pytest plugin to look for regex in Exceptions + :target: http://pytest-plugs.herokuapp.com/output/pytest-raisesregexp-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-raisesregexp-latest?py=py34&pytest=2.5.2 :target: https://github.com/Walkman/pytest_raisesregexp + `pytest-random-0.02 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-random-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-random-latest?py=py34&pytest=2.5.2 .. image:: github.png py.test plugin to randomize tests + :target: http://pytest-plugs.herokuapp.com/output/pytest-random-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-random-latest?py=py34&pytest=2.5.2 :target: https://github.com/klrmn/pytest-random + `pytest-rerunfailures-0.05 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-rerunfailures-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-rerunfailures-latest?py=py34&pytest=2.5.2 .. image:: github.png py.test plugin to re-run tests to eliminate flakey failures + :target: http://pytest-plugs.herokuapp.com/output/pytest-rerunfailures-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-rerunfailures-latest?py=py34&pytest=2.5.2 :target: https://github.com/klrmn/pytest-rerunfailures + `pytest-runfailed-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-runfailed-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-runfailed-latest?py=py34&pytest=2.5.2 .. image:: github.png implement a --failed option for pytest + :target: http://pytest-plugs.herokuapp.com/output/pytest-runfailed-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-runfailed-latest?py=py34&pytest=2.5.2 :target: http://github.com/dmerejkowsky/pytest-runfailed + `pytest-runner-2.0 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-runner-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-runner-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png UNKNOWN + :target: http://pytest-plugs.herokuapp.com/output/pytest-runner-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-runner-latest?py=py34&pytest=2.5.2 :target: https://bitbucket.org/jaraco/pytest-runner + `pytest-splinter-1.0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-splinter-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-splinter-latest?py=py34&pytest=2.5.2 .. image:: github.png Splinter subplugin for Pytest BDD plugin + :target: http://pytest-plugs.herokuapp.com/output/pytest-splinter-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-splinter-latest?py=py34&pytest=2.5.2 :target: https://github.com/paylogic/pytest-splinter + `pytest-sugar-0.3.4 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-sugar-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-sugar-latest?py=py34&pytest=2.5.2 .. image:: github.png py.test is a plugin for py.test that changes the default look and feel of py.test (e.g. progressbar, show tests that fail instantly). + :target: http://pytest-plugs.herokuapp.com/output/pytest-sugar-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-sugar-latest?py=py34&pytest=2.5.2 :target: https://github.com/Frozenball/pytest-sugar + `pytest-timeout-0.3 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-timeout-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-timeout-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to abort tests after a timeout + :target: http://pytest-plugs.herokuapp.com/output/pytest-timeout-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-timeout-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/flub/pytest-timeout/ + `pytest-twisted-1.5 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-twisted-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-twisted-latest?py=py34&pytest=2.5.2 .. image:: github.png A twisted plugin for py.test. + :target: http://pytest-plugs.herokuapp.com/output/pytest-twisted-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-twisted-latest?py=py34&pytest=2.5.2 :target: https://github.com/schmir/pytest-twisted + `pytest-xdist-1.10 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-xdist-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-xdist-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png py.test xdist plugin for distributed testing and loop-on-failing modes + :target: http://pytest-plugs.herokuapp.com/output/pytest-xdist-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-xdist-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-xdist + `pytest-xprocess-0.8 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-xprocess-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-xprocess-latest?py=py34&pytest=2.5.2 .. image:: bitbucket.png pytest plugin to manage external processes across test runs + :target: http://pytest-plugs.herokuapp.com/output/pytest-xprocess-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-xprocess-latest?py=py34&pytest=2.5.2 :target: http://bitbucket.org/hpk42/pytest-xprocess/ + `pytest-yamlwsgi-0.6 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-yamlwsgi-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-yamlwsgi-latest?py=py34&pytest=2.5.2 ? Run tests against wsgi apps defined in yaml + :target: http://pytest-plugs.herokuapp.com/output/pytest-yamlwsgi-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-yamlwsgi-latest?py=py34&pytest=2.5.2 + `pytest-zap-0.2 `_ .. image:: http://pytest-plugs.herokuapp.com/status/pytest-zap-latest?py=py27&pytest=2.5.2 .. image:: http://pytest-plugs.herokuapp.com/status/pytest-zap-latest?py=py34&pytest=2.5.2 .. image:: github.png OWASP ZAP plugin for py.test. + :target: http://pytest-plugs.herokuapp.com/output/pytest-zap-latest?py=py27&pytest=2.5.2 :target: http://pytest-plugs.herokuapp.com/output/pytest-zap-latest?py=py34&pytest=2.5.2 :target: https://github.com/davehunt/pytest-zap + +========================================================================================== ============================================================================================================ ============================================================================================================ ========================================================================= ============================================================================================================================================= + +*(Updated on 2014-05-28)* diff -r 95655acb1f906fbe0a737c2676094aad77bbab1d -r eac38fd28362f3f5d81ce2e39bf2f56189153782 doc/en/plugins_index/plugins_index.py --- a/doc/en/plugins_index/plugins_index.py +++ b/doc/en/plugins_index/plugins_index.py @@ -100,7 +100,7 @@ rows = [] ColumnData = namedtuple('ColumnData', 'text link') - headers = ['Name', 'Py27', 'Py33', 'Repo', 'Summary'] + headers = ['Name', 'Py27', 'Py34', 'Repo', 'Summary'] pytest_version = pytest.__version__ repositories = obtain_override_repositories() print('*** pytest-{0} ***'.format(pytest_version)) @@ -126,7 +126,7 @@ ColumnData(package_name + "-" + version, release_data['package_url']), ColumnData(image_url.format(py='py27', pytest=pytest_version), None), - ColumnData(image_url.format(py='py33', pytest=pytest_version), + ColumnData(image_url.format(py='py34', pytest=pytest_version), None), ColumnData( repo_markup_1, @@ -145,7 +145,7 @@ ColumnData('', None), ColumnData(output_url.format(py='py27', pytest=pytest_version), None), - ColumnData(output_url.format(py='py33', pytest=pytest_version), + ColumnData(output_url.format(py='py34', pytest=pytest_version), None), ColumnData(repo_markup_2, None), ColumnData('', None), Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email.