aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/clean_backtrace_test.rb
diff options
context:
space:
mode:
authorMark J. Titorenko <mark@titorenko.net>2013-06-20 13:51:01 +0100
committerMark J. Titorenko <mark@titorenko.net>2013-06-20 19:54:32 +0100
commita3678e45ecf8e17527722889d5347325083ad560 (patch)
tree4a07cb3e420d2d861ccc1432b87db667a945fd91 /activesupport/test/clean_backtrace_test.rb
parent7c69a829a311a31109939cff19b700b36b97d5c4 (diff)
downloadrails-a3678e45ecf8e17527722889d5347325083ad560.tar.gz
rails-a3678e45ecf8e17527722889d5347325083ad560.tar.bz2
rails-a3678e45ecf8e17527722889d5347325083ad560.zip
Fix BacktraceCleaner#noise for multiple silencers.
The previous implementation of BacktraceSilencer#noise did not work correctly if more than one silencer was configured -- specifically, it would only return noise which was matched by all silencers. The new implementation is such that anything that has been matched by silencers is removed from the backtrace using Array#- (array difference), ie. we now return all elements within a backtrace that have been matched by any silencer (and are thus removed by #silence). Fixes #11030.
Diffstat (limited to 'activesupport/test/clean_backtrace_test.rb')
-rw-r--r--activesupport/test/clean_backtrace_test.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/activesupport/test/clean_backtrace_test.rb b/activesupport/test/clean_backtrace_test.rb
index b14950acb3..dd67a45cf6 100644
--- a/activesupport/test/clean_backtrace_test.rb
+++ b/activesupport/test/clean_backtrace_test.rb
@@ -36,6 +36,27 @@ class BacktraceCleanerSilencerTest < ActiveSupport::TestCase
end
end
+class BacktraceCleanerMultipleSilencersTest < ActiveSupport::TestCase
+ def setup
+ @bc = ActiveSupport::BacktraceCleaner.new
+ @bc.add_silencer { |line| line =~ /mongrel/ }
+ @bc.add_silencer { |line| line =~ /yolo/ }
+ end
+
+ test "backtrace should not contain lines that match the silencers" do
+ assert_equal \
+ [ "/other/class.rb" ],
+ @bc.clean([ "/mongrel/class.rb", "/other/class.rb", "/mongrel/stuff.rb", "/other/yolo.rb" ])
+ end
+
+ test "backtrace should only contain lines that match the silencers" do
+ assert_equal \
+ [ "/mongrel/class.rb", "/mongrel/stuff.rb", "/other/yolo.rb" ],
+ @bc.clean([ "/mongrel/class.rb", "/other/class.rb", "/mongrel/stuff.rb", "/other/yolo.rb" ],
+ :noise)
+ end
+end
+
class BacktraceCleanerFilterAndSilencerTest < ActiveSupport::TestCase
def setup
@bc = ActiveSupport::BacktraceCleaner.new