(fixes issue83) don't try to import conftest from an invalid package path, refine path.pyimport() logic
--HG-- branch : trunk
This commit is contained in:
parent
c8d78177b9
commit
8131f5bdc0
|
@ -456,7 +456,8 @@ class LocalPath(FSBase):
|
|||
def pypkgpath(self, pkgname=None):
|
||||
""" return the path's package path by looking for the given
|
||||
pkgname. If pkgname is None then look for the last
|
||||
directory upwards which still contains an __init__.py.
|
||||
directory upwards which still contains an __init__.py
|
||||
and whose basename is python-importable.
|
||||
Return None if a pkgpath can not be determined.
|
||||
"""
|
||||
pkgpath = None
|
||||
|
@ -464,6 +465,8 @@ class LocalPath(FSBase):
|
|||
if pkgname is None:
|
||||
if parent.check(file=1):
|
||||
continue
|
||||
if not isimportable(parent.basename):
|
||||
break
|
||||
if parent.join('__init__.py').check():
|
||||
pkgpath = parent
|
||||
continue
|
||||
|
@ -797,3 +800,6 @@ def autopath(globs=None):
|
|||
ret.pkgdir = pkgdir
|
||||
return ret
|
||||
|
||||
|
||||
def isimportable(name):
|
||||
return name[0].isalpha() and name.isalnum()
|
||||
|
|
|
@ -355,6 +355,14 @@ def test_pypkgdir(tmpdir):
|
|||
assert pkg.pypkgpath() == pkg
|
||||
assert pkg.join('subdir', '__init__.py').pypkgpath() == pkg
|
||||
|
||||
def test_pypkgdir_unimportable(tmpdir):
|
||||
pkg = tmpdir.ensure('pkg1-1', dir=1) # unimportable
|
||||
pkg.ensure("__init__.py")
|
||||
subdir = pkg.ensure("subdir/__init__.py").dirpath()
|
||||
assert subdir.pypkgpath() == subdir
|
||||
assert subdir.ensure("xyz.py").pypkgpath() == subdir
|
||||
assert not pkg.pypkgpath()
|
||||
|
||||
def test_homedir():
|
||||
homedir = py.path.local._gethomedir()
|
||||
assert homedir.check(dir=1)
|
||||
|
|
|
@ -169,6 +169,7 @@ class TestConfigApi_getinitialnodes:
|
|||
assert col.config is config
|
||||
|
||||
def test_pkgfile(self, testdir, tmpdir):
|
||||
tmpdir = tmpdir.join("subdir")
|
||||
x = tmpdir.ensure("x.py")
|
||||
tmpdir.ensure("__init__.py")
|
||||
config = testdir.reparseconfig([x])
|
||||
|
|
|
@ -90,6 +90,13 @@ class TestConftestValueAccessGlobal:
|
|||
assert path.dirpath() == basedir.join("adir", "b")
|
||||
assert path.purebasename == "conftest"
|
||||
|
||||
def test_conftest_in_nonpkg_with_init(tmpdir):
|
||||
tmpdir.ensure("adir-1.0/conftest.py").write("a=1 ; Directory = 3")
|
||||
tmpdir.ensure("adir-1.0/b/conftest.py").write("b=2 ; a = 1.5")
|
||||
tmpdir.ensure("adir-1.0/b/__init__.py")
|
||||
tmpdir.ensure("adir-1.0/__init__.py")
|
||||
conftest = ConftestWithSetinitial(tmpdir.join("adir-1.0", "b"))
|
||||
|
||||
def test_conftestcutdir(testdir):
|
||||
conf = testdir.makeconftest("")
|
||||
p = testdir.mkdir("x")
|
||||
|
|
Loading…
Reference in New Issue