Mercurial > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
44057:7dddc2251365 | 44058:bde1cd4c99d9 |
---|---|
1 # Tests to ensure that sha1dc.sha1 is exactly a drop-in for | |
2 # hashlib.sha1 for our needs. | |
3 from __future__ import absolute_import | |
4 | |
5 import hashlib | |
6 import unittest | |
7 | |
8 import silenttestrunner | |
9 | |
10 try: | |
11 from mercurial.thirdparty import sha1dc | |
12 except ImportError: | |
13 sha1dc = None | |
14 | |
15 | |
16 class hashertestsbase(object): | |
17 def test_basic_hash(self): | |
18 h = self.hasher() | |
19 h.update(b'foo') | |
20 self.assertEqual( | |
21 '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', h.hexdigest() | |
22 ) | |
23 h.update(b'bar') | |
24 self.assertEqual( | |
25 '8843d7f92416211de9ebb963ff4ce28125932878', h.hexdigest() | |
26 ) | |
27 | |
28 def test_copy_hasher(self): | |
29 h = self.hasher() | |
30 h.update(b'foo') | |
31 h2 = h.copy() | |
32 h.update(b'baz') | |
33 h2.update(b'bar') | |
34 self.assertEqual( | |
35 '21eb6533733a5e4763acacd1d45a60c2e0e404e1', h.hexdigest() | |
36 ) | |
37 self.assertEqual( | |
38 '8843d7f92416211de9ebb963ff4ce28125932878', h2.hexdigest() | |
39 ) | |
40 | |
41 def test_init_hasher(self): | |
42 h = self.hasher(b'initial string') | |
43 self.assertEqual( | |
44 b'\xc9y|n\x1f3S\xa4:\xbaJ\xca,\xc1\x1a\x9e\xb8\xd8\xdd\x86', | |
45 h.digest(), | |
46 ) | |
47 | |
48 | |
49 class hashlibtests(unittest.TestCase, hashertestsbase): | |
50 hasher = hashlib.sha1 | |
51 | |
52 | |
53 if sha1dc: | |
54 | |
55 class sha1dctests(unittest.TestCase, hashertestsbase): | |
56 hasher = sha1dc.sha1 | |
57 | |
58 | |
59 if __name__ == '__main__': | |
60 silenttestrunner.main(__name__) |