To add a collaborator to this project you will need to use the Relish gem to add the collaborator via a terminal command. Soon you'll be able to also add collaborators here!
More about adding a collaboratorExcluding lines from the backtrace
To reduce the noise when diagnosing failures, RSpec can exclude lines belonging to certain gems or matching given patterns.
If you want to filter out backtrace lines belonging to specific gems, you can use config.filter_gems_from_backtrace
like so:
config.filter_gems_from_backtrace "ignored_gem", "another_ignored_gem",
For more control over which lines to ignore, you can use the the backtrace_exclusion_patterns
option to either replace the default exclusion patterns, or append your own, e.g.
config.backtrace_exclusion_patterns = [/first pattern/, /second pattern/]
config.backtrace_exclusion_patterns << /another pattern/
The default exclusion patterns are:
/\/lib\d*\/ruby\//,
/org\/jruby\//,
/bin\//,
/lib\/rspec\/(core|expectations|matchers|mocks)/
Additionally, rspec
can be run with the --backtrace
option to skip backtrace cleaning entirely.
- Scenarios
-
- Using default `backtrace_exclusion_patterns`
- Replacing `backtrace_exclusion_patterns`
- Appending to `backtrace_exclusion_patterns`
- Running `rspec` with `--backtrace` prints unfiltered backtraces
- Using `filter_gems_from_backtrace` to filter the named gem
- Using default `backtrace_exclusion_patterns`
-
- Given
-
a file named "spec/failing_spec.rb" with:
RSpec.describe "2 + 2" do it "is 5" do expect(2+2).to eq(5) end end
- When
-
I run
rspec
- Then
- the output should contain "1 example, 1 failure"
- And
- the output should not contain "lib/rspec/expectations"
- Replacing `backtrace_exclusion_patterns`
-
- Given
-
a file named "spec/spec_helper.rb" with:
RSpec.configure do |config| config.backtrace_exclusion_patterns = [ /spec_helper/ ] end
- And
-
a file named "spec/example_spec.rb" with:
require 'spec_helper' RSpec.describe "foo" do it "returns baz" do expect("foo").to eq("baz") end end
- When
-
I run
rspec
- Then
- the output should contain "1 example, 1 failure"
- And
- the output should contain "lib/rspec/expectations"
- Appending to `backtrace_exclusion_patterns`
-
- Given
-
a file named "spec/support/assert_baz.rb" with:
require "support/really_assert_baz" def assert_baz(arg) really_assert_baz(arg) end
- And
-
a file named "spec/support/really_assert_baz.rb" with:
def really_assert_baz(arg) expect(arg).to eq("baz") end
- And
-
a file named "spec/example_spec.rb" with:
require "support/assert_baz" RSpec.configure do |config| config.backtrace_exclusion_patterns << /really/ end RSpec.describe "bar" do it "is baz" do assert_baz("bar") end end
- When
-
I run
rspec
- Then
- the output should contain "1 example, 1 failure"
- And
- the output should contain "assert_baz"
- But
- the output should not contain "really_assert_baz"
- And
- the output should not contain "lib/rspec/expectations"
- Running `rspec` with `--backtrace` prints unfiltered backtraces
-
- Given
-
a file named "spec/support/custom_helper.rb" with:
def assert_baz(arg) expect(arg).to eq("baz") end
- And
-
a file named "spec/example_spec.rb" with:
require "support/custom_helper" RSpec.configure do |config| config.backtrace_exclusion_patterns << /custom_helper/ end RSpec.describe "bar" do it "is baz" do assert_baz("bar") end end
- When
-
I run
rspec --backtrace
- Then
- the output should contain "1 example, 1 failure"
- And
- the output should contain "spec/support/custom_helper.rb:2:in `assert_baz'"
- And
- the output should contain "lib/rspec/expectations"
- And
- the output should contain "lib/rspec/core"
- Using `filter_gems_from_backtrace` to filter the named gem
-
- Given
-
a vendored gem named "my_gem" containing a file named "lib/my_gem.rb" with:
class MyGem def self.do_amazing_things! # intentional bug to trigger an exception impossible_math = 10 / 0 "10 div 0 is: #{impossible_math}" end end
- And
-
a file named "spec/use_my_gem_spec.rb" with:
require 'my_gem' RSpec.describe "Using my_gem" do it 'does amazing things' do expect(MyGem.do_amazing_things!).to include("10 div 0 is") end end
- And
-
a file named "spec/spec_helper.rb" with:
RSpec.configure do |config| config.filter_gems_from_backtrace "my_gem" end
- Then
-
the output from
rspec
should contain "vendor/my_gem-1.2.3/lib/my_gem.rb:4:in `do_amazing_things!'" - But
-
the output from
rspec --require spec_helper
should not contain "vendor/my_gem-1.2.3/lib/my_gem.rb:4:in `do_amazing_things!'"
Last published 3 months ago by Jon Rowe.