diff -r 7dddc2251365 -r bde1cd4c99d9 tests/test-hashutil.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-hashutil.py Wed Jan 08 15:59:52 2020 -0500 @@ -0,0 +1,60 @@ +# Tests to ensure that sha1dc.sha1 is exactly a drop-in for +# hashlib.sha1 for our needs. +from __future__ import absolute_import + +import hashlib +import unittest + +import silenttestrunner + +try: + from mercurial.thirdparty import sha1dc +except ImportError: + sha1dc = None + + +class hashertestsbase(object): + def test_basic_hash(self): + h = self.hasher() + h.update(b'foo') + self.assertEqual( + '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', h.hexdigest() + ) + h.update(b'bar') + self.assertEqual( + '8843d7f92416211de9ebb963ff4ce28125932878', h.hexdigest() + ) + + def test_copy_hasher(self): + h = self.hasher() + h.update(b'foo') + h2 = h.copy() + h.update(b'baz') + h2.update(b'bar') + self.assertEqual( + '21eb6533733a5e4763acacd1d45a60c2e0e404e1', h.hexdigest() + ) + self.assertEqual( + '8843d7f92416211de9ebb963ff4ce28125932878', h2.hexdigest() + ) + + def test_init_hasher(self): + h = self.hasher(b'initial string') + self.assertEqual( + b'\xc9y|n\x1f3S\xa4:\xbaJ\xca,\xc1\x1a\x9e\xb8\xd8\xdd\x86', + h.digest(), + ) + + +class hashlibtests(unittest.TestCase, hashertestsbase): + hasher = hashlib.sha1 + + +if sha1dc: + + class sha1dctests(unittest.TestCase, hashertestsbase): + hasher = sha1dc.sha1 + + +if __name__ == '__main__': + silenttestrunner.main(__name__)