summaryrefslogtreecommitdiff
path: root/Lib/test
diff options
context:
space:
mode:
authorAndrew M. Kuchling <amk@amk.ca>2008-08-04 01:43:43 +0000
committerAndrew M. Kuchling <amk@amk.ca>2008-08-04 01:43:43 +0000
commit70a6dbd46e390ca70c7f1814c1a8b1038214aa67 (patch)
tree60ec8badd4d1163411653062ce3a60328623e9fb /Lib/test
parent087925028420314d70c25606bdff0b8042138ac7 (diff)
downloadcpython-git-70a6dbd46e390ca70c7f1814c1a8b1038214aa67.tar.gz
Bug 3228: Explicitly supply the file mode to avoid creating executable files,
and add corresponding tests. Possible 2.5 backport candidate
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_mailbox.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
index 7a1225876b..a6494dcbea 100644
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -716,6 +716,16 @@ class TestMaildir(TestMailbox):
for msg in self._box:
pass
+ def test_file_perms(self):
+ # From bug #3228, we want to verify that the file created inside a Maildir
+ # subfolder isn't marked as executable.
+ subfolder = self._box.add_folder('subfolder')
+ path = os.path.join(subfolder._path, 'maildirfolder')
+ st = os.stat(path)
+ perms = st.st_mode
+ self.assertFalse((perms & 0111)) # Execute bits should all be off.
+
+
class _TestMboxMMDF(TestMailbox):
def tearDown(self):
@@ -805,11 +815,27 @@ class _TestMboxMMDF(TestMailbox):
self._box.close()
-
class TestMbox(_TestMboxMMDF):
_factory = lambda self, path, factory=None: mailbox.mbox(path, factory)
+ def test_file_perms(self):
+ # From bug #3228, we want to verify that the mailbox file isn't executable,
+ # even if the umask is set to something that would leave executable bits set.
+ # We only run this test on platforms that support umask.
+ if hasattr(os, 'umask'):
+ try:
+ old_umask = os.umask(0077)
+ self._box.close()
+ os.unlink(self._path)
+ self._box = mailbox.mbox(self._path, create=True)
+ self._box.add('')
+ self._box.close()
+ st = os.stat(self._path)
+ perms = st.st_mode
+ self.assertFalse((perms & 0111)) # Execute bits should all be off.
+ finally:
+ os.umask(old_umask)
class TestMMDF(_TestMboxMMDF):