self.assertEqual(self.zip2.read("zero"), self.plain2)
def test_unicode_password(self):
- self.assertRaises(TypeError, self.zip.setpassword, "unicode")
- self.assertRaises(TypeError, self.zip.read, "test.txt", "python")
- self.assertRaises(TypeError, self.zip.open, "test.txt", pwd="python")
- self.assertRaises(TypeError, self.zip.extract, "test.txt", pwd="python")
+ expected_msg = "pwd: expected bytes, got str"
+
+ with self.assertRaisesRegex(TypeError, expected_msg):
+ self.zip.setpassword("unicode")
+
+ with self.assertRaisesRegex(TypeError, expected_msg):
+ self.zip.read("test.txt", "python")
+
+ with self.assertRaisesRegex(TypeError, expected_msg):
+ self.zip.open("test.txt", pwd="python")
+
+ with self.assertRaisesRegex(TypeError, expected_msg):
+ self.zip.extract("test.txt", pwd="python")
+
+ with self.assertRaisesRegex(TypeError, expected_msg):
+ self.zip.pwd = "python"
+ self.zip.open("test.txt")
def test_seek_tell(self):
self.zip.setpassword(b"python")
"""
if mode not in {"r", "w"}:
raise ValueError('open() requires mode "r" or "w"')
- if pwd and not isinstance(pwd, bytes):
- raise TypeError("pwd: expected bytes, got %s" % type(pwd).__name__)
if pwd and (mode == "w"):
raise ValueError("pwd is only supported for reading files")
if not self.fp:
if is_encrypted:
if not pwd:
pwd = self.pwd
+ if pwd and not isinstance(pwd, bytes):
+ raise TypeError("pwd: expected bytes, got %s" % type(pwd).__name__)
if not pwd:
raise RuntimeError("File %r is encrypted, password "
"required for extraction" % name)