diff --git a/lib/optparse.rb b/lib/optparse.rb index 97178e2..09bb0b6 100644 --- a/lib/optparse.rb +++ b/lib/optparse.rb @@ -2271,7 +2271,7 @@ def recover(argv) DIR = File.join(__dir__, '') def self.filter_backtrace(array) unless $DEBUG - array.delete_if {|bt| bt.start_with?(DIR)} + array.delete_if {|bt| (bt.respond_to?(:path) ? bt.path : bt).start_with?(DIR)} end array end diff --git a/test/optparse/test_optparse.rb b/test/optparse/test_optparse.rb index ff33400..49dbaaf 100644 --- a/test/optparse/test_optparse.rb +++ b/test/optparse/test_optparse.rb @@ -178,6 +178,12 @@ def test_nonopt_pattern assert_equal(["-t"], e.args) end + def test_parse_error_set_backtrace + e = assert_raise(OptionParser::InvalidOption) {@opt.parse(%w(-t))} + assert_nothing_raised {e.set_backtrace(e.backtrace)} + assert_nothing_raised {e.set_backtrace(e.backtrace_locations)} + end + def test_help_pager require 'tmpdir' Dir.mktmpdir do |dir|