Skip to content

Commit 693dcf9

Browse files
authored
Merge pull request #486 from ksss/detailed_message
Support `#detailed_message` when task failed
2 parents 45dc937 + 6e0b175 commit 693dcf9

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

lib/rake/application.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,8 @@ def has_cause?(ex) # :nodoc:
237237
def display_exception_message_details(ex) # :nodoc:
238238
if ex.instance_of?(RuntimeError)
239239
trace ex.message
240+
elsif ex.respond_to?(:detailed_message)
241+
trace "#{ex.class.name}: #{ex.detailed_message(highlight: false)}"
240242
else
241243
trace "#{ex.class.name}: #{ex.message}"
242244
end

test/test_rake_application.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,31 @@ def test_display_exception_details
6060
assert_match __method__.to_s, err
6161
end
6262

63+
def test_display_exception_details_with_detailed_message
64+
error_class = Class.new(StandardError) do
65+
def detailed_message(**)
66+
"detailed_message!!"
67+
end
68+
end
69+
70+
begin
71+
raise error_class
72+
rescue error_class => ex
73+
end
74+
75+
out, err = capture_io do
76+
@app.set_default_options # reset trace output IO
77+
78+
@app.display_error_message ex
79+
end
80+
81+
assert_empty out
82+
83+
assert_match "rake aborted!", err
84+
assert_match "detailed_message!!", err
85+
assert_match __method__.to_s, err
86+
end
87+
6388
def test_display_exception_details_bad_encoding
6489
begin
6590
raise "El Niño is coming!".dup.force_encoding("US-ASCII")

0 commit comments

Comments
 (0)