我的微型Ruby项目测试可在我的机器上和私有VM上运行,但在Travis CI bulid上失败
项目同时使用rspec
(+ rspec-given
)和minitest
完整跟踪在这里:https : //travis-ci.org/equivalent/code_katas/jobs/61321482
$ bundle exec rake
MiniTest::Unit::TestCase is now Minitest::Test. From /home/travis/.rvm/rubies/ruby
2.1.4/lib/ruby/2.1.0/test/unit/testcase.rb:8:in `<module:Unit>'
/home/travis/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/test/unit.rb:676:in `<class:Runner>': undefined method `_run_suite' for class `Test::Unit::Runner' (NameError)
from /home/travis/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/test/unit.rb:261:in `<module:Unit>'
from /home/travis/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/test/unit.rb:15:in `<module:Test>'
from /home/travis/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/test/unit.rb:7:in `<top (required)>'
from /home/travis/build/equivalent/code_katas/vendor/bundle/ruby/2.1.0/gems/sorcerer-1.0.2/test/sorcerer/resource_test.rb:3:in `require'
#...
该错误是不言自明的MiniTest::Unit::TestCase is now Minitest::Test
。这是由使用(source)的rspec-given
依赖关系引起的(我的代码未引用代码中的任何地方)sorcerer
test-unit
test-unit
所以我很好奇的是,如果有人知道如何解决这个问题。
就像我说的那样,它在Travis CI以外的其他所有地方都可以使用
问题是Travis CI正在将存储库克隆到其中/home/travis/build/username/projectname
,然后bundle install
带有
--deployment
将gem安装到vendor
文件夹的标志
/home/travis/build/username/projectname/verdor
我Rakefile
正在使用测试模式,**/*_test.rb
因此在所有文件夹中运行测试,因此正在加载verdor目录,并且所有依赖项(外部gem)的测试都与其中的某些项TestUnit
不兼容MiniTest
解决方案是在Rakefile中加载测试,而不是pattern
使用:
Rake::TestTask.new(:test) do |t|
t.test_files = Dir['**/*_test.rb'].reject do |path|
path.include?('vendor') # tell travis CI to ignore vendor tests
end
end
类似申请RSpec
RSpec::Core::RakeTask.new(:spec) do |t|
t.pattern = Dir.glob('**/*_spec.rb').reject do |path|
path.include?('vendor') # tell travis CI to ignore vendor tests
end
# t.rspec_opts = '--format documentation'
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句