test: exhaustively test comparison of versions
This tests all possible combinations of alpha, beta, RC, regular, and patch versions. Also improves code coverage and partitions the version comparison tests into more uniform chunks. Closes Homebrew/homebrew#47669. Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
This commit is contained in:
parent
74baec5e79
commit
301d88544f
@ -15,17 +15,16 @@ class VersionTests < Homebrew::TestCase
|
||||
end
|
||||
|
||||
class VersionComparisonTests < Homebrew::TestCase
|
||||
def test_version_comparisons
|
||||
def test_comparing_regular_versions
|
||||
assert_operator version("0.1"), :==, version("0.1.0")
|
||||
assert_operator version("0.1"), :<, version("0.2")
|
||||
assert_operator version("1.2.3"), :>, version("1.2.2")
|
||||
assert_operator version("1.2.4"), :<, version("1.2.4.1")
|
||||
end
|
||||
|
||||
def test_patchlevel
|
||||
assert_operator version("1.2.3-p34"), :>, version("1.2.3-p33")
|
||||
assert_operator version("1.2.3-p33"), :<, version("1.2.3-p34")
|
||||
assert_operator version("1.2.3-p10"), :>, version("1.2.3-p9")
|
||||
assert_operator version("1.2.3"), :>, version("1.2.3alpha4")
|
||||
assert_operator version("1.2.3"), :>, version("1.2.3beta2")
|
||||
assert_operator version("1.2.3"), :>, version("1.2.3rc3")
|
||||
assert_operator version("1.2.3"), :<, version("1.2.3-p34")
|
||||
end
|
||||
|
||||
def test_HEAD
|
||||
@ -33,14 +32,54 @@ class VersionComparisonTests < Homebrew::TestCase
|
||||
assert_operator version("1.2.3"), :<, version("HEAD")
|
||||
end
|
||||
|
||||
def test_alpha_beta_rc
|
||||
assert_operator version("3.2.0b4"), :<, version("3.2.0")
|
||||
assert_operator version("1.0beta6"), :<, version("1.0b7")
|
||||
assert_operator version("1.0b6"), :<, version("1.0beta7")
|
||||
assert_operator version("1.1alpha4"), :<, version("1.1beta2")
|
||||
assert_operator version("1.1beta2"), :<, version("1.1rc1")
|
||||
assert_operator version("1.0.0beta7"), :<, version("1.0.0")
|
||||
assert_operator version("3.2.1"), :>, version("3.2beta4")
|
||||
def test_comparing_alpha_versions
|
||||
assert_operator version("1.2.3alpha4"), :==, version("1.2.3a4")
|
||||
assert_operator version("1.2.3alpha4"), :==, version("1.2.3A4")
|
||||
assert_operator version("1.2.3alpha4"), :>, version("1.2.3alpha3")
|
||||
assert_operator version("1.2.3alpha4"), :<, version("1.2.3alpha5")
|
||||
assert_operator version("1.2.3alpha4"), :<, version("1.2.3alpha10")
|
||||
|
||||
assert_operator version("1.2.3alpha4"), :<, version("1.2.3beta2")
|
||||
assert_operator version("1.2.3alpha4"), :<, version("1.2.3rc3")
|
||||
assert_operator version("1.2.3alpha4"), :<, version("1.2.3")
|
||||
assert_operator version("1.2.3alpha4"), :<, version("1.2.3-p34")
|
||||
end
|
||||
|
||||
def test_comparing_beta_versions
|
||||
assert_operator version("1.2.3beta2"), :==, version("1.2.3b2")
|
||||
assert_operator version("1.2.3beta2"), :==, version("1.2.3B2")
|
||||
assert_operator version("1.2.3beta2"), :>, version("1.2.3beta1")
|
||||
assert_operator version("1.2.3beta2"), :<, version("1.2.3beta3")
|
||||
assert_operator version("1.2.3beta2"), :<, version("1.2.3beta10")
|
||||
|
||||
assert_operator version("1.2.3beta2"), :>, version("1.2.3alpha4")
|
||||
assert_operator version("1.2.3beta2"), :<, version("1.2.3rc3")
|
||||
assert_operator version("1.2.3beta2"), :<, version("1.2.3")
|
||||
assert_operator version("1.2.3beta2"), :<, version("1.2.3-p34")
|
||||
end
|
||||
|
||||
def test_comparing_rc_versions
|
||||
assert_operator version("1.2.3rc3"), :==, version("1.2.3RC3")
|
||||
assert_operator version("1.2.3rc3"), :>, version("1.2.3rc2")
|
||||
assert_operator version("1.2.3rc3"), :<, version("1.2.3rc4")
|
||||
assert_operator version("1.2.3rc3"), :<, version("1.2.3rc10")
|
||||
|
||||
assert_operator version("1.2.3rc3"), :>, version("1.2.3alpha4")
|
||||
assert_operator version("1.2.3rc3"), :>, version("1.2.3beta2")
|
||||
assert_operator version("1.2.3rc3"), :<, version("1.2.3")
|
||||
assert_operator version("1.2.3rc3"), :<, version("1.2.3-p34")
|
||||
end
|
||||
|
||||
def test_comparing_patchlevel_versions
|
||||
assert_operator version("1.2.3-p34"), :==, version("1.2.3-P34")
|
||||
assert_operator version("1.2.3-p34"), :>, version("1.2.3-p33")
|
||||
assert_operator version("1.2.3-p34"), :<, version("1.2.3-p35")
|
||||
assert_operator version("1.2.3-p34"), :>, version("1.2.3-p9")
|
||||
|
||||
assert_operator version("1.2.3-p34"), :>, version("1.2.3alpha4")
|
||||
assert_operator version("1.2.3-p34"), :>, version("1.2.3beta2")
|
||||
assert_operator version("1.2.3-p34"), :>, version("1.2.3rc3")
|
||||
assert_operator version("1.2.3-p34"), :>, version("1.2.3")
|
||||
end
|
||||
|
||||
def test_comparing_unevenly_padded_versions
|
||||
@ -57,10 +96,6 @@ class VersionComparisonTests < Homebrew::TestCase
|
||||
assert_raises(ArgumentError) { v > Object.new }
|
||||
end
|
||||
|
||||
def test_compare_patchlevel_to_non_patchlevel
|
||||
assert_operator version("9.9.3-P1"), :>, version("9.9.3")
|
||||
end
|
||||
|
||||
def test_erlang_version
|
||||
versions = %w[R16B R15B03-1 R15B03 R15B02 R15B01 R14B04 R14B03
|
||||
R14B02 R14B01 R14B R13B04 R13B03 R13B02-1].reverse
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user