summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_dict.py11
-rw-r--r--Lib/test/test_long.py3
-rw-r--r--Lib/test/test_mailbox.py51
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):