Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add PreToken composite #2828

Merged
merged 1 commit into from
Jun 29, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 15 additions & 0 deletions Library/Homebrew/test/version_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,21 @@
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")
Expand Down
27 changes: 24 additions & 3 deletions Library/Homebrew/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def <=>(other)
0
when NumericToken
other.value.zero? ? 0 : -1
when AlphaToken, BetaToken, RCToken
when AlphaToken, BetaToken, PreToken, RCToken
1
else
-1
Expand Down Expand Up @@ -103,6 +103,8 @@ def <=>(other)
case other
when AlphaToken
rev <=> other.rev
when BetaToken, RCToken, PreToken, PatchToken
-1
else
super
end
Expand All @@ -118,6 +120,23 @@ def <=>(other)
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
Expand All @@ -133,7 +152,7 @@ def <=>(other)
case other
when RCToken
rev <=> other.rev
when AlphaToken, BetaToken
when AlphaToken, BetaToken, PreToken
1
when PatchToken
-1
Expand All @@ -150,7 +169,7 @@ def <=>(other)
case other
when PatchToken
rev <=> other.rev
when AlphaToken, BetaToken, RCToken
when AlphaToken, BetaToken, RCToken, PreToken
1
else
super
Expand All @@ -161,6 +180,7 @@ def <=>(other)
SCAN_PATTERN = Regexp.union(
AlphaToken::PATTERN,
BetaToken::PATTERN,
PreToken::PATTERN,
RCToken::PATTERN,
PatchToken::PATTERN,
NumericToken::PATTERN,
Expand Down Expand Up @@ -289,6 +309,7 @@ def tokenize
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
Expand Down