Skip to content

Instantly share code, notes, and snippets.

@nbibler
Last active December 14, 2015 09:29
Show Gist options
  • Save nbibler/5065505 to your computer and use it in GitHub Desktop.
Save nbibler/5065505 to your computer and use it in GitHub Desktop.
How to use the Rubygems version requirement verification checking system.
require 'rspec'
module SatisfyMatcher
class Matcher
def initialize(requirements)
@requirements = requirements
end
def matches?(version)
@version = version
Gem::Requirement.new(@requirements) =~ Gem::Version.new(@version)
end
def description
"satisfy a #{@requirements.inspect} requirement"
end
def failure_message
"#{@version} satisfied a #{@requirements.inspect} requirement"
end
def negative_failure_message
"#{@version} unexpectedly satisfied a #{@requirements.inspect} requirement"
end
end
def satisfy(version)
Matcher.new(version)
end
end
RSpec.configure do |config|
config.include(SatisfyMatcher)
end
describe "Gem version checking" do
context "a \"1.3.5\" gem" do
subject { '1.3.5' }
it { should satisfy('=1.3.5') }
it { should satisfy('>=1.3') }
it { should satisfy('>=1.3.5') }
it { should satisfy('~>1.3.5') }
it { should satisfy(%w[>1.0 <3.1]) }
it { should_not satisfy('<1.3.5') }
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment