Commit 844e7e41 authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

tests(version): add unit tests for Version

parent 2acfab4b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ include:
  - component: "gitlab.com/$TBC_NAMESPACE/python/gitlab-ci-python@7"
    inputs:
      image: "registry.hub.docker.com/library/python:3.12-slim"
      pytest-enabled: true
      ruff-enabled: true
      package-enabled: true
      release-enabled: true
+4 −2
Original line number Diff line number Diff line
@@ -158,6 +158,7 @@ class Version:
            for i in range(min(len(self_prerelease), len(other_prerelease))):
                if self_prerelease[i] != other_prerelease[i]:
                    return 1 if self_prerelease[i] > other_prerelease[i] else -1
            if len(self_prerelease) != len(other_prerelease):
                return 1 if len(self_prerelease) > len(other_prerelease) else -1
        elif self.prerelease:
            return -1
@@ -171,6 +172,7 @@ class Version:
            for i in range(min(len(self_build), len(other_build))):
                if self_build[i] != other_build[i]:
                    return 1 if self_build[i] > other_build[i] else -1
            if len(self_build) != len(other_build):
                return 1 if len(self_build) > len(other_build) else -1
        elif self.build:
            return 1

tests/test_version.py

0 → 100644
+78 −0
Original line number Diff line number Diff line
import pytest

from sbom_scanner.scan import Version


def test_parse_simple():
    v = Version("1.2.3")
    assert v.major == 1
    assert v.minor == 2
    assert v.patch == 3


def test_parse_w_prerelease():
    v = Version("1.2.3-beta4")
    assert v.major == 1
    assert v.minor == 2
    assert v.patch == 3
    assert v.prerelease == "beta4"


def test_parse_w_build():
    v = Version("1.2.3+linux")
    assert v.major == 1
    assert v.minor == 2
    assert v.patch == 3
    assert v.build == "linux"


def test_parse_w_prerelease_and_build():
    v = Version("1.2.3-beta4+linux")
    assert v.major == 1
    assert v.minor == 2
    assert v.patch == 3
    assert v.prerelease == "beta4"
    assert v.build == "linux"


def test_parse_fail():
    with pytest.raises(ValueError):
        # bad version string
        Version("not.a.version")


def test_lt_1():
    v1 = Version("1.2.3")
    v2 = Version("1.2.4")
    assert v1 < v2


def test_lt_2():
    v1 = Version("1.2.3")
    v2 = Version("1.3.0")
    assert v1 < v2


def test_lt_3():
    v1 = Version("1.2.3")
    v2 = Version("2.0.0")
    assert v1 < v2


def test_lt_4():
    v1 = Version("1.2.3-beta1")
    v2 = Version("1.2.3-beta2")
    assert v1 < v2


def test_lt_5():
    v1 = Version("1.2.3-alpha1")
    v2 = Version("1.2.3-beta1")
    assert v1 < v2


def test_eq():
    v1 = Version("1.2.3-beta1")
    v2 = Version("1.2.3-beta1")
    assert v1._compare(v2) == 0
    assert v1 == v2