diff --git a/src/univers/version_range.py b/src/univers/version_range.py index 6068b325..3b4b053d 100644 --- a/src/univers/version_range.py +++ b/src/univers/version_range.py @@ -1092,6 +1092,11 @@ def from_native(cls, string): return cls(constraints=constraints) +class MattermostVersionRange(VersionRange): + scheme = "mattermost" + version_class = versions.SemverVersion + + def from_gitlab_native(gitlab_scheme, string): purl_scheme = PURL_TYPE_BY_GITLAB_SCHEME[gitlab_scheme] vrc = RANGE_CLASS_BY_SCHEMES[purl_scheme] @@ -1217,6 +1222,7 @@ def build_range_from_github_advisory_constraint(scheme: str, string: str): "alpm": ArchLinuxVersionRange, "nginx": NginxVersionRange, "openssl": OpensslVersionRange, + "mattermost": MattermostVersionRange, } PURL_TYPE_BY_GITLAB_SCHEME = { diff --git a/tests/test_version_range.py b/tests/test_version_range.py index a7ee2779..a709d012 100644 --- a/tests/test_version_range.py +++ b/tests/test_version_range.py @@ -10,6 +10,7 @@ from univers.version_constraint import VersionConstraint from univers.version_range import GemVersionRange +from univers.version_range import MattermostVersionRange from univers.version_range import from_gitlab_native from univers.version_range import NugetVersionRange from univers.version_range import InvalidVersionRange @@ -413,3 +414,17 @@ def test_invert(): vers_with_star_operator = VersionRange.from_string("vers:gem/*") assert vers_with_star_operator.invert() == None + + +def test_mattermost_version_range(): + assert MattermostVersionRange( + constraints=[ + VersionConstraint(comparator="=", version=SemverVersion("5.0")), + ] + ) == VersionRange.from_string("vers:mattermost/5.0") + + assert MattermostVersionRange( + constraints=[ + VersionConstraint(comparator=">=", version=SemverVersion("5.0")), + ] + ) == VersionRange.from_string("vers:mattermost/>=5.0")