test_os: remove now useless TemporaryFileTests testcase
TemporaryFileTests has tests for os.tempnam() and os.tmpfile(), functions
removed from Python 3.
Move fdopen() tests to the FileTests testcase to test fdopen() on a file
descriptor, not on a directory descriptor (which raises an error on Windows).
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 0866593..efa28ea 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -109,124 +109,20 @@
self.write_windows_console(sys.executable, "-c", code)
self.write_windows_console(sys.executable, "-u", "-c", code)
-
-class TemporaryFileTests(unittest.TestCase):
- def setUp(self):
- self.files = []
- os.mkdir(support.TESTFN)
-
- def tearDown(self):
- for name in self.files:
- os.unlink(name)
- os.rmdir(support.TESTFN)
-
- def check_tempfile(self, name):
- # make sure it doesn't already exist:
- self.assertFalse(os.path.exists(name),
- "file already exists for temporary file")
- # make sure we can create the file
- open(name, "w")
- self.files.append(name)
-
- def test_tempnam(self):
- if not hasattr(os, "tempnam"):
- return
- warnings.filterwarnings("ignore", "tempnam", RuntimeWarning,
- r"test_os$")
- self.check_tempfile(os.tempnam())
-
- name = os.tempnam(support.TESTFN)
- self.check_tempfile(name)
-
- name = os.tempnam(support.TESTFN, "pfx")
- self.assertTrue(os.path.basename(name)[:3] == "pfx")
- self.check_tempfile(name)
-
- def test_tmpfile(self):
- if not hasattr(os, "tmpfile"):
- return
- # As with test_tmpnam() below, the Windows implementation of tmpfile()
- # attempts to create a file in the root directory of the current drive.
- # On Vista and Server 2008, this test will always fail for normal users
- # as writing to the root directory requires elevated privileges. With
- # XP and below, the semantics of tmpfile() are the same, but the user
- # running the test is more likely to have administrative privileges on
- # their account already. If that's the case, then os.tmpfile() should
- # work. In order to make this test as useful as possible, rather than
- # trying to detect Windows versions or whether or not the user has the
- # right permissions, just try and create a file in the root directory
- # and see if it raises a 'Permission denied' OSError. If it does, then
- # test that a subsequent call to os.tmpfile() raises the same error. If
- # it doesn't, assume we're on XP or below and the user running the test
- # has administrative privileges, and proceed with the test as normal.
- if sys.platform == 'win32':
- name = '\\python_test_os_test_tmpfile.txt'
- if os.path.exists(name):
- os.remove(name)
- try:
- fp = open(name, 'w')
- except IOError as first:
- # open() failed, assert tmpfile() fails in the same way.
- # Although open() raises an IOError and os.tmpfile() raises an
- # OSError(), 'args' will be (13, 'Permission denied') in both
- # cases.
- try:
- fp = os.tmpfile()
- except OSError as second:
- self.assertEqual(first.args, second.args)
- else:
- self.fail("expected os.tmpfile() to raise OSError")
- return
- else:
- # open() worked, therefore, tmpfile() should work. Close our
- # dummy file and proceed with the test as normal.
- fp.close()
- os.remove(name)
-
- fp = os.tmpfile()
- fp.write("foobar")
- fp.seek(0,0)
- s = fp.read()
- fp.close()
- self.assertTrue(s == "foobar")
-
- def test_tmpnam(self):
- if not hasattr(os, "tmpnam"):
- return
- warnings.filterwarnings("ignore", "tmpnam", RuntimeWarning,
- r"test_os$")
- name = os.tmpnam()
- if sys.platform in ("win32",):
- # The Windows tmpnam() seems useless. From the MS docs:
- #
- # The character string that tmpnam creates consists of
- # the path prefix, defined by the entry P_tmpdir in the
- # file STDIO.H, followed by a sequence consisting of the
- # digit characters '0' through '9'; the numerical value
- # of this string is in the range 1 - 65,535. Changing the
- # definitions of L_tmpnam or P_tmpdir in STDIO.H does not
- # change the operation of tmpnam.
- #
- # The really bizarre part is that, at least under MSVC6,
- # P_tmpdir is "\\". That is, the path returned refers to
- # the root of the current drive. That's a terrible place to
- # put temp files, and, depending on privileges, the user
- # may not even be able to open a file in the root directory.
- self.assertFalse(os.path.exists(name),
- "file already exists for temporary file")
- else:
- self.check_tempfile(name)
-
def fdopen_helper(self, *args):
fd = os.open(support.TESTFN, os.O_RDONLY)
- fp2 = os.fdopen(fd, *args)
- fp2.close()
+ f = os.fdopen(fd, *args)
+ f.close()
def test_fdopen(self):
+ fd = os.open(support.TESTFN, os.O_CREAT|os.O_RDWR)
+ os.close(fd)
+
self.fdopen_helper()
self.fdopen_helper('r')
self.fdopen_helper('r', 100)
+
# Test attributes on return values from os.*stat* family.
class StatAttributeTests(unittest.TestCase):
def setUp(self):
@@ -1344,7 +1240,6 @@
PidTests,
LoginTests,
LinkTests,
- TemporaryFileTests,
)
if __name__ == "__main__":