public
Description: Behaviour Driven Development framework for Ruby
Homepage: http://rspec.info
Clone URL: git://github.com/dchelimsky/rspec.git
Click here to lend your support to: rspec and make a donation at www.pledgie.com !
quiet backtrace tweaker filters individual lines out of multiline (ala Rails) 
error messages
pat-maddox (author)
Sat Jul 12 19:15:39 -0700 2008
commit  91290a511dd74c5b06bed2e2575a367af42c2345
tree    697fe5ede486786e02e89988a75b10bc215747e5
parent  d95857c8ec3164eac3fc998ba09f41d821fb2fd6
...
40
41
42
43
44
45
46
47
48
 
 
 
 
 
49
50
51
 
52
53
54
...
40
41
42
 
 
 
 
 
 
43
44
45
46
47
48
49
 
50
51
52
53
0
@@ -40,15 +40,14 @@ module Spec
0
       
0
       def tweak_backtrace(error)
0
         return if error.backtrace.nil?
0
-        error.backtrace.collect! do |line|
0
-          clean_up_double_slashes(line)
0
-          IGNORE_PATTERNS.each do |ignore|
0
-            if line =~ ignore
0
-              line = nil
0
-              break
0
+        error.backtrace.collect! do |message|
0
+          clean_up_double_slashes(message)
0
+          kept_lines = message.split("\n").select do |line|
0
+            IGNORE_PATTERNS.each do |ignore|
0
+              break if line =~ ignore
0
             end
0
           end
0
-          line
0
+          kept_lines.empty?? nil : kept_lines.join("\n")
0
         end
0
         error.backtrace.compact!
0
       end
...
51
52
53
 
 
 
 
 
 
54
55
56
...
51
52
53
54
55
56
57
58
59
60
61
62
0
@@ -51,6 +51,12 @@ module Spec
0
         @tweaker.tweak_backtrace(@error)
0
         @error.backtrace.should include("/a/b/c/d.rb")
0
       end
0
+
0
+      it "should gracefully handle backtraces with newlines" do
0
+        @error.set_backtrace(["we like\nbin/spec:\nnewlines"])
0
+        @tweaker.tweak_backtrace(@error)
0
+        @error.backtrace.should include("we like\nnewlines")
0
+      end
0
     end
0
   end
0
 end

Comments