Merge pull request #2752 from tarcisiofischer/issue-2751-fix-flaky-testdir

Issue 2751 fix flaky testdir
This commit is contained in:
Bruno Oliveira 2017-09-05 18:51:08 -03:00 committed by GitHub
commit d1f71b0575
4 changed files with 3 additions and 10 deletions

View File

@ -161,6 +161,7 @@ Stefan Zimmermann
Stefano Taschini Stefano Taschini
Steffen Allner Steffen Allner
Stephan Obermann Stephan Obermann
Tarcisio Fischer
Tareq Alayan Tareq Alayan
Ted Xiao Ted Xiao
Thomas Grainger Thomas Grainger

View File

@ -412,16 +412,8 @@ class Testdir:
def __init__(self, request, tmpdir_factory): def __init__(self, request, tmpdir_factory):
self.request = request self.request = request
self._mod_collections = WeakKeyDictionary() self._mod_collections = WeakKeyDictionary()
# XXX remove duplication with tmpdir plugin
basetmp = tmpdir_factory.ensuretemp("testdir")
name = request.function.__name__ name = request.function.__name__
for i in range(100): self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
try:
tmpdir = basetmp.mkdir(name + str(i))
except py.error.EEXIST:
continue
break
self.tmpdir = tmpdir
self.plugins = [] self.plugins = []
self._savesyspath = (list(sys.path), list(sys.meta_path)) self._savesyspath = (list(sys.path), list(sys.meta_path))
self._savemodulekeys = set(sys.modules) self._savemodulekeys = set(sys.modules)

1
changelog/2751.bugfix Normal file
View File

@ -0,0 +1 @@
``testdir`` now uses use the same method used by ``tmpdir`` to create its temporary directory. This changes the final structure of the ``testdir`` directory slightly, but should not affect usage in normal scenarios and avoids a number of potential problems.

View File

@ -569,7 +569,6 @@ class Test_getinitialnodes(object):
col = testdir.getnode(config, x) col = testdir.getnode(config, x)
assert isinstance(col, pytest.Module) assert isinstance(col, pytest.Module)
assert col.name == 'x.py' assert col.name == 'x.py'
assert col.parent.name == testdir.tmpdir.basename
assert col.parent.parent is None assert col.parent.parent is None
for col in col.listchain(): for col in col.listchain():
assert col.config is config assert col.config is config