lib/bundler/source.rb in bundler-1.14.6 vs lib/bundler/source.rb in bundler-1.15.0.pre.1
- old
+ new
@@ -18,11 +18,11 @@
if Bundler.locked_gems
locked_spec = Bundler.locked_gems.specs.find {|s| s.name == spec.name }
locked_spec_version = locked_spec.version if locked_spec
if locked_spec_version && spec.version != locked_spec_version
- message += Bundler.ui.add_color(" (was #{locked_spec_version})", :green)
+ message += Bundler.ui.add_color(" (was #{locked_spec_version})", version_color(spec.version, locked_spec_version))
end
end
message
end
@@ -35,8 +35,24 @@
other == self
end
def inspect
"#<#{self.class}:0x#{object_id} #{self}>"
+ end
+
+ private
+
+ def version_color(spec_version, locked_spec_version)
+ if Gem::Version.correct?(spec_version) && Gem::Version.correct?(locked_spec_version)
+ # display yellow if there appears to be a regression
+ earlier_version?(spec_version, locked_spec_version) ? :yellow : :green
+ else
+ # default to green if the versions cannot be directly compared
+ :green
+ end
+ end
+
+ def earlier_version?(spec_version, locked_spec_version)
+ Gem::Version.new(spec_version) < Gem::Version.new(locked_spec_version)
end
end
end