Ruby 1.9.3 ломает тест рейка - PullRequest
14 голосов
/ 31 октября 2011

У меня есть проект rails 3, который отлично работает на ruby ​​1.9.2-p290. Однако при обновлении до ruby ​​1.9.3-p0 rake test выдает следующую ошибку:

/Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:167:in `block in non_options': file not found: test/unit/**/*_test.rb (ArgumentError)
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `map!'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:207:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:52:in `process_args'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:891:in `_run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:884:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:21:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:326:in `block (2 levels) in autorun'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:27:in `run_once'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:325:in `block in autorun'
/Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:167:in `block in non_options': file not found: test/functional/**/*_test.rb (ArgumentError)
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `map!'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:207:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:52:in `process_args'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:891:in `_run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:884:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:21:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:326:in `block (2 levels) in autorun'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:27:in `run_once'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:325:in `block in autorun'

Кажется, это следствие этой проблемы с рейком . Однако, когда я создаю простой проект rails на ruby ​​1.9.3, такая ошибка возникает. Что я могу сделать, чтобы мой проект rails работал на ruby ​​1.9.3?

Ответы [ 4 ]

9 голосов
/ 03 марта 2012

Добавление gem для тестового модуля сработало для меня.

6 голосов
/ 03 января 2012

Попробуйте следующее (независимо):

  1. Использование test.test_files = FileList['test/unit/**/test*.rb']
  2. Удалить shoulda бета-зависимость.
  3. Используйте test/unit самоцвет.
4 голосов
/ 09 октября 2012

Драгоценный камень shoulda вызывает общую проблему при использовании rake в тестовой среде на ruby ​​1.9.3, это сообщается в этой проблеме .

Обход

Вы можете использовать эту строку

* * 1010

в вашем Gemfile, а затем где-нибудь в вашем тестовом коде (например, test/test_helper.rb, если вы используете test-unit), вы можете поместить

require 'shoulda'

Если вы используете rspec, вы вообще не должны использовать гем shoulda, вам следует использовать shoulda-matchers, и это не вызовет проблем.

0 голосов
/ 20 августа 2013

Мы изменили нашу задачу rake (файл rake), чтобы она выглядела так

require 'rake/testtask'
  ...
desc "Run all tests in folder tests/test*.rb"
Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = FileList['tests/test*.rb']
  t.verbose = true
end

на основании: http://rake.rubyforge.org/classes/Rake/TestTask.html

...