diff options
| author | Ed Flanagan ed@flanagan.xyz | 2017-06-27 03:17:23 -0700 |
|---|---|---|
| committer | Ed Flanagan ed@flanagan.xyz | 2017-06-27 03:17:23 -0700 |
| commit | 700b5e2738fad9aa576df25d494e1d7e69962326 (patch) | |
| tree | f1d6d8f29a0aaeb77930426982c9e7649b1eeb5e /Library | |
| parent | 4fb60d89886758884fae29566fc04de66837f0c6 (diff) | |
| download | brew-700b5e2738fad9aa576df25d494e1d7e69962326.tar.bz2 | |
Add PreToken composite
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/test/version_spec.rb | 15 | ||||
| -rw-r--r-- | Library/Homebrew/version.rb | 27 |
2 files changed, 39 insertions, 3 deletions
diff --git a/Library/Homebrew/test/version_spec.rb b/Library/Homebrew/test/version_spec.rb index 41e05019c..6c8be7677 100644 --- a/Library/Homebrew/test/version_spec.rb +++ b/Library/Homebrew/test/version_spec.rb @@ -93,6 +93,21 @@ describe Version do expect(Version.create("1.2.3beta2")).to be < Version.create("1.2.3-p34") end + specify "comparing pre versions" do + expect(Version.create("1.2.3pre9")).to be == Version.create("1.2.3PRE9") + expect(Version.create("1.2.3pre9")).to be > Version.create("1.2.3pre8") + expect(Version.create("1.2.3pre8")).to be < Version.create("1.2.3pre9") + expect(Version.create("1.2.3pre9")).to be < Version.create("1.2.3pre10") + + expect(Version.create("1.2.3pre3")).to be > Version.create("1.2.3alpha2") + expect(Version.create("1.2.3pre3")).to be > Version.create("1.2.3alpha4") + expect(Version.create("1.2.3pre3")).to be > Version.create("1.2.3beta3") + expect(Version.create("1.2.3pre3")).to be > Version.create("1.2.3beta5") + expect(Version.create("1.2.3pre3")).to be < Version.create("1.2.3rc2") + expect(Version.create("1.2.3pre3")).to be < Version.create("1.2.3") + expect(Version.create("1.2.3pre3")).to be < Version.create("1.2.3-p2") + end + specify "comparing RC versions" do expect(Version.create("1.2.3rc3")).to be == Version.create("1.2.3RC3") expect(Version.create("1.2.3rc3")).to be > Version.create("1.2.3rc2") diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb index f99914c4d..8a86126eb 100644 --- a/Library/Homebrew/version.rb +++ b/Library/Homebrew/version.rb @@ -36,7 +36,7 @@ class Version 0 when NumericToken other.value.zero? ? 0 : -1 - when AlphaToken, BetaToken, RCToken + when AlphaToken, BetaToken, PreToken, RCToken 1 else -1 @@ -103,6 +103,8 @@ class Version case other when AlphaToken rev <=> other.rev + when BetaToken, RCToken, PreToken, PatchToken + -1 else super end @@ -118,6 +120,23 @@ class Version rev <=> other.rev when AlphaToken 1 + when PreToken, RCToken, PatchToken + -1 + else + super + end + end + end + + class PreToken < CompositeToken + PATTERN = /pre[0-9]*/i + + def <=>(other) + case other + when PreToken + rev <=> other.rev + when AlphaToken, BetaToken + 1 when RCToken, PatchToken -1 else @@ -133,7 +152,7 @@ class Version case other when RCToken rev <=> other.rev - when AlphaToken, BetaToken + when AlphaToken, BetaToken, PreToken 1 when PatchToken -1 @@ -150,7 +169,7 @@ class Version case other when PatchToken rev <=> other.rev - when AlphaToken, BetaToken, RCToken + when AlphaToken, BetaToken, RCToken, PreToken 1 else super @@ -161,6 +180,7 @@ class Version SCAN_PATTERN = Regexp.union( AlphaToken::PATTERN, BetaToken::PATTERN, + PreToken::PATTERN, RCToken::PATTERN, PatchToken::PATTERN, NumericToken::PATTERN, @@ -289,6 +309,7 @@ class Version when /\A#{AlphaToken::PATTERN}\z/o then AlphaToken when /\A#{BetaToken::PATTERN}\z/o then BetaToken when /\A#{RCToken::PATTERN}\z/o then RCToken + when /\A#{PreToken::PATTERN}\z/o then PreToken when /\A#{PatchToken::PATTERN}\z/o then PatchToken when /\A#{NumericToken::PATTERN}\z/o then NumericToken when /\A#{StringToken::PATTERN}\z/o then StringToken |
