Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/univers/version_range.py
Original file line number Diff line number Diff line change
Expand Up @@ -1449,6 +1449,7 @@ def build_range_from_snyk_advisory_string(scheme: str, string: Union[str, List])
"github": GitHubVersionRange,
"ebuild": EbuildVersionRange,
"alpm": ArchLinuxVersionRange,
"apk": AlpineLinuxVersionRange,
"nginx": NginxVersionRange,
"openssl": OpensslVersionRange,
"mattermost": MattermostVersionRange,
Expand Down
26 changes: 26 additions & 0 deletions tests/test_version_range.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from univers.version_constraint import VersionConstraint
from univers.version_range import PURL_TYPE_BY_GITLAB_SCHEME
from univers.version_range import RANGE_CLASS_BY_SCHEMES
from univers.version_range import AlpineLinuxVersionRange
from univers.version_range import DatetimeVersionRange
from univers.version_range import IntdotVersionRange
from univers.version_range import InvalidVersionRange
Expand All @@ -22,6 +23,7 @@
from univers.version_range import VersionRange
from univers.version_range import build_range_from_snyk_advisory_string
from univers.version_range import from_gitlab_native
from univers.versions import AlpineLinuxVersion
from univers.versions import DatetimeVersion
from univers.versions import IntdotVersion
from univers.versions import LexicographicVersion
Expand Down Expand Up @@ -205,6 +207,29 @@ def test_OpensslVersionRange_from_versions():
assert version_range == expected


def test_AlpineLinuxVersionRange_from_versions():
sequence = ["3.18.0", "2.14.9-r1", "3.0.0"]
expected = AlpineLinuxVersionRange(
constraints=(
VersionConstraint(comparator="=", version=AlpineLinuxVersion(string="2.14.9-r1")),
VersionConstraint(comparator="=", version=AlpineLinuxVersion(string="3.0.0")),
VersionConstraint(comparator="=", version=AlpineLinuxVersion(string="3.18.0")),
)
)
version_range = AlpineLinuxVersionRange.from_versions(sequence)
assert version_range == expected


def test_apk_in_RANGE_CLASS_BY_SCHEMES():
assert RANGE_CLASS_BY_SCHEMES["apk"] is AlpineLinuxVersionRange


def test_alpine_version_range_containment():
vr = AlpineLinuxVersionRange.from_string("vers:apk/>=2.14.9-r1|<3.19.0")
assert AlpineLinuxVersion("3.18.0") in vr
assert AlpineLinuxVersion("3.19.0") not in vr


VERSION_RANGE_TESTS_BY_SCHEME = {
"nginx": ["0.8.40+", "0.7.52-0.8.39", "0.9.10", "1.5.0+, 1.4.1+"],
"npm": [
Expand All @@ -218,6 +243,7 @@ def test_OpensslVersionRange_from_versions():
],
"openssl": ["1.1.1ak", "1.1.0", "3.0.2", "3.0.1, 0.9.7a", "1.0.2ck, 3.1.2"],
"pypi": [">= 1.0", "<2.1.0", "!=5"],
"apk": ["3.18.0", ">=2.14.9-r1", "<3.19.0"],
}


Expand Down