From 975ebec2f81c4e5c992d65e6984c8ab122feffa6 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sat, 11 Aug 2018 16:45:19 -0400 Subject: Hasher needed more information about nesting to avoid collisions --- coverage/misc.py | 1 + tests/test_misc.py | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/coverage/misc.py b/coverage/misc.py index fff2a187..50c8d8ac 100644 --- a/coverage/misc.py +++ b/coverage/misc.py @@ -226,6 +226,7 @@ class Hasher(object): continue self.update(k) self.update(a) + self.md5.update(b'.') def hexdigest(self): """Retrieve the hex digest of the hash.""" diff --git a/tests/test_misc.py b/tests/test_misc.py index f3d485cc..1d01537b 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -47,6 +47,13 @@ class HasherTest(CoverageTest): h2.update({'b': 23, 'a': 17}) self.assertEqual(h1.hexdigest(), h2.hexdigest()) + def test_dict_collision(self): + h1 = Hasher() + h1.update({'a': 17, 'b': {'c': 1, 'd': 2}}) + h2 = Hasher() + h2.update({'a': 17, 'b': {'c': 1}, 'd': 2}) + self.assertNotEqual(h1.hexdigest(), h2.hexdigest()) + class RemoveFileTest(CoverageTest): """Tests of misc.file_be_gone.""" -- cgit v1.2.1