Commit a4629852 authored by Tim Peters's avatar Tim Peters

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).
parent 29f3f231
......@@ -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):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment