From a351f7701a6d9e0648b4d108821ebd4ce7b38fee Mon Sep 17 00:00:00 2001 From: Alexandre Vassalotti Date: Mon, 3 Mar 2008 02:59:49 +0000 Subject: [PATCH] Fixed failing unit tests due to str/bytes mismatch. Changed "assert isinstance(...)" in hmac.py to raise proper TypeError. --- Lib/hmac.py | 6 ++++-- Lib/test/test_largefile.py | 14 +++++++------- Lib/test/test_pep247.py | 18 +++++++++--------- Lib/test/test_pty.py | 3 ++- 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/Lib/hmac.py b/Lib/hmac.py index 6f2ae2e110d..0f59fd4847a 100644 --- a/Lib/hmac.py +++ b/Lib/hmac.py @@ -39,7 +39,8 @@ def __init__(self, key, msg = None, digestmod = None): if key is _secret_backdoor_key: # cheap return - assert isinstance(key, bytes), repr(key) + if not isinstance(key, bytes): + raise TypeError("expected bytes, but got %r" % type(key).__name__) if digestmod is None: import hashlib @@ -84,7 +85,8 @@ def __init__(self, key, msg = None, digestmod = None): def update(self, msg): """Update this hashing object with the string msg. """ - assert isinstance(msg, bytes), repr(msg) + if not isinstance(msg, bytes): + raise TypeError("expected bytes, but got %r" % type(msg).__name__) self.inner.update(msg) def copy(self): diff --git a/Lib/test/test_largefile.py b/Lib/test/test_largefile.py index 8157ddbfa6f..d1e02ed01e0 100644 --- a/Lib/test/test_largefile.py +++ b/Lib/test/test_largefile.py @@ -31,10 +31,10 @@ def test_seek(self): print('create large file via seek (may be sparse file) ...') f = open(TESTFN, 'wb') try: - f.write('z') + f.write(b'z') f.seek(0) f.seek(size) - f.write('a') + f.write(b'a') f.flush() if verbose: print('check file size with os.fstat') @@ -53,7 +53,7 @@ def test_seek_read(self): f = open(TESTFN, 'rb') try: self.assertEqual(f.tell(), 0) - self.assertEqual(f.read(1), 'z') + self.assertEqual(f.read(1), b'z') self.assertEqual(f.tell(), 1) f.seek(0) self.assertEqual(f.tell(), 0) @@ -76,9 +76,9 @@ def test_seek_read(self): f.seek(size) self.assertEqual(f.tell(), size) # the 'a' that was written at the end of file above - self.assertEqual(f.read(1), 'a') + self.assertEqual(f.read(1), b'a') f.seek(-size-1, 1) - self.assertEqual(f.read(1), 'z') + self.assertEqual(f.read(1), b'z') self.assertEqual(f.tell(), 1) finally: f.close() @@ -97,7 +97,7 @@ def test_lseek(self): self.assertEqual(os.lseek(f.fileno(), -size-1, 2), 0) self.assertEqual(os.lseek(f.fileno(), size, 0), size) # the 'a' that was written at the end of file above - self.assertEqual(f.read(1), 'a') + self.assertEqual(f.read(1), b'a') finally: f.close() @@ -155,7 +155,7 @@ def main_test(): f.seek(2147483649) # Seeking is not enough of a test: you must write and # flush, too! - f.write("x") + f.write(b'x') f.flush() except (IOError, OverflowError): f.close() diff --git a/Lib/test/test_pep247.py b/Lib/test/test_pep247.py index 4ea747ab3af..89ca6ffbbab 100644 --- a/Lib/test/test_pep247.py +++ b/Lib/test/test_pep247.py @@ -12,25 +12,25 @@ def check_hash_module(module, key=None): if key is not None: obj1 = module.new(key) - obj2 = module.new(key, "string") + obj2 = module.new(key, b"string") - h1 = module.new(key, "string").digest() - obj3 = module.new(key) ; obj3.update("string") ; h2 = obj3.digest() + h1 = module.new(key, b"string").digest() + obj3 = module.new(key) ; obj3.update(b"string") ; h2 = obj3.digest() assert h1 == h2, "Hashes must match" else: obj1 = module.new() - obj2 = module.new("string") + obj2 = module.new(b"string") - h1 = module.new("string").digest() - obj3 = module.new() ; obj3.update("string") ; h2 = obj3.digest() + h1 = module.new(b"string").digest() + obj3 = module.new() ; obj3.update(b"string") ; h2 = obj3.digest() assert h1 == h2, "Hashes must match" assert hasattr(obj1, 'digest_size'), "Objects must have digest_size attr" if module.digest_size is not None: assert obj1.digest_size == module.digest_size, "digest_size must match" assert obj1.digest_size == len(h1), "digest_size must match actual size" - obj1.update("string") + obj1.update(b"string") obj_copy = obj1.copy() assert obj1.digest() == obj_copy.digest(), "Copied objects must match" assert obj1.hexdigest() == obj_copy.hexdigest(), \ @@ -38,11 +38,11 @@ def check_hash_module(module, key=None): digest, hexdigest = obj1.digest(), obj1.hexdigest() hd2 = "" for byte in digest: - hd2 += "%02x" % ord(byte) + hd2 += "%02x" % byte assert hd2 == hexdigest, "hexdigest doesn't appear correct" print('Module', module.__name__, 'seems to comply with PEP 247') if __name__ == '__main__': - check_hash_module(hmac, key='abc') + check_hash_module(hmac, key=b'abc') diff --git a/Lib/test/test_pty.py b/Lib/test/test_pty.py index e2058abcf22..58a304186f2 100644 --- a/Lib/test/test_pty.py +++ b/Lib/test/test_pty.py @@ -157,7 +157,8 @@ def test_fork(self): break if not data: break - sys.stdout.write(data.replace('\r\n', '\n').decode('ascii')) + sys.stdout.write(str(data.replace(b'\r\n', b'\n'), + encoding='ascii')) ##line = os.read(master_fd, 80) ##lines = line.replace('\r\n', '\n').split('\n')