fix autouse invocation (off-by-one error), relates to issue in moinmoin test suite

This commit is contained in:
holger krekel 2012-11-19 22:17:55 +01:00
parent f3e03fc298
commit d66ff7e63e
5 changed files with 24 additions and 3 deletions

View File

@ -5,6 +5,8 @@ Changes between 2.3.3 and 2.3.4.dev
with autouse fixtures. If you need generative tests, use with autouse fixtures. If you need generative tests, use
@pytest.mark.parametrize or pytest_generate_tests, see the @pytest.mark.parametrize or pytest_generate_tests, see the
many examples at http://pytest.org/latest/example/parametrize.html many examples at http://pytest.org/latest/example/parametrize.html
- fix autouse-issue where autouse-fixtures would not be discovered
if defined in a a/conftest.py file and tests in a/tests/test_some.py
- fix issue226 - LIFO ordering for fixture teardowns - fix issue226 - LIFO ordering for fixture teardowns
- fix issue224 - invocations with >256 char arguments now work - fix issue224 - invocations with >256 char arguments now work
- fix issue91 - add/discuss package/directory level setups in example - fix issue91 - add/discuss package/directory level setups in example

View File

@ -1,2 +1,2 @@
# #
__version__ = '2.3.4.dev5' __version__ = '2.3.4.dev6'

View File

@ -1455,7 +1455,7 @@ class FixtureManager:
for baseid, basenames in self._nodeid_and_autousenames: for baseid, basenames in self._nodeid_and_autousenames:
if nodeid.startswith(baseid): if nodeid.startswith(baseid):
if baseid: if baseid:
i = len(baseid) + 1 i = len(baseid)
nextchar = nodeid[i:i+1] nextchar = nodeid[i:i+1]
if nextchar and nextchar not in ":/": if nextchar and nextchar not in ":/":
continue continue

View File

@ -48,7 +48,7 @@ def main():
name='pytest', name='pytest',
description='py.test: simple powerful testing with Python', description='py.test: simple powerful testing with Python',
long_description = long_description, long_description = long_description,
version='2.3.4.dev5', version='2.3.4.dev6',
url='http://pytest.org', url='http://pytest.org',
license='MIT license', license='MIT license',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],

View File

@ -948,7 +948,26 @@ class TestAutouseDiscovery:
reprec = testdir.inline_run() reprec = testdir.inline_run()
reprec.assertoutcome(passed=3) reprec.assertoutcome(passed=3)
class TestAutouseManagement: class TestAutouseManagement:
def test_autouse_conftest_mid_directory(self, testdir):
pkgdir = testdir.mkpydir("xyz123")
pkgdir.join("conftest.py").write(py.code.Source("""
import pytest
@pytest.fixture(autouse=True)
def app():
import sys
sys._myapp = "hello"
"""))
t = pkgdir.ensure("tests", "test_app.py")
t.write(py.code.Source("""
import sys
def test_app():
assert sys._myapp == "hello"
"""))
reprec = testdir.inline_run("-s")
reprec.assertoutcome(passed=1)
def test_funcarg_and_setup(self, testdir): def test_funcarg_and_setup(self, testdir):
testdir.makepyfile(""" testdir.makepyfile("""
import pytest import pytest