Skip to content

Commit 1d8f611

Browse files
committed
fix: #35 - Adds test for backtrace truncation
1 parent c8b88a4 commit 1d8f611

3 files changed

Lines changed: 34 additions & 1 deletion

File tree

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
leopard (0.1.7)
4+
leopard (0.2.1)
55
concurrent-ruby (~> 1.1)
66
dry-configurable (~> 1.3)
77
dry-monads (~> 1.9)

lib/leopard/errors.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
module Rubyists
44
module Leopard
55
class LeopardError < StandardError
6+
def initialize(...)
7+
super
8+
set_backtrace(caller)
9+
end
10+
611
def backtrace
712
super[0..3] + ['... (truncated by Leopard)']
813
end

test/lib/errors.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# frozen_string_literal: true
2+
3+
require 'helper'
4+
require 'leopard/errors'
5+
6+
describe 'Rubyists::Leopard::Errors' do
7+
def level1
8+
level2
9+
end
10+
11+
def level2
12+
level3
13+
end
14+
15+
def level3
16+
raise Rubyists::Leopard::Error, 'Error boom'
17+
end
18+
19+
it 'truncates backtrace to 5 items' do
20+
err = assert_raises(Rubyists::Leopard::Error) { level1 }
21+
22+
bt = err.backtrace
23+
24+
assert_equal 5, bt.count
25+
assert_equal '... (truncated by Leopard)', bt.last
26+
refute(bt.any? { |line| line.include?("in 'level1'") })
27+
end
28+
end

0 commit comments

Comments
 (0)