From 8eadd7d8220d3169697e4977ad25071e4b9a7580 Mon Sep 17 00:00:00 2001 From: yamaankhan20 Date: Wed, 9 Sep 2026 19:43:56 +0500 Subject: [PATCH 1/2] Add test for elided frames with leading whitespace The fix in #138 handles elided frames with whitespace but lacked test coverage. This commit adds the missing test case. --- .idea/.gitignore | 10 ++++++++++ .idea/go.imports.xml | 10 ++++++++++ .idea/goleak.iml | 9 +++++++++ .idea/golinter.xml | 7 +++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ internal/stack/stacks.go | 5 +++-- internal/stack/stacks_test.go | 18 ++++++++++++++++++ 8 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/go.imports.xml create mode 100644 .idea/goleak.iml create mode 100644 .idea/golinter.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..30cf57e --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/go.imports.xml b/.idea/go.imports.xml new file mode 100644 index 0000000..644cdf0 --- /dev/null +++ b/.idea/go.imports.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/goleak.iml b/.idea/goleak.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/goleak.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/golinter.xml b/.idea/golinter.xml new file mode 100644 index 0000000..1ccf3ec --- /dev/null +++ b/.idea/golinter.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..55a8285 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/internal/stack/stacks.go b/internal/stack/stacks.go index 5ed5c0c..c4137ce 100644 --- a/internal/stack/stacks.go +++ b/internal/stack/stacks.go @@ -172,8 +172,9 @@ func (p *stackParser) parseStack(line string) (Stack, error) { // Just skip it. continue } - if strings.HasPrefix(line, "...") && strings.HasSuffix(line, " frames elided...") { - // e.g. ...23 frames elided... + trimmedLine := strings.TrimSpace(line) + if strings.HasPrefix(trimmedLine, "...") && strings.HasSuffix(trimmedLine, " frames elided...") { + // e.g. "...23 frames elided..." or " ...23 frames elided..." // This indicates frames were elided from the stack trace, // attempting to parse them via parseFuncName will fail resulting in a panic // and a relatively useless output. Gracefully handle this. diff --git a/internal/stack/stacks_test.go b/internal/stack/stacks_test.go index f26aebf..89f1b43 100644 --- a/internal/stack/stacks_test.go +++ b/internal/stack/stacks_test.go @@ -336,6 +336,24 @@ func TestParseStack(t *testing.T) { "example.com/foo/bar.baz", }, }, + { + name: "elided frames with leading whitespaces", + give: joinLines( + "goroutine 1 [running]:", + "example.com/foo/bar.baz()", + " example.com/foo/bar.go:123", + " ...23 frames elided...", + "created by example.com/foo/bar.qux", + " example.com/foo/bar.go:456", + ), + id: 1, + state: "running", + createdBy: "example.com/foo/bar.qux", + firstFunc: "example.com/foo/bar.baz", + funcs: []string{ + "example.com/foo/bar.baz", + }, + }, } for _, tt := range tests { From 512175ba5e360644f008643a1ef90ca91a2b3743 Mon Sep 17 00:00:00 2001 From: yamaankhan20 Date: Wed, 9 Sep 2026 19:45:30 +0500 Subject: [PATCH 2/2] Add test for elided frames with leading whitespace The fix in #138 handles elided frames with whitespace but lacked test coverage. This commit adds the missing test case. --- .gitignore | 1 + .idea/.gitignore | 10 ---------- .idea/go.imports.xml | 10 ---------- .idea/goleak.iml | 9 --------- .idea/golinter.xml | 7 ------- .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ 7 files changed, 1 insertion(+), 50 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/go.imports.xml delete mode 100644 .idea/goleak.iml delete mode 100644 .idea/golinter.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index 0fff519..038f681 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ vendor/ /lint.log /cover.out /cover.html +.idea/ \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 30cf57e..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Ignored default folder with query files -/queries/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/go.imports.xml b/.idea/go.imports.xml deleted file mode 100644 index 644cdf0..0000000 --- a/.idea/go.imports.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/goleak.iml b/.idea/goleak.iml deleted file mode 100644 index 5e764c4..0000000 --- a/.idea/goleak.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/golinter.xml b/.idea/golinter.xml deleted file mode 100644 index 1ccf3ec..0000000 --- a/.idea/golinter.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 55a8285..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file