Mercurial > hg
diff tests/test-hashutil.py @ 44058:bde1cd4c99d9
sha1dc: initial implementation of Python extension
A future change will use this when available to avoid sha1 collision
issues until we can get moved to something else.
Differential Revision: https://phab.mercurial-scm.org/D7815
author | Augie Fackler <augie@google.com> |
---|---|
date | Wed, 08 Jan 2020 15:59:52 -0500 |
parents | |
children | dc9b53482689 |
line wrap: on
line diff
--- /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__)