This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
| Author | trent |
|---|---|
| Recipients | benjamin.peterson, christian.heimes, trent |
| Date | 2008年03月05日.22:45:30 |
| SpamBayes Score | 0.0012547999 |
| Marked as misclassified | No |
| Message-id | <1204757132.74.0.370770632009.issue2232@psf.upfronthosting.co.za> |
| In-reply-to |
| Content | |
|---|---|
I agree. Following patch fixes the issue for me: Index: test_os.py =================================================================== --- test_os.py (revision 61260) +++ test_os.py (working copy) @@ -65,6 +65,44 @@ 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, first: + # open() failed, assert tmpfile() fails in the same way. + # Although open() raises an IOError and os.tmpfile() raises an + # OSError(), 'args' will be (12, 'Permission denied') in both + # cases. + try: + fp = os.tmpfile() + except OSError, 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) |
|
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2008年03月05日 22:45:32 | trent | set | spambayes_score: 0.0012548 -> 0.0012547999 recipients: + trent, christian.heimes, benjamin.peterson |
| 2008年03月05日 22:45:32 | trent | set | spambayes_score: 0.0012548 -> 0.0012548 messageid: <1204757132.74.0.370770632009.issue2232@psf.upfronthosting.co.za> |
| 2008年03月05日 22:45:31 | trent | link | issue2232 messages |
| 2008年03月05日 22:45:31 | trent | create | |