2016-04-28 3 views
0

Lorsque j'essaie d'exécuter des tests unitaires de base sur ruby ​​à l'aide de rake, il semble que le débogage se fasse sur l'interpréteur ruby. Cela se termine avec moi voir une tonne de messages d'avertissement dans STDOUT. Je ne suis pas sûr pourquoi cela se passe et si cela devrait être?Ruby Rake - Exécution de Ruby -w par défaut?

D:\dev\git_repos\app_folder>ruby -v 
ruby 2.0.0p647 (2015-08-18) [i386-mingw32] 

D:\dev\git_repos\app_folder>rake test TEST=test/midrange_portal_test.rb 

comme 4 pages d'avertissements

sortie qui me porte à croire le débogage est mis en place:

Command failed with status (2): [ruby -w -I"lib;test" - 
I"D:/apps/Ruby200/lib/ruby/gems/2.0.0/gems/rake-11.1.2/lib" 
"D:/apps/Ruby200/lib/ruby/gems/2.0.0/gems/rake-11.1.2/lib/rake/rake_test_loader.rb" "test/midrange_portal_test.rb" ] 

D:\dev\git_repos\app_folder>gem environment 
RubyGems Environment: 
    - RUBYGEMS VERSION: 2.0.14.1 
    - RUBY VERSION: 2.0.0 (2015-08-18 patchlevel 647) [i386-mingw32] 
    - INSTALLATION DIRECTORY: D:/apps/Ruby200/lib/ruby/gems/2.0.0 
    - RUBY EXECUTABLE: D:/apps/Ruby200/bin/ruby.exe 
    - EXECUTABLE DIRECTORY: D:/apps/Ruby200/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-mingw32 
    - GEM PATHS: 
    - D:/apps/Ruby200/lib/ruby/gems/2.0.0 
    - H:/.gem/ruby/2.0.0 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - https://rubygems.org/ 

Remarquez que la commande est "ruby -w". Je ne sais pas pourquoi il est par défaut à ce niveau de débogage? Toute aide serait grandement appréciée car je suis tout à fait perplexe.

Répondre

0

Donc, après beaucoup de creusement, il s'avère que la version de rake im utilise run-rub avec le drapeau -w par défaut. Si vous regardez dans /gems/rake-11.1.2/lib/rake/testtask.rb il y a un booléen qui fixe le drapeau d'avertissement rubis:

def initialize(name=:test) 
    @name = name 
    @libs = ["lib"] 
    @pattern = nil 
    @options = nil 
    @test_files = nil 
    @verbose = false 
    @warning = true <-------------------------- 
    @loader = :rake 
    @ruby_opts = [] 
    @description = "Run tests" + (@name == :test ? "" : " for #{@name}") 
    yield self if block_given? 
    @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil? 
    define 
end 

Vous pouvez patch singe ce pour le désactiver, mais dans tous les L'honnêteté est probablement juste une bonne idée de le laisser et de simplement corriger vos avertissements. Dans mon cas, je fais face à une tonne de code hérité qui n'est mis à jour que de temps en temps, donc pas vraiment la peine.