From 0e4dfeeafd122c2028c0a099441414a31ba0fe02 Mon Sep 17 00:00:00 2001 From: ziadhany Date: Tue, 7 Feb 2023 20:32:08 +0200 Subject: [PATCH 1/3] Fix : GemVersion TypeError unhashable type: 'list' fix test_canonical_segments test Signed-off-by: ziadhany --- src/univers/gem.py | 4 ++-- tests/test_rubygems_gem_version.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/univers/gem.py b/src/univers/gem.py index b59d32aa..cbd47f7c 100644 --- a/src/univers/gem.py +++ b/src/univers/gem.py @@ -225,7 +225,7 @@ def equal_strictly(self, other): return self.version == other.version def __hash__(self): - return hash(self.canonical_segments) + return hash(tuple(self.canonical_segments)) def __eq__(self, other): return self.canonical_segments == other.canonical_segments @@ -321,7 +321,7 @@ def get_segments(self): def canonical_segments(self): if not self._canonical_segments: self._canonical_segments = self.get_canonical_segments() - return list(self._canonical_segments) + return tuple(self._canonical_segments) def get_canonical_segments(self): """ diff --git a/tests/test_rubygems_gem_version.py b/tests/test_rubygems_gem_version.py index 6c14a00d..681b0501 100644 --- a/tests/test_rubygems_gem_version.py +++ b/tests/test_rubygems_gem_version.py @@ -181,9 +181,9 @@ def test_split_segments(): def test_canonical_segments(): - assert GemVersion("1.0.0").canonical_segments == [1] - assert GemVersion("1.0.0.a.1.0").canonical_segments == [1, "a", 1] - assert GemVersion("1.2.3-1").canonical_segments == [1, 2, 3, "pre", 1] + assert GemVersion("1.0.0").canonical_segments == (1,) + assert GemVersion("1.0.0.a.1.0").canonical_segments == (1, "a", 1) + assert GemVersion("1.2.3-1").canonical_segments == (1, 2, 3, "pre", 1) def test_frozen_version(): From 1794018640f2c09ddba8ef703643d0e750950ca9 Mon Sep 17 00:00:00 2001 From: Philippe Ombredanne Date: Fri, 10 Feb 2023 11:33:18 +0100 Subject: [PATCH 2/3] Test that GemVersion is hashable Reference: https://github.com/nexB/vulnerablecode/pull/926 Reference: https://github.com/nexB/vulnerablecode/issues/608 Signed-off-by: Philippe Ombredanne --- tests/test_rubygems_gem_version.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_rubygems_gem_version.py b/tests/test_rubygems_gem_version.py index 681b0501..6b3cedf1 100644 --- a/tests/test_rubygems_gem_version.py +++ b/tests/test_rubygems_gem_version.py @@ -185,6 +185,9 @@ def test_canonical_segments(): assert GemVersion("1.0.0.a.1.0").canonical_segments == (1, "a", 1) assert GemVersion("1.2.3-1").canonical_segments == (1, 2, 3, "pre", 1) +def test_GemVersion_is_hashable(): + hash(GemVersion("1.0.0")) + def test_frozen_version(): ver = GemVersion("1.test") From bf190c16a268d1c83713b64c92709f1e3ee38cdd Mon Sep 17 00:00:00 2001 From: Tushar Goel Date: Fri, 10 Feb 2023 16:19:52 +0530 Subject: [PATCH 3/3] Fix formatting tests Signed-off-by: Tushar Goel --- tests/test_rubygems_gem_version.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_rubygems_gem_version.py b/tests/test_rubygems_gem_version.py index 6b3cedf1..63c27f44 100644 --- a/tests/test_rubygems_gem_version.py +++ b/tests/test_rubygems_gem_version.py @@ -185,6 +185,7 @@ def test_canonical_segments(): assert GemVersion("1.0.0.a.1.0").canonical_segments == (1, "a", 1) assert GemVersion("1.2.3-1").canonical_segments == (1, 2, 3, "pre", 1) + def test_GemVersion_is_hashable(): hash(GemVersion("1.0.0"))