[svn r38182] Made that ensuretemp() creates a new dir after forks.
--HG-- branch : trunk
This commit is contained in:
parent
1e8845dfa5
commit
e89d5e5880
|
@ -8,12 +8,15 @@ optparse = py.compat.optparse
|
||||||
|
|
||||||
# XXX move to Config class
|
# XXX move to Config class
|
||||||
basetemp = None
|
basetemp = None
|
||||||
|
_pid = None
|
||||||
def ensuretemp(string, dir=1):
|
def ensuretemp(string, dir=1):
|
||||||
""" return temporary directory path with
|
""" return temporary directory path with
|
||||||
the given string as the trailing part.
|
the given string as the trailing part.
|
||||||
"""
|
"""
|
||||||
global basetemp
|
global basetemp, _pid
|
||||||
if basetemp is None:
|
currpid = py.std.os.getpid()
|
||||||
|
if basetemp is None or _pid != currpid:
|
||||||
|
_pid = currpid
|
||||||
basetemp = py.path.local.make_numbered_dir(prefix='pytest-')
|
basetemp = py.path.local.make_numbered_dir(prefix='pytest-')
|
||||||
return basetemp.ensure(string, dir=dir)
|
return basetemp.ensure(string, dir=dir)
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,21 @@ def test_tmpdir():
|
||||||
assert d1 == d2
|
assert d1 == d2
|
||||||
assert d1.check(dir=1)
|
assert d1.check(dir=1)
|
||||||
|
|
||||||
|
def test_ensuretemp_fork():
|
||||||
|
os = py.std.os
|
||||||
|
org_getpid = os.getpid
|
||||||
|
currpid = 0
|
||||||
|
def getpid():
|
||||||
|
return currpid
|
||||||
|
try:
|
||||||
|
os.getpid = getpid
|
||||||
|
d1 = py.test.ensuretemp('hello')
|
||||||
|
currpid = 1
|
||||||
|
d2 = py.test.ensuretemp('hello')
|
||||||
|
finally:
|
||||||
|
os.getpid = org_getpid
|
||||||
|
assert d1 != d2
|
||||||
|
|
||||||
def test_config_cmdline_options():
|
def test_config_cmdline_options():
|
||||||
o = py.test.ensuretemp('configoptions')
|
o = py.test.ensuretemp('configoptions')
|
||||||
o.ensure("conftest.py").write(py.code.Source("""
|
o.ensure("conftest.py").write(py.code.Source("""
|
||||||
|
|
Loading…
Reference in New Issue