diff options
| author | Jack Nagel | 2013-06-05 21:52:48 -0500 |
|---|---|---|
| committer | Jack Nagel | 2013-06-05 22:03:58 -0500 |
| commit | 28acfbba51ea1e4e67365e5c9fa666d0c5ca9db5 (patch) | |
| tree | a014be0b318090b1926ce167a05bfbbaeb019a13 /Library/Homebrew/test | |
| parent | 3e5ac7e55c4700830cc4653084dfdbbe034d884e (diff) | |
| download | brew-28acfbba51ea1e4e67365e5c9fa666d0c5ca9db5.tar.bz2 | |
Improve tokenization of version strings
Tokens like "b4", "beta1", "p195", &c. are now treated as atoms rather
than being broken down even further. Additionally, we enable support for
padding in the middle of versions strings, so we can successfully
compare something like "2.1-p195" with "2.1.0-p194" by inferring that
"2.1" is really "2.1.0".
This fixes the comparison "9.9.3-P1" > "9.9.3" which previously has not
been handled correctly.
Diffstat (limited to 'Library/Homebrew/test')
| -rw-r--r-- | Library/Homebrew/test/test_versions.rb | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb index e414054ef..cd88bd37c 100644 --- a/Library/Homebrew/test/test_versions.rb +++ b/Library/Homebrew/test/test_versions.rb @@ -8,10 +8,20 @@ class VersionComparisonTests < Test::Unit::TestCase 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.3-p34'), :>, version('1.2.3-p33') 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') + end + + def test_HEAD assert_operator version('HEAD'), :>, version('1.2.3') 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') @@ -19,13 +29,18 @@ class VersionComparisonTests < Test::Unit::TestCase 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') - assert_nil version('1.0') <=> 'foo' end - def test_version_queries - assert Version.new("1.1alpha1").alpha? - assert Version.new("1.0beta2").beta? - assert Version.new("1.0rc-1").rc? + def test_comparing_unevenly_padded_versions + assert_operator version('2.1.0-p194'), :<, version('2.1-p195') + assert_operator version('2.1-p195'), :>, version('2.1.0-p194') + assert_operator version('2.1-p194'), :<, version('2.1.0-p195') + assert_operator version('2.1.0-p195'), :>, version('2.1-p194') + assert_operator version('2-p194'), :<, version('2.1-p195') + end + + def test_comparison_returns_nil_for_non_version + assert_nil version('1.0') <=> 'foo' end def test_compare_patchlevel_to_non_patchlevel |
