From 090432e596fa4e3e898799ebf090701ef188d556 Mon Sep 17 00:00:00 2001 From: ziggy Date: Fri, 10 Jul 2026 18:16:19 +0300 Subject: [PATCH] Preserve INFO severity for signal-cli stderr --- src/client/cli.go | 21 ++++++++++++++++++--- src/client/cli_test.go | 10 ++++++++-- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/client/cli.go b/src/client/cli.go index 0c82bda..4d516d5 100644 --- a/src/client/cli.go +++ b/src/client/cli.go @@ -55,10 +55,25 @@ func classifySignalCliOutput(stdout string, stderr string) (string, string, stri output, infoMessages, warnMessages := stripInfoAndWarnMessages(stdout) stderr = strings.TrimSpace(stderr) if stderr != "" { - if warnMessages != "" { - warnMessages += "\n" + stderrOutput, stderrInfoMessages, stderrWarnMessages := stripInfoAndWarnMessages(stderr) + if stderrInfoMessages != "" { + if infoMessages != "" { + infoMessages += "\n" + } + infoMessages += stderrInfoMessages + } + if stderrWarnMessages != "" { + if warnMessages != "" { + warnMessages += "\n" + } + warnMessages += stderrWarnMessages + } + if stderrOutput != "" { + if warnMessages != "" { + warnMessages += "\n" + } + warnMessages += stderrOutput } - warnMessages += stderr } return output, infoMessages, warnMessages } diff --git a/src/client/cli_test.go b/src/client/cli_test.go index 05e6cd1..c2ffd3d 100644 --- a/src/client/cli_test.go +++ b/src/client/cli_test.go @@ -7,13 +7,19 @@ import ( func TestClassifySignalCliOutputKeepsStderrOutOfResponse(t *testing.T) { stdout := "{\"account\":\"+380000000001\"}\n" - stderr := "WARN IncomingMessageHandler - Invalid content! reason\njava.lang.Throwable\n\tat example" + stderr := "INFO Manager - Routine status\nWARN IncomingMessageHandler - Invalid content! reason\njava.lang.Throwable\n\tat example" - output, _, warnings := classifySignalCliOutput(stdout, stderr) + output, infos, warnings := classifySignalCliOutput(stdout, stderr) if output != strings.TrimSpace(stdout) { t.Fatalf("got output %q, wanted %q", output, strings.TrimSpace(stdout)) } + if !strings.Contains(infos, "INFO Manager - Routine status") { + t.Fatalf("INFO stderr was not preserved at INFO severity: %q", infos) + } + if strings.Contains(warnings, "INFO Manager - Routine status") { + t.Fatalf("INFO stderr was promoted to warning severity: %q", warnings) + } if !strings.Contains(warnings, "Invalid content! reason") || !strings.Contains(warnings, "java.lang.Throwable") { t.Fatalf("warnings did not preserve stderr: %q", warnings) }