From 7d48fa613074cff26f178e06ec33da5442d84cab Mon Sep 17 00:00:00 2001 From: Denis Defreyne Date: Sat, 15 Mar 2014 14:33:29 +0100 Subject: [PATCH] Remove "see full crash log" line from crash log --- lib/nanoc/cli/error_handler.rb | 6 ++++-- test/cli/test_error_handler.rb | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/lib/nanoc/cli/error_handler.rb b/lib/nanoc/cli/error_handler.rb index a6c6aef810..e4a85a33ef 100644 --- a/lib/nanoc/cli/error_handler.rb +++ b/lib/nanoc/cli/error_handler.rb @@ -293,13 +293,15 @@ def write_compilation_stack(stream, error, params = {}) end def write_stack_trace(stream, error, params = {}) + is_verbose = params.fetch(:verbose, false) + write_section_header(stream, 'Stack trace', params) - count = params[:verbose] ? -1 : 10 + count = is_verbose ? -1 : 10 error.backtrace[0...count].each_with_index do |item, index| stream.puts " #{index}. #{item}" end - if error.backtrace.size > count + if !is_verbose && error.backtrace.size > count stream.puts " ... #{error.backtrace.size - count} more lines omitted. See full crash log for details." end end diff --git a/test/cli/test_error_handler.rb b/test/cli/test_error_handler.rb index 756cb07f9f..ab0db9e91e 100644 --- a/test/cli/test_error_handler.rb +++ b/test/cli/test_error_handler.rb @@ -29,4 +29,36 @@ def test_resolution_for_with_not_load_error assert_nil @handler.send(:resolution_for, error) end + def test_write_stack_trace_verbose + error = new_error(20) + + stream = StringIO.new + @handler.send(:write_stack_trace, stream, error, :verbose => false) + assert_match(/See full crash log for details./, stream.string) + + stream = StringIO.new + @handler.send(:write_stack_trace, stream, error, :verbose => false) + assert_match(/See full crash log for details./, stream.string) + + stream = StringIO.new + @handler.send(:write_stack_trace, stream, error, :verbose => true) + refute_match(/See full crash log for details./, stream.string) + end + + def new_error(amount_factor) + backtrace_generator = lambda do |af| + if af == 0 + raise "finally!" + else + backtrace_generator.call(af - 1) + end + end + + begin + backtrace_generator.call(amount_factor) + rescue => e + return e + end + end + end