diff options
author | Lars Wirzenius <liw@liw.fi> | 2016-03-17 20:31:08 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2016-03-17 20:57:42 +0200 |
commit | d9b96822b90a568d752dad40c9c1db11075fcd20 (patch) | |
tree | a687d995bb9d5d14156057b8bd337e451b5dd6d9 | |
parent | 56970bfcbb3821d2550145111a58c46ab0c07419 (diff) | |
download | obnam-d9b96822b90a568d752dad40c9c1db11075fcd20.tar.gz |
Use plain digests for MD5 (backwards compat)
-rw-r--r-- | obnamlib/checksummer_tests.py | 13 | ||||
-rw-r--r-- | obnamlib/whole_file_checksummer.py | 6 | ||||
-rw-r--r-- | obnamlib/whole_file_checksummer_tests.py | 2 |
3 files changed, 16 insertions, 5 deletions
diff --git a/obnamlib/checksummer_tests.py b/obnamlib/checksummer_tests.py index db4832cd..9f5c647b 100644 --- a/obnamlib/checksummer_tests.py +++ b/obnamlib/checksummer_tests.py @@ -63,6 +63,13 @@ class TestGetChecksummer(unittest.TestCase): for name in obnamlib.checksum_algorithms: summer = obnamlib.get_checksum_algorithm(name) summer.update('hello, world') - checksum = summer.hexdigest() - self.assertEqual(type(checksum), str) - self.assertNotEqual(checksum, '') + + digest = summer.hexdigest() + self.assertEqual(type(digest), str) + self.assertNotEqual(digest, '') + + hexdigest = summer.hexdigest() + self.assertEqual(type(hexdigest), str) + self.assertNotEqual(hexdigest, '') + for c in hexdigest: + self.assertTrue(c in '0123456789abcdef') diff --git a/obnamlib/whole_file_checksummer.py b/obnamlib/whole_file_checksummer.py index d47850f7..78c6d06b 100644 --- a/obnamlib/whole_file_checksummer.py +++ b/obnamlib/whole_file_checksummer.py @@ -35,6 +35,7 @@ class WholeFileCheckSummer(object): def __init__(self, file_key): self._all_bytes = file_key == obnamlib.REPO_FILE_MD5 + self._use_hex = file_key != obnamlib.REPO_FILE_MD5 self._summer = self._create_checksum_algorithm(file_key) def _create_checksum_algorithm(self, file_key): @@ -52,7 +53,10 @@ class WholeFileCheckSummer(object): def get_checksum(self): '''Get the current whole-file checksum.''' - return self._summer.hexdigest() + if self._use_hex: + return self._summer.hexdigest() + else: + return self._summer.digest() class _NullChecksum(object): diff --git a/obnamlib/whole_file_checksummer_tests.py b/obnamlib/whole_file_checksummer_tests.py index 473831b9..c11da206 100644 --- a/obnamlib/whole_file_checksummer_tests.py +++ b/obnamlib/whole_file_checksummer_tests.py @@ -36,7 +36,7 @@ class WholeFileCheckSummerTests(unittest.TestCase): chunk_id = None summer.append_chunk(chunk, chunk_id) self.assertEqual( - summer.get_checksum(), + summer.get_checksum().encode('hex'), '5d41402abc4b2a76b9719d911017c592') def test_computes_checksum_for_sha512(self): |