|
| 1 | +# |
| 2 | +# Copyright (c) nexB Inc. and others. |
| 3 | +# SPDX-License-Identifier: Apache-2.0 |
| 4 | +# |
| 5 | +# Visit https://aboutcode.org and https://github.com/nexB/univers for support and download. |
| 6 | + |
| 7 | +from univers.version_constraint import VersionConstraint |
| 8 | +from univers.versions import AlpineLinuxVersion |
| 9 | +from univers.versions import ArchLinuxVersion |
| 10 | +from univers.versions import ComposerVersion |
| 11 | +from univers.versions import DebianVersion |
| 12 | +from univers.versions import EnhancedSemanticVersion |
| 13 | +from univers.versions import GentooVersion |
| 14 | +from univers.versions import GolangVersion |
| 15 | +from univers.versions import MavenVersion |
| 16 | +from univers.versions import NginxVersion |
| 17 | +from univers.versions import NugetVersion |
| 18 | +from univers.versions import PypiVersion |
| 19 | +from univers.versions import RpmVersion |
| 20 | +from univers.versions import RubygemsVersion |
| 21 | +from univers.versions import SemverVersion |
| 22 | +from univers.versions import Version |
| 23 | + |
| 24 | + |
| 25 | +def test_version(): |
| 26 | + assert Version("1.2.3") == Version("1.2.3") |
| 27 | + assert Version("1.2.3") != Version("1.2.4") |
| 28 | + assert Version.is_valid("1.2.3") |
| 29 | + assert not Version.is_valid(None) |
| 30 | + assert Version.normalize("v1.2.3") == "1.2.3" |
| 31 | + assert Version("1.2.3").satisfies(VersionConstraint(comparator=">=", version=Version("1.2.3"))) |
| 32 | + |
| 33 | + |
| 34 | +def test_pypi_version(): |
| 35 | + assert PypiVersion("1.2.3") == PypiVersion("1.2.3") |
| 36 | + assert PypiVersion("1.2.3") != PypiVersion("1.2.4") |
| 37 | + assert PypiVersion("1") == PypiVersion("1.0") |
| 38 | + assert PypiVersion.is_valid("1.2.3") |
| 39 | + assert not PypiVersion.is_valid("1.2.3a-1-a") |
| 40 | + assert PypiVersion.normalize("v1.2.3") == "1.2.3" |
| 41 | + assert PypiVersion("1").satisfies( |
| 42 | + VersionConstraint(comparator=">=", version=PypiVersion("1.0.0")) |
| 43 | + ) |
| 44 | + assert PypiVersion("2.4") == PypiVersion("2.4.0") |
| 45 | + assert PypiVersion("2.5") > PypiVersion("2.4.0") |
| 46 | + assert PypiVersion("2.5") != PypiVersion("2.4.0") |
| 47 | + assert PypiVersion("2.4") < PypiVersion("2.5.0") |
| 48 | + assert PypiVersion("2.6") >= PypiVersion("2.5.0") |
| 49 | + assert PypiVersion("2.3") <= PypiVersion("2.5.0") |
| 50 | + assert PypiVersion("2.6") >= PypiVersion("2.6.0") |
| 51 | + assert PypiVersion("2.5") <= PypiVersion("2.5.0") |
| 52 | + |
| 53 | + |
| 54 | +def test_enhanced_semantic_version(): |
| 55 | + assert EnhancedSemanticVersion("1.2.3-pre.1+build.1") != EnhancedSemanticVersion( |
| 56 | + "1.2.3-pre.1+build.0" |
| 57 | + ) |
| 58 | + assert EnhancedSemanticVersion("1.2.3-pre.1+build.1") > EnhancedSemanticVersion( |
| 59 | + "1.2.3-pre.1+build.0" |
| 60 | + ) |
| 61 | + assert ( |
| 62 | + EnhancedSemanticVersion("1.2.3-pre.1+build.1").precedence_key |
| 63 | + != EnhancedSemanticVersion("1.2.3-pre.1+build.0").precedence_key |
| 64 | + ) |
| 65 | + |
| 66 | + |
| 67 | +def test_semver_version(): |
| 68 | + assert SemverVersion.is_valid("1.2.3") |
| 69 | + assert SemverVersion.is_valid("1.2.3-pre.1+build.1") |
| 70 | + version = SemverVersion("1.2.3-pre.1+build.1") |
| 71 | + assert version.major == 1 |
| 72 | + assert version.minor == 2 |
| 73 | + assert version.patch == 3 |
| 74 | + assert version.prerelease == ("pre", "1") |
| 75 | + assert version.build == ("build", "1") |
| 76 | + assert version.next_major() == SemverVersion("2.0.0") |
| 77 | + assert version.next_minor() == SemverVersion("1.3.0") |
| 78 | + assert version.next_patch() == SemverVersion("1.2.3") |
| 79 | + assert SemverVersion("1.2.3").next_patch() == SemverVersion("1.2.4") |
| 80 | + assert version.satisfies( |
| 81 | + VersionConstraint(comparator=">=", version=SemverVersion("1.2.3-pre.1+build.1")) |
| 82 | + ) |
| 83 | + assert SemverVersion("1.0.0") == SemverVersion("1.0") |
| 84 | + assert SemverVersion("1.2.3+42") != SemverVersion("1.2.3+23") |
| 85 | + assert SemverVersion("1.2.3+42") > SemverVersion("1.2.3+23") |
| 86 | + |
| 87 | + |
| 88 | +def test_nginx_version(): |
| 89 | + assert NginxVersion("1.2").is_stable |
| 90 | + assert NginxVersion("1.2.3").is_stable |
| 91 | + assert not NginxVersion("1.3.0").is_stable |
| 92 | + assert NginxVersion("1.0.0") == NginxVersion("1") |
| 93 | + assert NginxVersion("1.0.0") == NginxVersion("1.0") |
| 94 | + assert NginxVersion("1.0.0") == NginxVersion("1.0.0") |
| 95 | + assert NginxVersion("1.0") > NginxVersion("0.3.0") |
| 96 | + assert NginxVersion("0.1.0") < NginxVersion("0.3.0") |
| 97 | + assert NginxVersion("0.1") != NginxVersion("0.1.1") |
| 98 | + assert NginxVersion("0.1.1") >= NginxVersion("0.1") |
| 99 | + assert NginxVersion("0.1.1") >= NginxVersion("0.1.1") |
| 100 | + assert NginxVersion("0.1.1") <= NginxVersion("0.1.1") |
| 101 | + assert NginxVersion("0.1.1") <= NginxVersion("0.1.2") |
| 102 | + |
| 103 | + |
| 104 | +def test_rubygems_version(): |
| 105 | + assert RubygemsVersion("1.2.0") == RubygemsVersion("1.2") |
| 106 | + assert RubygemsVersion.is_valid("1.2ab") |
| 107 | + assert RubygemsVersion.is_valid("1.2.3.a.b.c.d") |
| 108 | + assert not RubygemsVersion.is_valid("aa") |
| 109 | + assert RubygemsVersion("1.3.0") == RubygemsVersion("1.3") |
| 110 | + assert RubygemsVersion("1.3.0") <= RubygemsVersion("1.3") |
| 111 | + assert RubygemsVersion("1.1.3") <= RubygemsVersion("1.3") |
| 112 | + assert RubygemsVersion("1.4.pre") >= RubygemsVersion("1.3") |
| 113 | + assert RubygemsVersion("1.4.pre") != RubygemsVersion("1.4") |
| 114 | + |
| 115 | + |
| 116 | +def test_arch_linux_version(): |
| 117 | + assert ArchLinuxVersion("1.2.3-1") == ArchLinuxVersion("1.2.3-1") |
| 118 | + assert ArchLinuxVersion("1.2.3-1") != ArchLinuxVersion("1.2.3-2") |
| 119 | + assert ArchLinuxVersion("1.2.3-1") > ArchLinuxVersion("1.2.3-0") |
| 120 | + assert ArchLinuxVersion("1.2.3-1") < ArchLinuxVersion("1.2.3-2") |
| 121 | + assert ArchLinuxVersion("1.2.3-1") >= ArchLinuxVersion("1.2.3-1") |
| 122 | + assert ArchLinuxVersion("1.2.3-1") <= ArchLinuxVersion("1.2.3-1") |
| 123 | + |
| 124 | + |
| 125 | +def test_debian_version(): |
| 126 | + assert DebianVersion("1.2.3-1") == DebianVersion("1.2.3-1") |
| 127 | + assert not DebianVersion.is_valid("n") |
| 128 | + assert DebianVersion.is_valid("1.2.3-1") |
| 129 | + assert DebianVersion("1.2.3-1") == DebianVersion("1.2.3-1") |
| 130 | + assert DebianVersion("1.2.3-1") != DebianVersion("1.2.3-2") |
| 131 | + assert DebianVersion("1.2.3-1") > DebianVersion("1.2.3-0") |
| 132 | + assert DebianVersion("1.2.3-1") < DebianVersion("1.2.3-2") |
| 133 | + assert DebianVersion("1.2.3-1") >= DebianVersion("1.2.3-1") |
| 134 | + assert DebianVersion("1.2.3-1") <= DebianVersion("1.2.3-1") |
| 135 | + |
| 136 | + |
| 137 | +def test_maven_version(): |
| 138 | + assert MavenVersion("1.2.3") == MavenVersion("1.2.3") |
| 139 | + assert MavenVersion("1.2.3") != MavenVersion("1.2.4") |
| 140 | + assert MavenVersion("1") == MavenVersion("1.0") |
| 141 | + assert MavenVersion.is_valid("1.2.3") |
| 142 | + assert MavenVersion("1.2.3") == MavenVersion("1.2.3") |
| 143 | + assert MavenVersion("1.2.3") != MavenVersion("1.2.4") |
| 144 | + assert MavenVersion("1.2.3") > MavenVersion("1.2.2") |
| 145 | + assert MavenVersion("1.2.3") < MavenVersion("1.2.4") |
| 146 | + assert MavenVersion("1.2.3") >= MavenVersion("1.2.3") |
| 147 | + assert MavenVersion("1.2.3") <= MavenVersion("1.2.3") |
| 148 | + |
| 149 | + |
| 150 | +def test_nuget_version(): |
| 151 | + assert NugetVersion("1.2.3") == NugetVersion("1.2.3") |
| 152 | + assert NugetVersion("1.2.3") != NugetVersion("1.2.4") |
| 153 | + assert NugetVersion("1") == NugetVersion("1.0") |
| 154 | + assert NugetVersion.is_valid("1.2.3") |
| 155 | + assert not NugetVersion.is_valid("1.2.3a-1-a") |
| 156 | + |
| 157 | + |
| 158 | +def test_rpm_version(): |
| 159 | + assert RpmVersion("1.2.3-1") == RpmVersion("1.2.3-1") |
| 160 | + assert RpmVersion("1.2.3-1") != RpmVersion("1.2.3-2") |
| 161 | + assert RpmVersion("1.2.3-1") > RpmVersion("1.2.3-0") |
| 162 | + assert RpmVersion("1.2.3-1") < RpmVersion("1.2.3-2") |
| 163 | + assert RpmVersion("1.2.3-1") >= RpmVersion("1.2.3-1") |
| 164 | + assert RpmVersion("1.2.3-1") <= RpmVersion("1.2.3-1") |
| 165 | + |
| 166 | + |
| 167 | +def test_gentoo_version(): |
| 168 | + assert GentooVersion("1.2.3") == GentooVersion("1.2.3") |
| 169 | + assert GentooVersion("1.2.3") != GentooVersion("1.2.4") |
| 170 | + assert GentooVersion.is_valid("1.2.3") |
| 171 | + assert not GentooVersion.is_valid("1.2.3a-1-a") |
| 172 | + |
| 173 | + |
| 174 | +def test_alpine_linux_version(): |
| 175 | + assert AlpineLinuxVersion("1.2.3-r1") == AlpineLinuxVersion("1.2.3-r1") |
| 176 | + assert AlpineLinuxVersion("1.2.3-r1") != AlpineLinuxVersion("1.2.3-r2") |
| 177 | + assert AlpineLinuxVersion("1.2.3-r1") > AlpineLinuxVersion("1.2.3-r0") |
| 178 | + assert AlpineLinuxVersion("1.2.3-r1") < AlpineLinuxVersion("1.2.3-r2") |
| 179 | + assert AlpineLinuxVersion("1.2.3-r1") >= AlpineLinuxVersion("1.2.3-r1") |
| 180 | + assert AlpineLinuxVersion("1.2.3-r1") <= AlpineLinuxVersion("1.2.3-r1") |
| 181 | + assert AlpineLinuxVersion.is_valid("1.2.3-r1") |
| 182 | + assert not AlpineLinuxVersion.is_valid("007") |
| 183 | + |
| 184 | + |
| 185 | +def test_composer_version(): |
| 186 | + assert ComposerVersion("1.2.3") == ComposerVersion("1.2.3") |
| 187 | + assert ComposerVersion("1.2.3") != ComposerVersion("1.2.4") |
| 188 | + assert ComposerVersion("1") == ComposerVersion("1.0") |
| 189 | + assert ComposerVersion("v1.0") == ComposerVersion("1.0") |
| 190 | + assert ComposerVersion.is_valid("1.2.3") |
| 191 | + assert ComposerVersion.is_valid("1.2.3a-1-a") |
| 192 | + assert ComposerVersion("1.0.0") == ComposerVersion("v1") |
| 193 | + assert ComposerVersion("1.0.0") == ComposerVersion("v1.0") |
| 194 | + assert ComposerVersion("1.0.0") == ComposerVersion("v1.0.0") |
| 195 | + assert ComposerVersion("v1.0") > ComposerVersion("v0.3.0") |
| 196 | + assert ComposerVersion("v0.1.0") < ComposerVersion("v0.3.0") |
| 197 | + assert ComposerVersion("v0.1") != ComposerVersion("v0.1.1") |
| 198 | + assert ComposerVersion("v0.1.1") >= ComposerVersion("v0.1") |
| 199 | + assert ComposerVersion("v0.1.1") >= ComposerVersion("v0.1.1") |
| 200 | + assert ComposerVersion("v0.1.1") <= ComposerVersion("v0.1.1") |
| 201 | + assert ComposerVersion("v0.1.1") <= ComposerVersion("v0.1.2") |
| 202 | + |
| 203 | + |
| 204 | +def test_golang_version(): |
| 205 | + assert GolangVersion("1.2.3") == GolangVersion("1.2.3") |
| 206 | + assert GolangVersion("1.2.3") != GolangVersion("1.2.4") |
| 207 | + assert GolangVersion("1") == GolangVersion("1.0") |
| 208 | + assert GolangVersion("v1.0") == GolangVersion("1.0") |
| 209 | + assert GolangVersion.is_valid("1.2.3") |
| 210 | + assert GolangVersion.is_valid("1.2.3a-1-a") |
| 211 | + assert GolangVersion("1.0.0") == GolangVersion("v1") |
| 212 | + assert GolangVersion("1.0.0") == GolangVersion("v1.0") |
| 213 | + assert GolangVersion("1.0.0") == GolangVersion("v1.0.0") |
| 214 | + assert GolangVersion("v1.0") > GolangVersion("v0.3.0") |
| 215 | + assert GolangVersion("v0.1.0") < GolangVersion("v0.3.0") |
| 216 | + assert GolangVersion("v0.1") != GolangVersion("v0.1.1") |
| 217 | + assert GolangVersion("v0.1.1") >= GolangVersion("v0.1") |
| 218 | + assert GolangVersion("v0.1.1") >= GolangVersion("v0.1.1") |
| 219 | + assert GolangVersion("v0.1.1") <= GolangVersion("v0.1.1") |
| 220 | + assert GolangVersion("v0.1.1") <= GolangVersion("v0.1.2") |
0 commit comments