Skip to content

Latest commit

 

History

History
150 lines (98 loc) · 4.57 KB

Upgrade.rdoc

File metadata and controls

150 lines (98 loc) · 4.57 KB

Upgrade to rspec-1.2.3

What’s Changed

Matcher DSL

Use Spec::Matchers.define instead of Spec::Matchers.create (which is now deprecated).

Explicit Predicate Matchers are deprecated

With the addition of the new Matcher DSL the old, confusing, and almost-nobody-uses-it explicit predicate matcher functionality’s days are now numbered.

If you’re not familiar with this feature, don’t worry about it. If you have anything that looks like this:

predicate_matchers[:swim] = :can_swim?

Or this

config.predicate_matchers[:swim] = :can_swim?

Change it to this:

Spec::Matchers.define :swim do
  match do |potential_swimmer|
    potential_swimmer.can_swim?
  end
end

Custom Formatters

If you have an custom formatter, the add_example_group method has been changed to example_group_started, and kept as an alias so your formatters will still work. Though not yet, add_example_group will be deprecated in a future minor release, and removed in a future major release, so we recommend you make this change now.

Upgrade to rspec-1.2.2

What’s Changed

require 'rubygems' unless ENV['NO_RUBYGEMS']

After minor public outcry and confusion, we restored necessary references to rubygems in rspec. If you use a different mechanism for managing gems, just set a NO_RUBYGEMS environment variable (to any non-nil value).

Proxies and locations

This is probably only interesting to you if you use custom formatters.

Formatters now receive Spec::Example::ExampleGroupProxy and Spec::Example::ExampleGroup objects with cohesive APIs for reporting. See the RDoc for those classes and Spec::Runner::Formatter::BaseFormatter for more information.

What’s new

The new matcher DSL works with test/unit (without the rest of rspec)

We’ll be separating this out to its own gem for rspec 2.0, but for now, just install rspec >= 1.2.1 and add the following to your test_helper file:

require 'spec/expectations'
class Test::Unit::TestCase
  include Spec::Matchers
end

This will add should() and should_not() to your objects, make all of rspec’s built-in matchers available to your tests, INCLUDING rspec’s DSL for creating matchers (see below, under Upgrade to rspec-1.2.0)

debugger

If you have ruby-debug installed, you can set a breakpoint by adding debugger() in your code:

# some code .....
debugger
# some more code ....

… and using the --debugger or -u command line option.

spec path/to/file.rb --debugger

Upgrade to rspec-1.2.0

What’s Changed

WARNINGS

  • If you use the ruby command to run specs instead of the spec command, you’ll need to require ‘spec/autorun’ or they won’t run. This won’t affect you if you use the spec command or the Spec::Rake::SpecTask that ships with RSpec.

  • require ‘spec/test/unit’ to invoke test/unit interop if you’re using RSpec’s core (this is handled implicitly with spec-rails)

  • setup and teardown are gone - use before and after instead

    • you can still use setup and teardown if you’re using Test::Unit::TestCase as the base ExampleGroup class (which is implicit in rspec-rails)

  • The matcher protocol has been improved. The old protocol is still supported, but we added support for two new methods that speak a bit more clearly:

    failure_message          => failure_message_for_should
    negative_failure_message => failure_message_for_should_not
    
  • All references to rubygems have been removed from within rspec’s code.

What’s New

Ruby 1.9

RSpec now works with Ruby 1.9.1. See wiki.github.com/dchelimsky/rspec/ruby-191 for useful information.

Improved heckle integration

RSpec works with heckle again! Gotta use heckle >= 1.4.2 for this to work though, and it only works with ruby-1.8.6 and 1.8.7 (heckle doesn’t support 1.9.1 yet).

[sudo] gem install heckle --version ">=1.4.2"
spec spec/game/mastermind.rb --heckle Game::Mastermind

New Matcher DSL

We’ve added a new DSL for generating custom matchers very simply and cleanly. We’ll still support the simple_matcher method, so never fear if you’re using that, but we recommend that you start developing your new matchers with this new syntax.

Spec::Matchers.create :be_a_multiple_of do |smaller|
  match do |bigger|
    bigger % smaller == 0
  end
end

9.should be_a_multiple_of(3)

See features/matchers/define_matcher.feature for more examples