缺少突变体-rspec?
Missing mutant-rspec?
我正在尝试使用存储库中的 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.
现在,如果我尝试 运行 突变体,使用 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
我的项目?
(我也尝试安装 gem 和 sudo gem install mutant-rspec
以防万一,但它没有帮助,我得到了同样的错误信息。)
您 mutant
运行 可能没有在正确的环境中执行。请尝试 bundle exec mutant
,这将确保您的 Gemfile
中指定的那个与正确的 gem 集一起使用。
为了帮助调试,请使用 which mutant
确定调用的是哪个版本。 sudo gem install
应该 不是 的解决方案,我建议 sudo gem uninstall
恢复到原来的位置,否则以后可能会出现问题。
但我认为所有这些都是转移注意力的东西。
对于您的 Rakefile
,它实际上并没有向 mutant
脚本发送。您将绕过它并直接前往 Mutant::CLI
。这里的问题是没有设置加载路径以使其包含 mutant-rspec
:
task :mutant do
puts $LOAD_PATH # debug: see it's missing load path for mutant-rspec
require 'bundler/setup' # This line is new
puts $LOAD_PATH # debug: see how it changes
result = Mutant::CLI.run %w(--since problem9 -Ilib -Ispec
--use rspec MyProject*)
raise 'Mutation testing failed' unless result
end
或者,bundle exec rake mutant
也应该做同样的事情。我建议 always 使用 bundle exec
(或 binstubs),而不是 rake
碰巧在你的路径上。否则很难推理。
我正在尝试使用存储库中的 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.
现在,如果我尝试 运行 突变体,使用 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
我的项目?
(我也尝试安装 gem 和 sudo gem install mutant-rspec
以防万一,但它没有帮助,我得到了同样的错误信息。)
您 mutant
运行 可能没有在正确的环境中执行。请尝试 bundle exec mutant
,这将确保您的 Gemfile
中指定的那个与正确的 gem 集一起使用。
为了帮助调试,请使用 which mutant
确定调用的是哪个版本。 sudo gem install
应该 不是 的解决方案,我建议 sudo gem uninstall
恢复到原来的位置,否则以后可能会出现问题。
但我认为所有这些都是转移注意力的东西。
对于您的 Rakefile
,它实际上并没有向 mutant
脚本发送。您将绕过它并直接前往 Mutant::CLI
。这里的问题是没有设置加载路径以使其包含 mutant-rspec
:
task :mutant do
puts $LOAD_PATH # debug: see it's missing load path for mutant-rspec
require 'bundler/setup' # This line is new
puts $LOAD_PATH # debug: see how it changes
result = Mutant::CLI.run %w(--since problem9 -Ilib -Ispec
--use rspec MyProject*)
raise 'Mutation testing failed' unless result
end
或者,bundle exec rake mutant
也应该做同样的事情。我建议 always 使用 bundle exec
(或 binstubs),而不是 rake
碰巧在你的路径上。否则很难推理。