2011-03-31 29 views
2

幫我理解爲什麼這個項目的測試直接執行時運行,但不通過rake運行。爲什麼這需要從耙子失敗,但明確運行時成功?

** 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! 

當我直接運行該腳本,我得到以下:

[email protected]:~/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 
時通過耙TestTask運行錯誤

請注意,我嘗試將.rb文件擴展名添加到metar_test_helper無濟於事。請放心,文件的父目錄中存在一個名爲metar_test_helper.rb的文件,並且它具有足夠的權限以供訪問。

增加了賞金。我知道這肯定是一個簡單的路徑問題,但我真的很感謝解決它的一些指導並幫助我理解它。

回答

3

您是否在兩種情況下都使用Ruby 1.9.2?

1.9.2在路徑($:)中不包含".",而1.9.2之前的版本則不包含。

要檢查你使用的是什麼版本的Ruby,和路徑是什麼,異常誘導線

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

如果不解決這個問題之前做

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

,問它就是它的要求,通過做

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

,看看是什麼樣子的兩種方法。

您可能希望看到調試等提示在How do I debug Ruby scripts?

3

這只是一個需要解決的路徑問題。當您手動運行測試時,您將位於test/unit目錄中,該目錄似乎具有1級文件。在rake任務中,您位於測試目錄的父級(假設爲RAILS_HOME)。

+0

我懷疑這是一個路徑isue,但我重申,我不明白爲什麼。請注意爲它無法加載的文件提供的相對路徑:「test/unit /../ metar_test_helper.rb」。這是RakeFile和我執行Rake的目錄的正確相對路徑。這是不是它應該採取的正確道路? – 2011-03-31 12:53:37

+0

我打算回覆同樣的事情,只是我不瞭解Ruby。 :) – Christian 2011-04-03 01:50:16

相關問題