Why does a guard launch spork for both rspec and cucumber, even if I wanted to run it only for rspec using groups?

In my gemfile ...

group :development, :test do gem 'capybara', "1.1.2" gem 'database_cleaner', "0.7.0" gem 'cucumber', "1.1.2" gem 'cucumber-rails', "1.2.0" gem 'rspec-rails', "2.7.0" gem 'spork', "0.9.0.rc9" gem 'launchy' #launches the page gem 'guard-spork', "0.3.1" gem 'guard-rspec', "0.5.4" gem 'guard-cucumber', "0.7.4" gem 'factory_girl_rails' end 

My Guard file has two groups (: specs and: features).

 group :specs do guard :spork, :rspec_env => { 'RAILS_ENV' => 'test' } do watch('config/application.rb') watch('config/environment.rb') watch(%r{^config/environments/.+\.rb$}) watch(%r{^config/initializers/.+\.rb$}) watch('spec/spec_helper.rb') end guard :rspec, :version => 2 do watch(%r{^spec/.+_spec\.rb$}) watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" } watch('spec/spec_helper.rb') { "spec" } # # Rails example watch(%r{^spec/.+_spec\.rb$}) watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" } watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" } watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] } watch(%r{^spec/support/(.+)\.rb$}) { "spec" } watch('spec/spec_helper.rb') { "spec" } watch('config/routes.rb') { "spec/routing" } watch('app/controllers/application_controller.rb') { "spec/controllers" } # Capybara request specs watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" } end end group :features do guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' } do watch('config/application.rb') watch('config/environment.rb') watch(%r{^config/environments/.+\.rb$}) watch(%r{^config/initializers/.+\.rb$}) watch('spec/spec_helper.rb') end guard 'cucumber' do watch(%r{^features/.+\.feature$}) watch(%r{^features/support/.+$}) { 'features' } watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' } end end 

When I try to run the: specs group, I would expect the defender to run Spork only for Rspec.

 guard -g specs start 

However, I see in the output that the guard launches Spork for both Rspec and Cucumber.

 ~/current[master]% guard -g specs start WARNING: You are using Guard outside of Bundler, this is dangerous and may not work. Using `bundle exec guard` is safer. Guard could not detect any of the supported notification libraries. Guard is now watching at '/Users/rupert/Desktop/cws-rails' Starting Spork for RSpec & Cucumber Using RSpec Using Cucumber Preloading Rails environment Preloading Rails environment Loading Spork.prefork block... Loading Spork.prefork block... Spork is ready and listening on 8990! Spork is ready and listening on 8989! Spork server for RSpec & Cucumber successfully started Guard::RSpec is running, with RSpec 2! Running all specs 

Is there any configuration file for SPORK or protection that I could skip?

UPDATE:

  • Remove the protective cucumber

  • Delete or rename function folder

+6
source share
2 answers

You must disable the cucumber in Spork in the RSpec group and vice versa:

 specs :specs guard :spork, :cucumber => false do # ... end end specs :features guard 'spork', :rspec => false do # ... end end 
+6
source

I know this is old, but I also came across this problem right now and realized:

I had a features subdirectory in my project with one file: features/step_definitions/email_steps.rb

By raising commits, I realized that this was added from rails_apps_composer: testing framework.

So:

Removing the features subdirectory prevents spork trying to use the cucumber.

0
source

Source: https://habr.com/ru/post/913587/


All Articles