Почему это требует сбоя от граблей, но преуспевает при явном запуске? - PullRequest
2 голосов
/ 31 марта 2011

Помогите мне понять, почему тесты этого проекта выполняются при непосредственном выполнении, а не при запуске через rake. Ошибка при запуске через Rake TestTask:

** Execute test
/home/myockey/.rvm/rubies/ruby-1.9.2-p136/bin/ruby -I"lib:test" "/home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/unit/data_test.rb" "test/unit/station_test.rb" "test/unit/raw_test.rb" "test/unit/parser_test.rb" "test/unit/report_test.rb" 
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- test/unit/../metar_test_helper.rb (LoadError)
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from test/unit/data_test.rb:4:in `<top (required)>'
    from /home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `load'
    from /home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `block in <main>'
    from /home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `each'
    from /home/myockey/.rvm/gems/ruby-1.9.2-p136/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `<main>'
rake aborted!

Когда я запускаю скрипт напрямую, я получаю следующее:

myockey@myockey-K61IC:~/opt/joeyates-metar-parser-cdca19f/test/unit$ ruby data_test.rb 
Loaded suite data_test
Started
...................................................
Finished in 0.084939 seconds.

51 tests, 121 assertions, 0 failures, 0 errors, 0 skips

Верх рубиновых файлов выглядит так:

#!/usr/bin/env ruby
# encoding: utf-8

require File.dirname(__FILE__) + '/../metar_test_helper'

class TestMetarData < Test::Unit::TestCase

Обратите внимание, что я пытался добавить расширение .rb в metar_test_helper, но безрезультатно. Будьте уверены, что файл с именем metar_test_helper.rb существует в родительском каталоге файла и имеет достаточные разрешения для доступа.

Добавлена ​​награда. Я знаю, что это должен быть простой путь, но я бы очень признателен за некоторые советы, которые помогут решить его и помочь понять его.

Ответы [ 2 ]

3 голосов
/ 03 апреля 2011

Используете ли вы Ruby 1.9.2 в обоих сценариях?

1.9.2 не включает "." в путь ($:), в то время как версии до 1.9.2 делают.

Чтобы проверить, какую версию Ruby вы используете, и каков путь, выполните

STDERR.puts "RUBY_VERSION is #{RUBY_VERSION}"
STDERR.puts "Path is #{$:}"

перед строкой, вызывающей исключение

require File.dirname(__FILE__) + '/../metar_test_helper'

Если это не такЧтобы решить эту проблему, спросите, что требуется, выполнив

STDERR.puts "The file I'm requiring is #{File.dirname(__FILE__) + '/../metar_test_helper'}"

и посмотрите, как это выглядит в обоих подходах.

Вы можете увидеть другие советы по отладке в Какотладить сценарии Ruby?

3 голосов
/ 31 марта 2011

Это просто проблема пути, которую вам нужно решить. Когда вы запускаете тест вручную, вы попадаете в каталог test / unit, в котором, как представляется, этот уровень 1 повышен. В задании rake вы находитесь у родителя тестового каталога (при условии, что RAILS_HOME).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...