mirror of
https://github.com/python/cpython
synced 2024-09-18 20:01:39 +00:00
Fixed failing unit tests due to str/bytes mismatch.
Changed "assert isinstance(...)" in hmac.py to raise proper TypeError.
This commit is contained in:
parent
7f757edf15
commit
a351f7701a
|
@ -39,7 +39,8 @@ def __init__(self, key, msg = None, digestmod = None):
|
||||||
if key is _secret_backdoor_key: # cheap
|
if key is _secret_backdoor_key: # cheap
|
||||||
return
|
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:
|
if digestmod is None:
|
||||||
import hashlib
|
import hashlib
|
||||||
|
@ -84,7 +85,8 @@ def __init__(self, key, msg = None, digestmod = None):
|
||||||
def update(self, msg):
|
def update(self, msg):
|
||||||
"""Update this hashing object with the string 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)
|
self.inner.update(msg)
|
||||||
|
|
||||||
def copy(self):
|
def copy(self):
|
||||||
|
|
|
@ -31,10 +31,10 @@ def test_seek(self):
|
||||||
print('create large file via seek (may be sparse file) ...')
|
print('create large file via seek (may be sparse file) ...')
|
||||||
f = open(TESTFN, 'wb')
|
f = open(TESTFN, 'wb')
|
||||||
try:
|
try:
|
||||||
f.write('z')
|
f.write(b'z')
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
f.seek(size)
|
f.seek(size)
|
||||||
f.write('a')
|
f.write(b'a')
|
||||||
f.flush()
|
f.flush()
|
||||||
if verbose:
|
if verbose:
|
||||||
print('check file size with os.fstat')
|
print('check file size with os.fstat')
|
||||||
|
@ -53,7 +53,7 @@ def test_seek_read(self):
|
||||||
f = open(TESTFN, 'rb')
|
f = open(TESTFN, 'rb')
|
||||||
try:
|
try:
|
||||||
self.assertEqual(f.tell(), 0)
|
self.assertEqual(f.tell(), 0)
|
||||||
self.assertEqual(f.read(1), 'z')
|
self.assertEqual(f.read(1), b'z')
|
||||||
self.assertEqual(f.tell(), 1)
|
self.assertEqual(f.tell(), 1)
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
self.assertEqual(f.tell(), 0)
|
self.assertEqual(f.tell(), 0)
|
||||||
|
@ -76,9 +76,9 @@ def test_seek_read(self):
|
||||||
f.seek(size)
|
f.seek(size)
|
||||||
self.assertEqual(f.tell(), size)
|
self.assertEqual(f.tell(), size)
|
||||||
# the 'a' that was written at the end of file above
|
# 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)
|
f.seek(-size-1, 1)
|
||||||
self.assertEqual(f.read(1), 'z')
|
self.assertEqual(f.read(1), b'z')
|
||||||
self.assertEqual(f.tell(), 1)
|
self.assertEqual(f.tell(), 1)
|
||||||
finally:
|
finally:
|
||||||
f.close()
|
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-1, 2), 0)
|
||||||
self.assertEqual(os.lseek(f.fileno(), size, 0), size)
|
self.assertEqual(os.lseek(f.fileno(), size, 0), size)
|
||||||
# the 'a' that was written at the end of file above
|
# 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:
|
finally:
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
@ -155,7 +155,7 @@ def main_test():
|
||||||
f.seek(2147483649)
|
f.seek(2147483649)
|
||||||
# Seeking is not enough of a test: you must write and
|
# Seeking is not enough of a test: you must write and
|
||||||
# flush, too!
|
# flush, too!
|
||||||
f.write("x")
|
f.write(b'x')
|
||||||
f.flush()
|
f.flush()
|
||||||
except (IOError, OverflowError):
|
except (IOError, OverflowError):
|
||||||
f.close()
|
f.close()
|
||||||
|
|
|
@ -12,25 +12,25 @@ def check_hash_module(module, key=None):
|
||||||
|
|
||||||
if key is not None:
|
if key is not None:
|
||||||
obj1 = module.new(key)
|
obj1 = module.new(key)
|
||||||
obj2 = module.new(key, "string")
|
obj2 = module.new(key, b"string")
|
||||||
|
|
||||||
h1 = module.new(key, "string").digest()
|
h1 = module.new(key, b"string").digest()
|
||||||
obj3 = module.new(key) ; obj3.update("string") ; h2 = obj3.digest()
|
obj3 = module.new(key) ; obj3.update(b"string") ; h2 = obj3.digest()
|
||||||
assert h1 == h2, "Hashes must match"
|
assert h1 == h2, "Hashes must match"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
obj1 = module.new()
|
obj1 = module.new()
|
||||||
obj2 = module.new("string")
|
obj2 = module.new(b"string")
|
||||||
|
|
||||||
h1 = module.new("string").digest()
|
h1 = module.new(b"string").digest()
|
||||||
obj3 = module.new() ; obj3.update("string") ; h2 = obj3.digest()
|
obj3 = module.new() ; obj3.update(b"string") ; h2 = obj3.digest()
|
||||||
assert h1 == h2, "Hashes must match"
|
assert h1 == h2, "Hashes must match"
|
||||||
|
|
||||||
assert hasattr(obj1, 'digest_size'), "Objects must have digest_size attr"
|
assert hasattr(obj1, 'digest_size'), "Objects must have digest_size attr"
|
||||||
if module.digest_size is not None:
|
if module.digest_size is not None:
|
||||||
assert obj1.digest_size == module.digest_size, "digest_size must match"
|
assert obj1.digest_size == module.digest_size, "digest_size must match"
|
||||||
assert obj1.digest_size == len(h1), "digest_size must match actual size"
|
assert obj1.digest_size == len(h1), "digest_size must match actual size"
|
||||||
obj1.update("string")
|
obj1.update(b"string")
|
||||||
obj_copy = obj1.copy()
|
obj_copy = obj1.copy()
|
||||||
assert obj1.digest() == obj_copy.digest(), "Copied objects must match"
|
assert obj1.digest() == obj_copy.digest(), "Copied objects must match"
|
||||||
assert obj1.hexdigest() == obj_copy.hexdigest(), \
|
assert obj1.hexdigest() == obj_copy.hexdigest(), \
|
||||||
|
@ -38,11 +38,11 @@ def check_hash_module(module, key=None):
|
||||||
digest, hexdigest = obj1.digest(), obj1.hexdigest()
|
digest, hexdigest = obj1.digest(), obj1.hexdigest()
|
||||||
hd2 = ""
|
hd2 = ""
|
||||||
for byte in digest:
|
for byte in digest:
|
||||||
hd2 += "%02x" % ord(byte)
|
hd2 += "%02x" % byte
|
||||||
assert hd2 == hexdigest, "hexdigest doesn't appear correct"
|
assert hd2 == hexdigest, "hexdigest doesn't appear correct"
|
||||||
|
|
||||||
print('Module', module.__name__, 'seems to comply with PEP 247')
|
print('Module', module.__name__, 'seems to comply with PEP 247')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
check_hash_module(hmac, key='abc')
|
check_hash_module(hmac, key=b'abc')
|
||||||
|
|
|
@ -157,7 +157,8 @@ def test_fork(self):
|
||||||
break
|
break
|
||||||
if not data:
|
if not data:
|
||||||
break
|
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)
|
##line = os.read(master_fd, 80)
|
||||||
##lines = line.replace('\r\n', '\n').split('\n')
|
##lines = line.replace('\r\n', '\n').split('\n')
|
||||||
|
|
Loading…
Reference in a new issue