【发布时间】:2017-01-18 11:25:11
【问题描述】:
我正在尝试使用来自存储库的 ruby 2.1.5+deb8u2 和 ruby-dev 2.1.5+deb8u2 包在新安装的 Debian 8.5 上设置一个新的 Ruby 项目。我想在我的项目中包括突变测试。我添加了mutant-rspec 到我的Gemfile:
source 'https://rubygems.org'
gem 'rake'
gem 'rspec', require: 'spec'
gem 'mutant-rspec'
Bundler (1.13.0) 似乎可以很好地安装 gem
ytg@debian-vm:~/projects/new_project$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/.
Using rake 11.2.2
....
Using rspec-core 3.5.3
Using rspec-expectations 3.5.0
Using rspec-mocks 3.5.0
...
Using rspec 3.5.0
...
Installing mutant 0.8.11
Installing mutant-rspec 0.8.11
Bundle complete! 5 Gemfile dependencies, 34 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
现在如果我尝试运行mutant,使用rake mutant --trace 和rake 文件
require 'bundler/gem_tasks'
require 'rspec/core/rake_task'
require 'rubocop/rake_task'
require 'mutant'
RSpec::Core::RakeTask.new :spec
task default: :spec
RuboCop::RakeTask.new
task :mutant do
result = Mutant::CLI.run %w(--since problem9 -Ilib -Ispec
--use rspec MyProject*)
raise 'Mutation testing failed' unless result
end
我收到一条错误消息:
warning: parser/current is loading parser/ruby21, which recognizes
warning: 2.1.8-compliant syntax, but you are running 2.1.5.
warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
** Invoke mutant (first_time)
** Execute mutant
Could not load integration "rspec" (you may want to try installing the gem mutant-rspec)
rake aborted!
Mutation testing failed
/home/ytg/projects/new_project/Rakefile:15:in `block in <top (required)>'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:248:in `call'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:248:in `block in execute'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:243:in `each'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:243:in `execute'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:187:in `block in invoke_with_call_chain'
/usr/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:180:in `invoke_with_call_chain'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/task.rb:173:in `invoke'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/application.rb:152:in `invoke_task'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/application.rb:108:in `block (2 levels) in top_level'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/application.rb:108:in `each'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/application.rb:108:in `block in top_level'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/application.rb:117:in `run_with_threads'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/application.rb:102:in `top_level'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/application.rb:80:in `block in run'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/application.rb:178:in `standard_exception_handling'
/var/lib/gems/2.1.0/gems/rake-11.2.2/lib/rake/application.rb:77:in `run'
/var/lib/gems/2.1.0/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
/usr/local/bin/rake:23:in `load'
/usr/local/bin/rake:23:in `<main>'
Tasks: TOP => mutant
如果我尝试直接执行,则会出现相同的消息
ytg@debian-vm:~/projects/new_project$ mutant -I lib/ --use rspec MyProject*
warning: parser/current is loading parser/ruby21, which recognizes
warning: 2.1.8-compliant syntax, but you are running 2.1.5.
warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
Could not load integration "rspec" (you may want to try installing the gem mutant-rspec)
据我了解,这是因为some loading issue。但究竟是什么加载问题?如何在我的项目上运行 mutant?
(我也尝试使用sudo gem install mutant-rspec 安装gem,以防万一,但没有帮助,我收到相同的错误消息。)
【问题讨论】:
-
您是否尝试解决有关 2.1.5 ABI 的警告?
-
据我了解: 1. Ruby MRI Parser 无法兼容 2.
parser只有在成功启动后才能被mutant用于实际分析我的 rb 文件。所以我想这应该不是问题。 -
现阶段可能不会有问题,但这是目前唯一的线索,您可能希望最终解决这个问题。无论如何,这是您的 ruby 开发环境的问题,但我不太了解您如何设置它来帮助解决问题。
-
我添加了一些关于环境的信息,否则我到处使用默认值,我没有在这个地方乱搞。 (而且我宁愿不这样做,我更像是一个 Java 人。)
标签: ruby rspec rubygems rake bundler