3 new commits in pytest: https://bitbucket.org/hpk42/pytest/commits/88cff89ea222/ Changeset: 88cff89ea222 User: hpk42 Date: 2013-06-23 09:24:48 Summary: mention added support for setUpModule/tearDownModule detection, thanks Brian Okken. Affected #: 4 files
diff -r 0df9999d1bd00ba3f109dcc76398b861744b15b1 -r 88cff89ea2229b62d36be11934e453173a57b26c AUTHORS --- a/AUTHORS +++ b/AUTHORS @@ -30,3 +30,4 @@ Daniel Nuri Graham Horler Andreas Zeidler +Brian Okken diff -r 0df9999d1bd00ba3f109dcc76398b861744b15b1 -r 88cff89ea2229b62d36be11934e453173a57b26c CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,8 @@ Changes between 2.3.5 and 2.4.DEV ----------------------------------- +- add support for setUpModule/tearDownModule detection, thanks Brian Okken. + - make sessionfinish hooks execute with the same cwd-context as at session start (helps fix plugin behaviour which write output files with relative path such as pytest-cov) diff -r 0df9999d1bd00ba3f109dcc76398b861744b15b1 -r 88cff89ea2229b62d36be11934e453173a57b26c _pytest/__init__.py --- a/_pytest/__init__.py +++ b/_pytest/__init__.py @@ -1,2 +1,2 @@ # -__version__ = '2.4.0.dev3' +__version__ = '2.4.0.dev4' diff -r 0df9999d1bd00ba3f109dcc76398b861744b15b1 -r 88cff89ea2229b62d36be11934e453173a57b26c setup.py --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ name='pytest', description='py.test: simple powerful testing with Python', long_description = long_description, - version='2.4.0.dev3', + version='2.4.0.dev4', url='http://pytest.org', license='MIT license', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], https://bitbucket.org/hpk42/pytest/commits/e4e280bd27d5/ Changeset: e4e280bd27d5 User: hpk42 Date: 2013-06-28 12:54:10 Summary: some internal renaming to make more sense of the sorting algo, no semantical changes. Affected #: 1 file diff -r 88cff89ea2229b62d36be11934e453173a57b26c -r e4e280bd27d5e72469d3965a0fb0be28a769f9c2 _pytest/python.py --- a/_pytest/python.py +++ b/_pytest/python.py @@ -1747,29 +1747,31 @@ def parametrize_sorted(items, ignore, cache, scopenum): if scopenum >= 3: return items - newitems = [] - olditems = [] + similar_items = [] + other_items = [] slicing_argparam = None for item in items: argparamlist = getfuncargparams(item, ignore, scopenum, cache) if slicing_argparam is None and argparamlist: slicing_argparam = argparamlist[0] - slicing_index = len(olditems) + slicing_index = len(other_items) if slicing_argparam in argparamlist: - newitems.append(item) + similar_items.append(item) else: - olditems.append(item) - if newitems: + other_items.append(item) + if similar_items: newignore = ignore.copy() newignore.add(slicing_argparam) - newitems = parametrize_sorted(newitems + olditems[slicing_index:], - newignore, cache, scopenum) - old1 = parametrize_sorted(olditems[:slicing_index], newignore, - cache, scopenum+1) - return old1 + newitems + part2 = parametrize_sorted( + similar_items + other_items[slicing_index:], + newignore, cache, scopenum) + part1 = parametrize_sorted( + other_items[:slicing_index], newignore, + cache, scopenum+1) + return part1 + part2 else: - olditems = parametrize_sorted(olditems, ignore, cache, scopenum+1) - return olditems + newitems + other_items = parametrize_sorted(other_items, ignore, cache, scopenum+1) + return other_items + similar_items def getfuncargparams(item, ignore, scopenum, cache): """ return list of (arg,param) tuple, sorted by broader scope first. """ https://bitbucket.org/hpk42/pytest/commits/4cddadcc82d0/ Changeset: 4cddadcc82d0 User: hpk42 Date: 2013-06-28 12:57:10 Summary: fix issue323 - parametrize() of many module-scoped params Affected #: 6 files diff -r e4e280bd27d5e72469d3965a0fb0be28a769f9c2 -r 4cddadcc82d062982cd37f42f669a332f8ba372f CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,8 @@ Changes between 2.3.5 and 2.4.DEV ----------------------------------- +- fix issue323 - sorting of many module-scoped arg parametrizations + - add support for setUpModule/tearDownModule detection, thanks Brian Okken. - make sessionfinish hooks execute with the same cwd-context as at diff -r e4e280bd27d5e72469d3965a0fb0be28a769f9c2 -r 4cddadcc82d062982cd37f42f669a332f8ba372f _pytest/__init__.py --- a/_pytest/__init__.py +++ b/_pytest/__init__.py @@ -1,2 +1,2 @@ # -__version__ = '2.4.0.dev4' +__version__ = '2.4.0.dev5' diff -r e4e280bd27d5e72469d3965a0fb0be28a769f9c2 -r 4cddadcc82d062982cd37f42f669a332f8ba372f _pytest/python.py --- a/_pytest/python.py +++ b/_pytest/python.py @@ -1747,9 +1747,16 @@ def parametrize_sorted(items, ignore, cache, scopenum): if scopenum >= 3: return items + + # we pick the first item which has a arg/param combo in the + # requested scope and sort other items with the same combo + # into "newitems" which then is a list of all items using this + # arg/param. + similar_items = [] other_items = [] slicing_argparam = None + slicing_index = 0 for item in items: argparamlist = getfuncargparams(item, ignore, scopenum, cache) if slicing_argparam is None and argparamlist: @@ -1759,7 +1766,8 @@ similar_items.append(item) else: other_items.append(item) - if similar_items: + + if (len(similar_items) + slicing_index) > 1: newignore = ignore.copy() newignore.add(slicing_argparam) part2 = parametrize_sorted( diff -r e4e280bd27d5e72469d3965a0fb0be28a769f9c2 -r 4cddadcc82d062982cd37f42f669a332f8ba372f setup.py --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ name='pytest', description='py.test: simple powerful testing with Python', long_description = long_description, - version='2.4.0.dev4', + version='2.4.0.dev5', url='http://pytest.org', license='MIT license', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], diff -r e4e280bd27d5e72469d3965a0fb0be28a769f9c2 -r 4cddadcc82d062982cd37f42f669a332f8ba372f testing/python/metafunc.py --- a/testing/python/metafunc.py +++ b/testing/python/metafunc.py @@ -555,6 +555,20 @@ reprec = testdir.inline_run() reprec.assertoutcome(passed=5) + def test_parametrize_issue323(self, testdir): + testdir.makepyfile(""" + import pytest + + @pytest.fixture(scope='module', params=range(966)) + def foo(request): + return request.param + + def test_it(foo): + pass + """) + reprec = testdir.inline_run("--collectonly") + assert not reprec.getcalls("pytest_internalerror") + def test_usefixtures_seen_in_generate_tests(self, testdir): testdir.makepyfile(""" import pytest diff -r e4e280bd27d5e72469d3965a0fb0be28a769f9c2 -r 4cddadcc82d062982cd37f42f669a332f8ba372f tox.ini --- a/tox.ini +++ b/tox.ini @@ -98,4 +98,4 @@ python_classes=Test Acceptance python_functions=test pep8ignore = E401 E225 E261 E128 E124 E302 -norecursedirs = .tox ja +norecursedirs = .tox ja .hg 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. _______________________________________________ pytest-commit mailing list pytest-commit@python.org http://mail.python.org/mailman/listinfo/pytest-commit