From 67de2c53acdb336ffce02434f8ac736999184f1a Mon Sep 17 00:00:00 2001 From: holger krekel Date: Wed, 17 Oct 2012 13:42:40 +0200 Subject: [PATCH] fix issue198 - detection of fixtures from conftest.py files in deeper nested dir structures with certain invocations --- CHANGELOG | 2 ++ _pytest/__init__.py | 2 +- _pytest/python.py | 3 +++ setup.py | 2 +- testing/test_python.py | 16 ++++++++++++++++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2dbd91a63..ecdc3004d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,8 @@ Changes between 2.2.4 and 2.3.0.dev ----------------------------------- +- fix issue198 - conftest fixtures were not found on windows32 in some + circumstances with nested directory structures due to path manipulation issues - fix issue193 skip test functions with were parametrized with empty parameter sets - fix python3.3 compat, mostly reporting bits that previously depended diff --git a/_pytest/__init__.py b/_pytest/__init__.py index db2f0b9cb..8119b2945 100644 --- a/_pytest/__init__.py +++ b/_pytest/__init__.py @@ -1,2 +1,2 @@ # -__version__ = '2.3.0.dev26' +__version__ = '2.3.0.dev27' diff --git a/_pytest/python.py b/_pytest/python.py index f9d2be63b..8f50da133 100644 --- a/_pytest/python.py +++ b/_pytest/python.py @@ -731,6 +731,7 @@ def _showfixtures_main(config, session): else: part = session._initialparts[0] nodeid = "::".join(map(str, [curdir.bestrelpath(part[0])] + part[1:])) + nodeid.replace(session.fspath.sep, "/") tw = py.io.TerminalWriter() verbose = config.getvalue("verbose") @@ -1417,6 +1418,8 @@ class FixtureManager: else: if p.basename.startswith("conftest.py"): nodeid = p.dirpath().relto(self.session.fspath) + if p.sep != "/": + nodeid.replace(p.sep, "/") self.parsefactories(plugin, nodeid) self._seenplugins.add(plugin) diff --git a/setup.py b/setup.py index 725609580..23e538388 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ def main(): name='pytest', description='py.test: simple powerful testing with Python', long_description = long_description, - version='2.3.0.dev26', + version='2.3.0.dev27', url='http://pytest.org', license='MIT license', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], diff --git a/testing/test_python.py b/testing/test_python.py index 9dc7d9f1c..689baa3c5 100644 --- a/testing/test_python.py +++ b/testing/test_python.py @@ -2974,3 +2974,19 @@ def test_funcargnames_compatattr(testdir): """) reprec = testdir.inline_run() reprec.assertoutcome(passed=1) + +def test_fixtures_sub_subdir_normalize_sep(testdir): + # this makes sure that normlization of nodeids takes place + b = testdir.mkdir("tests").mkdir("unit") + b.join("conftest.py").write(py.code.Source(""" + def pytest_funcarg__arg1(): + pass + """)) + p = b.join("test_module.py") + p.write("def test_func(arg1): pass") + result = testdir.runpytest(p, "--fixtures") + assert result.ret == 0 + result.stdout.fnmatch_lines(""" + *fixtures defined*conftest* + *arg1* + """)