Mercurial > hg
annotate tests/test-hashutil.py @ 47234:616b8f412676
revlogv2: introduce a very basic docket file
This is the first stone toward using a docket file in revlogv2. Right now the
docket is very basic and only store the version number (which is -also- stored
into the index file…) and the other files have fixed name. This new
implementation break transactionally… but they are no test checking
transactionally for revlogv2… So I take this as an opportunity to start small.
They are no usage of revlogv2 outside of tests anyway.
The docket keeps the `.i` naming used by previous version index to preserve a
unique entry point. We could decide to use a different name and look it up
first, or to fully rework this in a future "store" version. However that does
not seems necessary right now.
We will re-introduces transactionality (and associated testing…) in a later
changesets.
A long list of TODOs have been added to the relevant comment.
Differential Revision: https://phab.mercurial-scm.org/D10624
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 May 2021 12:34:11 +0200 |
parents | dc9b53482689 |
children | 6000f5b25c9b |
rev | line source |
---|---|
44058
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 # Tests to ensure that sha1dc.sha1 is exactly a drop-in for |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 # hashlib.sha1 for our needs. |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 from __future__ import absolute_import |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 import hashlib |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 import unittest |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
8 import silenttestrunner |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
9 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
10 try: |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
11 from mercurial.thirdparty import sha1dc |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
12 except ImportError: |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
13 sha1dc = None |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
14 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
15 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
16 class hashertestsbase(object): |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
17 def test_basic_hash(self): |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
18 h = self.hasher() |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
19 h.update(b'foo') |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
20 self.assertEqual( |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
21 '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', h.hexdigest() |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 ) |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
23 h.update(b'bar') |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
24 self.assertEqual( |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
25 '8843d7f92416211de9ebb963ff4ce28125932878', h.hexdigest() |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
26 ) |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
27 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
28 def test_copy_hasher(self): |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
29 h = self.hasher() |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
30 h.update(b'foo') |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
31 h2 = h.copy() |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
32 h.update(b'baz') |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
33 h2.update(b'bar') |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
34 self.assertEqual( |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
35 '21eb6533733a5e4763acacd1d45a60c2e0e404e1', h.hexdigest() |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
36 ) |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
37 self.assertEqual( |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
38 '8843d7f92416211de9ebb963ff4ce28125932878', h2.hexdigest() |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
39 ) |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
40 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
41 def test_init_hasher(self): |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
42 h = self.hasher(b'initial string') |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
43 self.assertEqual( |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
44 b'\xc9y|n\x1f3S\xa4:\xbaJ\xca,\xc1\x1a\x9e\xb8\xd8\xdd\x86', |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
45 h.digest(), |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
46 ) |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
47 |
44087
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
48 def test_bytes_like_types(self): |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
49 h = self.hasher() |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
50 h.update(bytearray(b'foo')) |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
51 h.update(memoryview(b'baz')) |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
52 self.assertEqual( |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
53 '21eb6533733a5e4763acacd1d45a60c2e0e404e1', h.hexdigest() |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
54 ) |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
55 |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
56 h = self.hasher(bytearray(b'foo')) |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
57 h.update(b'baz') |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
58 self.assertEqual( |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
59 '21eb6533733a5e4763acacd1d45a60c2e0e404e1', h.hexdigest() |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
60 ) |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
61 |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
62 h = self.hasher(memoryview(b'foo')) |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
63 h.update(b'baz') |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
64 self.assertEqual( |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
65 '21eb6533733a5e4763acacd1d45a60c2e0e404e1', h.hexdigest() |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
66 ) |
dc9b53482689
sha1dc: use buffer protocol when parsing arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44058
diff
changeset
|
67 |
44058
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
68 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
69 class hashlibtests(unittest.TestCase, hashertestsbase): |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
70 hasher = hashlib.sha1 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
71 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
72 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
73 if sha1dc: |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
74 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
75 class sha1dctests(unittest.TestCase, hashertestsbase): |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
76 hasher = sha1dc.sha1 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
77 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
78 |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
79 if __name__ == '__main__': |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
80 silenttestrunner.main(__name__) |