From 1d12f98f85e3bd7eac732e6e099050bd3a37eabb Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Sat, 18 Apr 2026 15:46:35 -0700 Subject: [PATCH] tests/int: fix TestHook flakiness Since commit 3cdda46 the poststart hooks runs after the container process start, and so they race. Move the poststart hook check to a separate step after the container process has exited. Fixes 5245. Signed-off-by: Kir Kolyshkin --- libcontainer/integration/exec_test.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libcontainer/integration/exec_test.go b/libcontainer/integration/exec_test.go index cd0df282b..e1cb8151c 100644 --- a/libcontainer/integration/exec_test.go +++ b/libcontainer/integration/exec_test.go @@ -1075,11 +1075,14 @@ func TestHook(t *testing.T) { container, err := newContainer(t, config) ok(t, err) - // e.g: 'ls /prestart ...' var cmd strings.Builder cmd.WriteString("ls ") for _, hook := range hookFiles { - cmd.WriteString("/" + hook + " ") + // The poststart hook is racing with this ls command (run as the + // container init), so we don't check that hook worked here yet. + if hook != "poststart" { + cmd.WriteString("/" + hook + " ") + } } var stdout strings.Builder @@ -1098,6 +1101,13 @@ func TestHook(t *testing.T) { // Wait for process waitProcess(&pconfig, t) + // Check that poststart hook worked. + f, err = os.Open(config.Rootfs + "/poststart") + if err != nil { + t.Fatalf("poststart hook failed: %s", err) + } + f.Close() + if err := container.Destroy(); err != nil { t.Fatalf("container destroy %s", err) }