summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-04-07 13:23:12 +0200
committerFlorian Bruhin <me@the-compiler.org>2021-04-07 13:23:12 +0200
commitc3d1b71c6f08607f47353f406aca0168bb3062a1 (patch)
treee505b9b7b002301f4570bac33ab0b8e289cd88c0
parent85a41de4b54cf3da6ab8c0d41222b76836238536 (diff)
downloadqutebrowser-c3d1b71c6f08607f47353f406aca0168bb3062a1.tar.gz
qutebrowser-c3d1b71c6f08607f47353f406aca0168bb3062a1.zip
Handle version numbers with >3 digits
Closes #6354
-rw-r--r--doc/changelog.asciidoc2
-rw-r--r--qutebrowser/utils/utils.py4
-rw-r--r--tests/unit/utils/test_utils.py3
-rw-r--r--tests/unit/utils/test_version.py10
4 files changed, 16 insertions, 3 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc
index c94b99a39..dd1e7b86f 100644
--- a/doc/changelog.asciidoc
+++ b/doc/changelog.asciidoc
@@ -123,6 +123,8 @@ Fixed
workaround which prevents the hang.
- QtWebEngine version detection (influencing things like dark mode settings or
certain workarounds) now works correctly on OpenBSD.
+- Certain version number formats in `/etc/os-release` caused qutebrowser to
+ crash. Those are now handled correctly.
Removed
~~~~~~~
diff --git a/qutebrowser/utils/utils.py b/qutebrowser/utils/utils.py
index 2a47d60aa..762d2d370 100644
--- a/qutebrowser/utils/utils.py
+++ b/qutebrowser/utils/utils.py
@@ -87,7 +87,7 @@ class VersionNumber:
"""A representation of a version number."""
def __init__(self, *args: int) -> None:
- self._ver = QVersionNumber(*args)
+ self._ver = QVersionNumber(args) # not *args, to support >3 components
if self._ver.isNull():
raise ValueError("Can't construct a null version")
@@ -102,8 +102,6 @@ class VersionNumber:
self.patch = self._ver.microVersion()
self.segments = self._ver.segments()
- assert len(self.segments) <= 3, self.segments
-
def __str__(self) -> str:
return ".".join(str(s) for s in self.segments)
diff --git a/tests/unit/utils/test_utils.py b/tests/unit/utils/test_utils.py
index 734758957..57adc883c 100644
--- a/tests/unit/utils/test_utils.py
+++ b/tests/unit/utils/test_utils.py
@@ -57,6 +57,7 @@ class TestVersionNumber:
(VersionNumber(5, 15, 2), '5.15.2'),
(VersionNumber(5, 15), '5.15'),
(VersionNumber(5), '5'),
+ (VersionNumber(1, 2, 3, 4), '1.2.3.4'),
])
def test_str(self, num, expected):
assert str(num) == expected
@@ -69,6 +70,7 @@ class TestVersionNumber:
(VersionNumber(5, 15, 2), VersionNumber(5, 15)),
(VersionNumber(5, 15), VersionNumber(5, 15)),
(VersionNumber(6), VersionNumber(6)),
+ (VersionNumber(1, 2, 3, 4), VersionNumber(1, 2)),
])
def test_strip_patch(self, num, expected):
assert num.strip_patch() == expected
@@ -79,6 +81,7 @@ class TestVersionNumber:
('5.15', VersionNumber(5, 15)),
('5.15.3', VersionNumber(5, 15, 3)),
('5.15.3.dev1234', VersionNumber(5, 15, 3)),
+ ('1.2.3.4', VersionNumber(1, 2, 3, 4)),
])
def test_parse_valid(self, s, expected):
assert VersionNumber.parse(s) == expected
diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py
index d38671e9e..e79b87794 100644
--- a/tests/unit/utils/test_version.py
+++ b/tests/unit/utils/test_version.py
@@ -259,6 +259,16 @@ except ImportError:
id='nixos', parsed=version.Distribution.nixos,
version=utils.VersionNumber(21, 3),
pretty='NixOS 21.03 (Okapi)')),
+ # NixOS (fake fourth version component)
+ ("""
+ NAME=NixOS
+ ID=nixos
+ VERSION="21.05.20210402.1dead (Okapi)"
+ """,
+ version.DistributionInfo(
+ id='nixos', parsed=version.Distribution.nixos,
+ version=utils.VersionNumber(21, 5, 20210402, 1),
+ pretty='NixOS')),
# SolusOS
("""
NAME="Solus"