Using run_all_when_everything_filtered
Note: this feature has been superseded by
filter_run_when_matching
and will be
removed in a future version of RSpec.
Use the run_all_when_everything_filtered
option to tell RSpec to run all the
specs in the case where you try to run a filtered list of specs but no specs
match that filter. This works well when paired with an inclusion filter like
:focus => true
, as it will run all the examples when none match the
inclusion filter.
RSpec.configure { |c| c.run_all_when_everything_filtered = true }
Background
Given a file named "spec/spec_helper.rb" with:
RSpec.configure {|c| c.run_all_when_everything_filtered = true}
By default, no specs are run if they are all filtered out by an inclusion tag
Given a file named "spec/example_spec.rb" with:
RSpec.describe "examples" do
it "with no tag" do
end
it "with no tag as well" do
end
end
When I run rspec spec/example_spec.rb --tag some_tag
Then the output should contain "0 examples, 0 failures".
Specs are still run if they are filtered out by an exclusion tag
Given a file named "spec/example_spec.rb" with:
RSpec.describe "examples" do
it "with no tag" do
end
it "with no tag as well" do
end
end
When I run rspec spec/example_spec.rb --tag ~some_tag
Then the output should contain "2 examples, 0 failures".
When the run_all_when_everything_filtered
option is turned on, if there are any matches for the filtering tag, only those features are run
Given a file named "spec/example_spec.rb" with:
require "spec_helper"
RSpec.describe "examples" do
it "with no tag", :some_tag => true do
end
it "with no tag as well" do
end
end
When I run rspec spec/example_spec.rb --tag some_tag
Then the output should contain "1 example, 0 failures"
And the output should contain "Run options: include {:some_tag=>true}".
When the run_all_when_everything_filtered
option is turned on, all the specs are run when the tag has no matches
Given a file named "spec/example_spec.rb" with:
require "spec_helper"
RSpec.describe "examples" do
it "with no tag" do
end
it "with no tag as well" do
end
end
When I run rspec spec/example_spec.rb --tag some_tag
Then the output should contain "2 examples, 0 failures"
And the output should contain "All examples were filtered out; ignoring {:some_tag=>true}".