rake not running unit tests
Asked Answered
C

3

6

I've upgraded my app from using config.gem to a Gemfile with bundler and have noticed that my unit tests have now stopped running. It's a bit strange and I'm not entirely sure where to start looking.

When I run rake test:units --trace I can see my environment being setup and it lists the files it intends to execute, but then it just returns.

It does the same thing if I try to run one individual file using something like: rake -I"lib:test" test/unit/foo.rb or using autotest.

It's all very strange. It's as if the files are being loaded but the actual unit tests are not being run.

I'm using shoulda and fast_context and I thought these might be the problem but if I include a unit test using the standard def test_ syntax it still doesn't get run so I don't think it's those.

Any hints or pointers would be greatly appreciated. I feel like I'm coding blind until I can get them working again!


So here's where I am now:

My reasons for using bundler are for installing dependencies on heroku and because I wanted to use a gem sourced from a git repo on github. The long and the short of it is that I've removed the preinitializer for bundler and have gone back to using config.gem. To get around the fact that I can't use a github repo using config.gem I've pushed out my own copy to rubygems. Was this the right move?


Here's the preinitializer.rb

begin
  require "rubygems"
  require "bundler"
rescue LoadError
  raise "Could not load the bundler gem. Install it with `gem install bundler`."
end

if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
  raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
   "Run `gem install bundler` to upgrade."
end

begin
  # Set up load paths for all bundled gems
  ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
  Bundler.setup
rescue Bundler::GemNotFound
  raise RuntimeError, "Bundler couldn't find some gems." +
    "Did you run `bundle install`?"
end

I don't know how the .gems file would be useful because it's a heroku only thing and I'd have to hunt through git for it, but here's my gemfile.

source :gemcutter

gem 'rails', '2.3.9'
gem 'pg'
gem 'minitest'
gem 'RedCloth'
gem 'erubis'
#gem 'memcached'
gem 'daemons'
gem 'resque'

gem 'inherited_resources', '1.0.6'
gem 'clearance', '0.8.8'
gem 'acl9'
gem 'sprockets'

gem 'aws-s3'
gem 'paperclip', '2.3.1.1'
gem 'rmagick', '2.12.2'

gem 'jonnii-cheddargetter', '0.1.3'

gem 'attribute_normalizer'

gem 'formtastic', '1.1.0.beta'
gem 'will_paginate', '2.3.14'

gem 'hoptoad_notifier'
gem 'mixpanel_client'

gem 'sunspot'
gem 'websolr-sunspot_rails'

gem 'geokit'
gem 'ri_cal'

gem 'jonnii-yelp'

group :development, :test do
  gem 'test-spec'
  gem 'shoulda'

  gem 'redgreen'
  gem 'factory_girl'
  gem 'populator'
  gem 'faker'

  gem 'ZenTest'
  gem 'autotest-rails'

  gem 'webrat'
  gem 'cucumber'
  gem 'cucumber-rails'
  gem 'database_cleaner'
  gem 'parallel'
  gem 'hydra'
  gem 'heroku'
  gem 'taps'
  gem 'ruby-prof'
  gem 'treetop'
  gem 'rspec'
  gem 'rspec-rails'
end
Cloying answered 1/9, 2010 at 23:21 Comment(3)
would you post the preinitializer lines and the Gemfile (and old .gems file)Similitude
probably not a good idea pushing separate/personal versions out on rubygems... this tends to lead to old, unused versions of gems that no one maintains or uses. just download them locally or install them on your system rather than depending on gem hosting. just my thoughtsRus
Hey there, I noticed you're using inherited_resources and rails 2.3 with bundler. I'm having problems getting them to work together. Did you ever run into any problems with that?Jaf
D
1

Got the same problem.Just remove the gem 'hydra' will get the unit test back to normal

Debate answered 2/12, 2010 at 13:29 Comment(0)
R
0

Do you have this at the end of your config/boot.rb file:

class Rails::Boot
  def run
    load_initializer

    Rails::Initializer.class_eval do
      def load_gems
        @bundler_loaded ||= Bundler.require :default, Rails.env
      end
    end

    Rails::Initializer.run(:set_load_path)
  end
end

(from http://gembundler.com/rails23.html)

Rus answered 19/10, 2010 at 14:36 Comment(1)
better option? upgrade to rails 3... :)Rus
T
0

I recently had trouble running specs for a project. The reason was that I was missing a line from config/application.rb. Nowadays that line pops in by default when you create a new rails 3 project, but if your project has been initialized some time ago it might be missing.

# If you have a Gemfile, require the gems listed there, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env) if defined?(Bundler)
Thorn answered 27/10, 2010 at 10:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.