tests/test-hashutil.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 15 Jan 2021 12:41:38 +0100
changeset 46314 95a615dd77bf
parent 44087 dc9b53482689
child 48875 6000f5b25c9b
permissions -rw-r--r--
clone: make sure we warm the cache after a clone This work around any deviciency/limitation of the clone process. In our case this ensure the persistent nodemap exist with valid content. Ideally, the cloning process would also do "the right thing". However since older server will never be able to do "the right thing". The local workaround will be necessary anyway. I am not worried by the performance impact of this as `hg clone` is non-instant on large repositories where is could matters. Warming the cache if they are already correct is very fast. And if they are not already warm, this seems like a good time to do so. This impact various test as more cache are now warmed sooner, all the change should be harmless. Differential Revision: https://phab.mercurial-scm.org/D9789
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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__)