2010-09-01 11 views
6

He actualizado mi aplicación de usar config.gem a un Gemfile con bundler y he notado que las pruebas de mi unidad han dejado de ejecutarse. Es un poco extraño y no estoy del todo seguro de dónde empezar a buscar.rake no ejecutando pruebas unitarias

Cuando ejecuto rake test:units --trace puedo ver que mi entorno está configurado y enumera los archivos que intenta ejecutar, pero luego simplemente regresa.

Hace lo mismo si trato de ejecutar un archivo individual usando algo como: rake -I"lib:test" test/unit/foo.rb o usando autotest.

Todo es muy extraño. Es como si los archivos se estuvieran cargando pero las pruebas de la unidad real no se están ejecutando.

estoy usando shoulda y fast_context y pensé que estos podrían ser el problema, pero si incluyo una prueba de unidad utilizando la sintaxis estándar def test_ todavía no consigue ejecutar, así que no creo que sea eso.

Cualquier sugerencia o sugerencia sería muy apreciada. ¡Siento que estoy codificando a ciegas hasta que pueda hacer que funcionen de nuevo!


Así que aquí es donde estoy ahora:

Mis razones para el uso bundler son para la instalación de dependencias en heroku y porque quería utilizar una joya procedente de un repositorio git en github. El resto es que he eliminado el preinitializer para el paquete y he vuelto a usar config.gem. Para evitar el hecho de que no puedo usar un repositorio github usando config.gem, he enviado mi propia copia a rubygems. ¿Fue este el movimiento correcto?


Aquí está la 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 

No sé cómo el archivo .gems sería útil porque es un heroku único y tendría que buscar a través de git para ello, pero aquí está mi 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 
+0

habría que colocar las líneas preinitializer y la Gemfile (y .gems viejos archivos) – marshally

+0

probablemente no es una Una buena idea es empujar versiones separadas/personales en rubygems ... esto tiende a conducir a versiones de gemas viejas y sin usar que nadie mantiene o usa. simplemente descárguelos localmente o instálelos en su sistema en lugar de depender del alojamiento de gemas. solo mis pensamientos – Lukas

+0

Hola, noté que estás usando inherited_resources and carriles 2.3 con bundler.Tengo problemas para que trabajen juntos. ¿Alguna vez te encontraste con algún problema con eso? – taelor

Respuesta

1

dieron el mismo problem.Just eliminar la gema 'Hydra' recibirá la prueba de la unidad vuelva a la normalidad

0

¿Tiene esto al final de su archivo/boot.rb config:

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 

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

+0

¿mejor opción? actualizar a rails 3 ... :) – Lukas

0

recientemente he tenido problemas para ejecutar las especificaciones para un proyecto. La razón fue que me faltaba una línea de config/application.rb. Hoy en día, esa línea aparece de forma predeterminada cuando se crea un nuevo proyecto de rails 3, pero si su proyecto se ha inicializado hace algún tiempo puede que falte.

# 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)