diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-07-01 11:47:03 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-07-01 11:47:03 (GMT) |
commit | 59929d9877e2968c38e672f14cd92aa63bfe9c4b (patch) | |
tree | d8587c82669d162eaeed6997e2a7e08b73cea608 /Lib | |
parent | c9e07a3ec8c48ca833f57286474226e2e82f5214 (diff) | |
parent | bef7fdfc0448f2c1b6a7141898fddbe6d2d562f6 (diff) | |
download | cpython-59929d9877e2968c38e672f14cd92aa63bfe9c4b.zip cpython-59929d9877e2968c38e672f14cd92aa63bfe9c4b.tar.gz cpython-59929d9877e2968c38e672f14cd92aa63bfe9c4b.tar.bz2 |
(merge 3.2) 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).
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_os.py | 117 |
1 files changed, 6 insertions, 111 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 98a2129..72f1c1b 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -114,124 +114,20 @@ class FileTests(unittest.TestCase): 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): @@ -1632,7 +1528,6 @@ def test_main(): LinkTests, TestSendfile, ProgramPriorityTests, - TemporaryFileTests, ) if __name__ == "__main__": |