From 301d88544f1b1336eb32817bfc0efc05fc5023ac Mon Sep 17 00:00:00 2001 From: Martin Afanasjew Date: Mon, 4 Jan 2016 15:17:15 +0100 Subject: 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 --- Library/Homebrew/test/test_versions.rb | 71 +++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 18 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb index 87dd28339..d0b57a531 100644 --- a/Library/Homebrew/test/test_versions.rb +++ b/Library/Homebrew/test/test_versions.rb @@ -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 -- cgit v1.2.3