Filter ruby lib directory from error backtrace

This commit is contained in:
Thibault Jouan 2015-04-03 22:00:51 +00:00
parent 0da47a0acb
commit b93e5717ce
4 changed files with 16 additions and 1 deletions

View File

@ -25,3 +25,8 @@ Feature: CLI error reporting
Given a recipe using a remote
When I execute the recipe on unknown remote target
Then the output must not contain "net-ssh"
Scenario: excludes ruby standard library from backtrace
Given a recipe using a remote
When I execute the recipe on unknown remote target
Then the output must not contain ruby lib directory

View File

@ -25,3 +25,7 @@ end
Then /^the error output must contain exactly "([^"]+)"$/ do |content|
assert_exact_output content, all_stderr
end
Then /^the output must not contain ruby lib directory$/ do
assert_no_partial_output RbConfig::CONFIG['rubylibdir'], all_output
end

View File

@ -3,6 +3,7 @@ module Producer
class ErrorFormatter
FILTERS = [
/\/producer-\w+/,
Regexp.new(RbConfig::CONFIG['rubylibdir']),
/\/net-ssh/,
/\/net-sftp/
].freeze

View File

@ -23,7 +23,8 @@ module Producer
end
describe '#format' do
let(:bt) { %W[backtrace /producer-core /net-ssh] }
let(:rubylibdir) { RbConfig::CONFIG['rubylibdir'] }
let(:bt) { %W[backtrace /producer-core /net-ssh #{rubylibdir}] }
def exception
begin fail 'original exception' rescue fail 'some exception' end
@ -49,6 +50,10 @@ module Producer
expect(formatter.format exception).not_to include 'net-ssh'
end
it 'excludes ruby lib directory from the backtrace' do
expect(formatter.format exception).not_to include rubylibdir
end
context 'when debug is enabled' do
let(:debug) { true }