mirror of https://github.com/python/cpython.git
runtest(): I don't know why we don't just use TESTFN, but if we have to
do bizarre things to get a temp file, I changed it to use mkstemp instead of NamedTemporaryFile. This tried to leave the file open while passing its name to execfile(). On Win2K (but not Win9X), though, a file created with O_TEMPORARY cannot be opened again, so the test failed with a permission error when execfile tried to open it. Closer to the truth: a file created with O_TEMPORARY can be opened again, but only if the file is also created with SHARE_DELETE access via the Win32 CreateFile() function. There's no way to get at that from MS's version of libc, though (we'd have to ditch the "std" C file functions in favor of Win32 API calls).
This commit is contained in:
parent
d41bf34825
commit
632a4fbd4d
|
@ -56,18 +56,19 @@ def runtest(hier, code):
|
|||
root = tempfile.mkdtemp()
|
||||
mkhier(root, hier)
|
||||
savepath = sys.path[:]
|
||||
codefile = tempfile.NamedTemporaryFile()
|
||||
codefile.write(code)
|
||||
codefile.flush()
|
||||
fd, fname = tempfile.mkstemp(binary=False)
|
||||
os.write(fd, code)
|
||||
os.close(fd)
|
||||
try:
|
||||
sys.path.insert(0, root)
|
||||
if verbose: print "sys.path =", sys.path
|
||||
try:
|
||||
execfile(codefile.name, globals(), {})
|
||||
execfile(fname, globals(), {})
|
||||
except:
|
||||
traceback.print_exc(file=sys.stdout)
|
||||
finally:
|
||||
sys.path[:] = savepath
|
||||
os.unlink(fname)
|
||||
try:
|
||||
cleanout(root)
|
||||
except (os.error, IOError):
|
||||
|
|
Loading…
Reference in New Issue