Skip to main content

--pattern option

When you run RSpec without giving it specific file names, it determines which files to load by applying a pattern to the provided directory arguments or spec (if no directories are provided). By default, RSpec uses the following pattern:

"{,/*/}/*_spec.rb"

Use the --pattern option to declare a different pattern.

Background

Given a file named "spec/example_spec.rb" with:

RSpec.describe "two specs" do
it "passes" do
end

it "passes too" do
end
end

And a file named "spec/example_test.rb" with:

RSpec.describe "one spec" do
it "passes" do
end
end

By default, RSpec runs matching spec files

When I run rspec

Then the output should contain "2 examples, 0 failures".

The --pattern flag makes RSpec run files matching the specified pattern and ignore the default pattern

When I run rspec -P "**/*_test.rb"

Then the output should contain "1 example, 0 failures".

The --pattern flag can be used to pass in multiple patterns, separated by commas

When I run rspec -P "**/*_test.rb,**/*_spec.rb"

Then the output should contain "3 examples, 0 failures".

The --pattern flag accepts shell style glob unions

When I run rspec -P "**/*_{test,spec}.rb"

Then the output should contain "3 examples, 0 failures".