From b76fd8c982fa7d08467352d6c1f00c6552df63d7 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 25 Sep 2026 14:11:30 +0200 Subject: [PATCH] apparmor: validateProfile: avoid failures on unrelated STDERR output This was failing if a non-fatal warning was printed on STDERR; === RUN TestGenerateProfileName apparmor_linux_test.go:325: parsed profile names = ["Cache read/write disabled: interface file missing. (Kernel needs AppArmor 2.4 compatibility patch.)" "foo\"bar,*?[ab]{c,d}^\\baz"], want ["foo\"bar,*?[ab]{c,d}^\\baz"] Use Cmd.Output when validating generated profiles so that warnings written to stderr are not interpreted as declared profile names. Preserve stderr from failed parser invocations in the test failure output. updates aa2b3fddd370df6bc6b8174444aa742be27ac344 Signed-off-by: Sebastiaan van Stijn --- apparmor/apparmor_linux_test.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apparmor/apparmor_linux_test.go b/apparmor/apparmor_linux_test.go index 7a0306f..09b46f1 100644 --- a/apparmor/apparmor_linux_test.go +++ b/apparmor/apparmor_linux_test.go @@ -381,9 +381,13 @@ func validateProfile(t *testing.T, profile string) []string { cmd := exec.CommandContext(ctx, "apparmor_parser", "-N", "-Q", "-K") cmd.Stdin = strings.NewReader(profile) - out, err := cmd.CombinedOutput() + out, err := cmd.Output() if err != nil { - t.Fatalf("parsing generated profile: %v\n%s", err, out) + var exitErr *exec.ExitError + if errors.As(err, &exitErr) { + t.Fatalf("parsing generated profile: %v\n%s", err, exitErr.Stderr) + } + t.Fatalf("parsing generated profile: %v", err) } return strings.Split(strings.TrimSuffix(string(out), "\n"), "\n") }