diff options
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_dict.py | 11 | ||||
-rw-r--r-- | Lib/test/test_long.py | 3 | ||||
-rw-r--r-- | Lib/test/test_mailbox.py | 51 |
3 files changed, 63 insertions, 2 deletions
diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py index b518a0b..403d5eb 100644 --- a/Lib/test/test_dict.py +++ b/Lib/test/test_dict.py @@ -638,6 +638,17 @@ class DictTest(unittest.TestCase): resizing = True d[9] = 6 + def test_empty_presized_dict_in_freelist(self): + # Bug #3537: if an empty but presized dict with a size larger + # than 7 was in the freelist, it triggered an assertion failure + try: + d = {'a': 1/0, 'b': None, 'c': None, 'd': None, 'e': None, + 'f': None, 'g': None, 'h': None} + except ZeroDivisionError: + pass + d = {} + + from test import mapping_tests diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index c475878..dc04bad 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -768,7 +768,8 @@ class LongTest(unittest.TestCase): def test_nan_inf(self): self.assertRaises(OverflowError, int, float('inf')) - self.assertRaises(OverflowError, int, float('nan')) + self.assertRaises(OverflowError, int, float('-inf')) + self.assertRaises(ValueError, int, float('nan')) def test_true_division(self): huge = 1 << 40000 diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py index 783323f..1828381 100644 --- a/Lib/test/test_mailbox.py +++ b/Lib/test/test_mailbox.py @@ -709,6 +709,38 @@ class TestMaildir(TestMailbox): for msg in self._box: pass + def test_file_permissions(self): + # Verify that message files are created without execute permissions + if not hasattr(os, "stat") or not hasattr(os, "umask"): + return + msg = mailbox.MaildirMessage(self._template % 0) + orig_umask = os.umask(0) + try: + key = self._box.add(msg) + finally: + os.umask(orig_umask) + path = os.path.join(self._path, self._box._lookup(key)) + mode = os.stat(path).st_mode + self.assert_(mode & 0o111 == 0) + + def test_folder_file_perms(self): + # From bug #3228, we want to verify that the file created inside a Maildir + # subfolder isn't marked as executable. + if not hasattr(os, "stat") or not hasattr(os, "umask"): + return + + orig_umask = os.umask(0) + try: + subfolder = self._box.add_folder('subfolder') + finally: + os.umask(orig_umask) + + path = os.path.join(subfolder._path, 'maildirfolder') + st = os.stat(path) + perms = st.st_mode + self.assertFalse((perms & 0o111)) # Execute bits should all be off. + + class _TestMboxMMDF(TestMailbox): def tearDown(self): @@ -800,11 +832,28 @@ 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') and hasattr(os, 'stat'): + try: + old_umask = os.umask(0o077) + self._box.close() + os.unlink(self._path) + self._box = mailbox.mbox(self._path, create=True) + self._box.add('') + self._box.close() + finally: + os.umask(old_umask) + + st = os.stat(self._path) + perms = st.st_mode + self.assertFalse((perms & 0o111)) # Execute bits should all be off. class TestMMDF(_TestMboxMMDF): |