From 585c147b7a78c02f04773ab611bb41268ed1aa3b Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 2 Jun 2022 16:33:43 +0200 Subject: [PATCH] fix flaky TestRunContainerWithRmFlag tests This attempts to fix CI flakiness on the TestRunContainerWithRmFlagCannotStartContainer and TestRunContainerWithRmFlagExitCodeNotEqualToZero tests. These tests; - get a list of all container ID's - run a container with `--rm` - wait for it to exit - checks that the list of all container IDs is empty The last step assumes that no other tests are running on the same daemon; if another test is running, there may be other containers present (unrelated to the test). This patch updates the tests to use a `docker inspect` to verify the container no longer exists afterwards. Signed-off-by: Sebastiaan van Stijn --- integration-cli/docker_cli_run_test.go | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/integration-cli/docker_cli_run_test.go b/integration-cli/docker_cli_run_test.go index ea80139eac..18397e8ed4 100644 --- a/integration-cli/docker_cli_run_test.go +++ b/integration-cli/docker_cli_run_test.go @@ -2745,30 +2745,29 @@ func (s *DockerSuite) TestRunVolumesFromRestartAfterRemoved(c *testing.T) { // run container with --rm should remove container if exit code != 0 func (s *DockerSuite) TestRunContainerWithRmFlagExitCodeNotEqualToZero(c *testing.T) { - existingContainers := ExistingContainerIDs(c) name := "flowers" cli.Docker(cli.Args("run", "--name", name, "--rm", "busybox", "ls", "/notexists")).Assert(c, icmd.Expected{ ExitCode: 1, }) - out := cli.DockerCmd(c, "ps", "-q", "-a").Combined() - out = RemoveOutputForExistingElements(out, existingContainers) - if out != "" { - c.Fatal("Expected not to have containers", out) - } + cli.Docker(cli.Args("container", "inspect", name)).Assert(c, icmd.Expected{ + ExitCode: 1, + Out: "[]\n", + Err: "o such container", // (N|n)o such container + }) } func (s *DockerSuite) TestRunContainerWithRmFlagCannotStartContainer(c *testing.T) { - existingContainers := ExistingContainerIDs(c) name := "sparkles" cli.Docker(cli.Args("run", "--name", name, "--rm", "busybox", "commandNotFound")).Assert(c, icmd.Expected{ ExitCode: 127, }) - out := cli.DockerCmd(c, "ps", "-q", "-a").Combined() - out = RemoveOutputForExistingElements(out, existingContainers) - if out != "" { - c.Fatal("Expected not to have containers", out) - } + + cli.Docker(cli.Args("container", "inspect", name)).Assert(c, icmd.Expected{ + ExitCode: 1, + Out: "[]\n", + Err: "o such container", // (N|n)o such container + }) } func (s *DockerSuite) TestRunPIDHostWithChildIsKillable(c *testing.T) {