[py-svn] commit/pytest: hpk42: fix issue151 - heuristcally lookup conftest files on all command line arguments, not just the first existing dir/file

Bitbucket commits-noreply at bitbucket.org
Tue Jun 26 21:56:19 CEST 2012


1 new commit in pytest:


https://bitbucket.org/hpk42/pytest/changeset/6d5db6fbe405/
changeset:   6d5db6fbe405
user:        hpk42
date:        2012-06-26 21:56:03
summary:     fix issue151 - heuristcally lookup conftest files on all command line arguments, not just the first existing dir/file

you can install the corresponding pytest-2.3.dev2 via
pip install -i http:/pypi.testrun.org -U pytest
affected #:  4 files

diff -r b6692c800dd434d1b6abca3e4b4bb261b59911eb -r 6d5db6fbe405aacc5b828ec1f461f7699fa25664 _pytest/__init__.py
--- a/_pytest/__init__.py
+++ b/_pytest/__init__.py
@@ -1,2 +1,2 @@
 #
-__version__ = '2.3.0.dev1'
+__version__ = '2.3.0.dev2'


diff -r b6692c800dd434d1b6abca3e4b4bb261b59911eb -r 6d5db6fbe405aacc5b828ec1f461f7699fa25664 _pytest/config.py
--- a/_pytest/config.py
+++ b/_pytest/config.py
@@ -151,20 +151,24 @@
                     p = current.join(opt1[len(opt)+1:], abs=1)
                 self._confcutdir = p
                 break
-        for arg in args + [current]:
+        foundanchor = False
+        for arg in args:
             if hasattr(arg, 'startswith') and arg.startswith("--"):
                 continue
             anchor = current.join(arg, abs=1)
             if anchor.check(): # we found some file object
-                self._path2confmods[None] = self.getconftestmodules(anchor)
-                # let's also consider test* dirs
-                if anchor.check(dir=1):
-                    for x in anchor.listdir("test*"):
-                        if x.check(dir=1):
-                            self.getconftestmodules(x)
-                break
-        else:
-            assert 0, "no root of filesystem?"
+                self._try_load_conftest(anchor)
+                foundanchor = True
+        if not foundanchor:
+            self._try_load_conftest(current)
+
+    def _try_load_conftest(self, anchor):
+        self._path2confmods[None] = self.getconftestmodules(anchor)
+        # let's also consider test* subdirs
+        if anchor.check(dir=1):
+            for x in anchor.listdir("test*"):
+                if x.check(dir=1):
+                    self.getconftestmodules(x)
 
     def getconftestmodules(self, path):
         """ return a list of imported conftest modules for the given path.  """


diff -r b6692c800dd434d1b6abca3e4b4bb261b59911eb -r 6d5db6fbe405aacc5b828ec1f461f7699fa25664 setup.py
--- a/setup.py
+++ b/setup.py
@@ -24,7 +24,7 @@
         name='pytest',
         description='py.test: simple powerful testing with Python',
         long_description = long_description,
-        version='2.3.0.dev1',
+        version='2.3.0.dev2',
         url='http://pytest.org',
         license='MIT license',
         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],


diff -r b6692c800dd434d1b6abca3e4b4bb261b59911eb -r 6d5db6fbe405aacc5b828ec1f461f7699fa25664 testing/test_conftest.py
--- a/testing/test_conftest.py
+++ b/testing/test_conftest.py
@@ -15,7 +15,8 @@
             d.ensure("adir/__init__.py")
             d.ensure("adir/b/__init__.py")
         return d
-    return request.cached_setup(lambda: basedirmaker(request), extrakey=request.param)
+    return request.cached_setup(
+        lambda: basedirmaker(request), extrakey=request.param)
 
 def ConftestWithSetinitial(path):
     conftest = Conftest()
@@ -106,6 +107,17 @@
     l = conftest.getconftestmodules(None)
     assert len(l) == 0
 
+def test_issue151_load_all_conftests(testdir):
+    names = "code proj src".split()
+    for name in names:
+        p = testdir.mkdir(name)
+        p.ensure("conftest.py")
+
+    conftest = Conftest()
+    conftest.setinitial(names)
+    d = list(conftest._conftestpath2mod.values())
+    assert len(d) == len(names)
+
 def test_conftest_global_import(testdir):
     testdir.makeconftest("x=3")
     p = testdir.makepyfile("""

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.



More information about the pytest-commit mailing list