Skip to content

Instantly share code, notes, and snippets.

@fj
Created April 26, 2010 20:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fj/379817 to your computer and use it in GitHub Desktop.
Save fj/379817 to your computer and use it in GitHub Desktop.

I'm trying to be diligent about checking my rake tasks with RSpec tests, but in the process of feeling my way around I seem to have hit a wall. I've got a really simple RSpec test that looks like this:

# ./test/meta_spec.rb
describe "Rake tasks" do
  require 'rake'
  
  before(:each) do
    @rake = Rake::Application.new
    @rake.load_rakefile  # => Error here!
    Rake.application = @rake
  end
  
  after(:each) do
    Rake.application = nil
  end
  
  it "should have at least one RSpec test to execute" do
    Rake.application["specs"].spec_files.size.should > 0
  end
end

I have a simple task called "specs" defined in ./Rakefile.rb which has an RSpec task that includes all the *_spec.rb files.

If I put the @rake.load_rakefile method in (which is my understanding of what the RSpec docs tell you to do when programmatically instantiating Rake::Application instances), I want that Rakefile to load. But instead it just bombs out. If I comment it out, however, the test fails because the "specs" task is (understandably) not defined.

Where am I going wrong?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment