I've created a sample application with the issue here https://github.com/jean-francois-labbe/rails-guard-not-working
It's just a simple scaffolding with rails 5.1.4 and ruby 2.4.2
rails g scaffold user username firstname creation:datetime
rails db:migrate
bundle exec rails test # => tests ok
bundle exec guard # => 3 tests will fail
I've added guard and guard-minitest in the Gemfile.
Does anyone already encountered this issue?
tests results below:
~/Workspace/guard-tests-fail(master ✗) bundle exec rails test
Run options: --seed 23398
Running:
........
Finished in 0.649120s, 12.3244 runs/s, 15.4055 assertions/s.
8 runs, 10 assertions, 0 failures, 0 errors, 0 skips
~/Workspace/guard-tests-fail(master ✗) bundle exec guard
19:41:31 - INFO - Guard::Minitest 2.4.6 is running, with Minitest::Unit 5.10.3!
19:41:31 - INFO - Running: all tests
Run options: --guard --seed 38654
Running:
.....F
Failure:
MeetingsControllerTest#test_should_create_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:19]:
"Meeting.count" didn't change by 1.
Expected: 3
Actual: 2
bin/rails test test/controllers/meetings_controller_test.rb:18
F
Failure:
MeetingsControllerTest#test_should_destroy_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:42]:
"Meeting.count" didn't change by -1.
Expected: 1
Actual: 2
bin/rails test test/controllers/meetings_controller_test.rb:41
F
Failure:
MeetingsControllerTest#test_should_update_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:38]:
Expected response to be a <3XX: redirect>, but was a <422: Unprocessable Entity>
bin/rails test test/controllers/meetings_controller_test.rb:36
Finished in 1.261359s, 6.3424 runs/s, 6.3424 assertions/s.
8 runs, 8 assertions, 3 failures, 0 errors, 0 skips
19:41:35 - INFO - Guard is now watching at '/home/jeff/Workspace/guard-tests-fail'
Guard with same seed as rails tests
~/Workspace/guard-tests-fail(master ✗) bundle exec guard
21:36:17 - INFO - Guard::Minitest 2.4.6 is running, with Minitest::Unit 5.10.3!
21:36:17 - INFO - Running: all tests
Run options: --guard --seed 23398
# Running:
...F
Failure:
MeetingsControllerTest#test_should_destroy_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:42]:
"Meeting.count" didn't change by -1.
Expected: 1
Actual: 2
bin/rails test test/controllers/meetings_controller_test.rb:41
..F
Failure:
MeetingsControllerTest#test_should_update_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:38]:
Expected response to be a <3XX: redirect>, but was a <422: Unprocessable Entity>
bin/rails test test/controllers/meetings_controller_test.rb:36
F
Failure:
MeetingsControllerTest#test_should_create_meeting [/home/jeff/Workspace/guard-tests-fail/test/controllers/meetings_controller_test.rb:19]:
"Meeting.count" didn't change by 1.
Expected: 3
Actual: 2
bin/rails test test/controllers/meetings_controller_test.rb:18
Finished in 1.397142s, 5.7260 runs/s, 5.7260 assertions/s.
8 runs, 8 assertions, 3 failures, 0 errors, 0 skips
21:36:21 - INFO - Guard is now watching at '/home/jeff/Workspace/guard-tests-fail'
[1] guard(main)>
Steps to reproduce
1) Just create a new project (rails new demo)
2) generate a scaffold (rails g scaffold user username)
3) rails test => rails test are ok
4) Add gem 'guard' and gem 'guard-minitest' in Gemfile. and run bundle
5) run guard init minitest.
6) bundle exec guard => and your tests will be failling
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:107:in `block (3 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:204:in `capture_exceptions'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:104:in `block (2 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:255:in `time_it'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:103:in `block in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:275:in `with_info_handler'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:102:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:839:in `run_one_method'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:324:in `run_one_method'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:311:in `block (2 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:310:in `each'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:310:in `block in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:337:in `with_info_handler'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:309:in `run'
.gem/ruby/2.4.1/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `block in __run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `map'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `__run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:136:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:63:in `block in autorun'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
.gem/ruby/2.4.1/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
.rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
.rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:107:in `block (3 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:204:in `capture_exceptions'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:104:in `block (2 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:255:in `time_it'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:103:in `block in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:275:in `with_info_handler'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest/test.rb:102:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:839:in `run_one_method'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:324:in `run_one_method'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:311:in `block (2 levels) in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:310:in `each'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:310:in `block in run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:337:in `with_info_handler'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:309:in `run'
.gem/ruby/2.4.1/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `block in __run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `map'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:159:in `__run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:136:in `run'
.gem/ruby/2.4.1/gems/minitest-5.10.3/lib/minitest.rb:63:in `block in autorun'
This is an issue with guard-minitest and spring. Head to your Guardfile and add this spring command configuration to the initialization:
# Guardfile
guard "minitest", spring: "bin/rails test" do
# ...
end
There is some semi-related discussion here. The guard-minitest README says that this is "due to complexities in how arguments are handled and running tests for selected files".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With