From c6031ad519a4cd9f1fe542bcc6777d6a98d4b591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Thu, 13 Jul 2023 15:07:08 +0200 Subject: [PATCH] integration: Don't env cleanup before parallel subtests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Calling function returned from setupTest (which calls testEnv.Clean) in a defer block inside a test that spawns parallel subtests caused the cleanup function to be called before any of the subtest did anything. Change the defer expressions to use `t.Cleanup` instead to call it only after all subtests have also finished. This only changes tests which have parallel subtests. Signed-off-by: Paweł Gronowski (cherry picked from commit f9e2eed55d014bd29dc54a7300a10be72222fa5f) Signed-off-by: Paweł Gronowski --- integration/build/build_test.go | 4 ++-- integration/container/container_test.go | 2 +- integration/container/create_test.go | 8 ++++---- integration/container/devices_windows_test.go | 2 +- integration/container/mounts_linux_test.go | 2 +- integration/container/stop_linux_test.go | 2 +- integration/container/stop_windows_test.go | 2 +- integration/container/wait_test.go | 8 ++++---- integration/network/network_test.go | 4 ++-- integration/plugin/common/plugin_test.go | 2 +- integration/volume/volume_test.go | 2 +- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/integration/build/build_test.go b/integration/build/build_test.go index 589ebc0a77..3dad23108e 100644 --- a/integration/build/build_test.go +++ b/integration/build/build_test.go @@ -22,7 +22,7 @@ import ( ) func TestBuildWithRemoveAndForceRemove(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) cases := []struct { name string @@ -577,7 +577,7 @@ COPY --from=intermediate C:\\stuff C:\\stuff func TestBuildWithEmptyDockerfile(t *testing.T) { skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.40"), "broken in earlier versions") ctx := context.TODO() - defer setupTest(t)() + t.Cleanup(setupTest(t)) tests := []struct { name string diff --git a/integration/container/container_test.go b/integration/container/container_test.go index 81c5bb7685..e822667615 100644 --- a/integration/container/container_test.go +++ b/integration/container/container_test.go @@ -13,7 +13,7 @@ import ( // TestContainerInvalidJSON tests that POST endpoints that expect a body return // the correct error when sending invalid JSON requests. func TestContainerInvalidJSON(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) // POST endpoints that accept / expect a JSON body; endpoints := []string{ diff --git a/integration/container/create_test.go b/integration/container/create_test.go index aab6addb11..b5c913053a 100644 --- a/integration/container/create_test.go +++ b/integration/container/create_test.go @@ -25,7 +25,7 @@ import ( ) func TestCreateFailsWhenIdentifierDoesNotExist(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) client := testEnv.APIClient() testCases := []struct { @@ -91,7 +91,7 @@ func TestCreateLinkToNonExistingContainer(t *testing.T) { } func TestCreateWithInvalidEnv(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) client := testEnv.APIClient() testCases := []struct { @@ -337,7 +337,7 @@ func TestCreateWithCustomReadonlyPaths(t *testing.T) { } func TestCreateWithInvalidHealthcheckParams(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) client := testEnv.APIClient() ctx := context.Background() @@ -532,7 +532,7 @@ func TestCreatePlatformSpecificImageNoPlatform(t *testing.T) { func TestCreateInvalidHostConfig(t *testing.T) { skip.If(t, testEnv.DaemonInfo.OSType == "windows") - defer setupTest(t)() + t.Cleanup(setupTest(t)) apiClient := testEnv.APIClient() ctx := context.Background() diff --git a/integration/container/devices_windows_test.go b/integration/container/devices_windows_test.go index 1ab5c6e690..a966694194 100644 --- a/integration/container/devices_windows_test.go +++ b/integration/container/devices_windows_test.go @@ -18,7 +18,7 @@ import ( // via HostConfig.Devices through to the implementation in hcsshim. func TestWindowsDevices(t *testing.T) { skip.If(t, testEnv.DaemonInfo.OSType != "windows") - defer setupTest(t)() + t.Cleanup(setupTest(t)) client := testEnv.APIClient() ctx := context.Background() diff --git a/integration/container/mounts_linux_test.go b/integration/container/mounts_linux_test.go index 3c7aabda24..fa14674398 100644 --- a/integration/container/mounts_linux_test.go +++ b/integration/container/mounts_linux_test.go @@ -88,7 +88,7 @@ func TestContainerNetworkMountsNoChown(t *testing.T) { func TestMountDaemonRoot(t *testing.T) { skip.If(t, testEnv.IsRemoteDaemon) - defer setupTest(t)() + t.Cleanup(setupTest(t)) client := testEnv.APIClient() ctx := context.Background() info, err := client.Info(ctx) diff --git a/integration/container/stop_linux_test.go b/integration/container/stop_linux_test.go index 9cfe42351d..a26fdbcd3b 100644 --- a/integration/container/stop_linux_test.go +++ b/integration/container/stop_linux_test.go @@ -27,7 +27,7 @@ import ( // a timeout works as documented, i.e. in case of negative timeout // waiting is not limited (issue #35311). func TestStopContainerWithTimeout(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) client := testEnv.APIClient() ctx := context.Background() diff --git a/integration/container/stop_windows_test.go b/integration/container/stop_windows_test.go index 65683822e9..27bcdce54c 100644 --- a/integration/container/stop_windows_test.go +++ b/integration/container/stop_windows_test.go @@ -18,7 +18,7 @@ import ( // waiting is not limited (issue #35311). func TestStopContainerWithTimeout(t *testing.T) { skip.If(t, testEnv.OSType == "windows") - defer setupTest(t)() + t.Cleanup(setupTest(t)) client := testEnv.APIClient() ctx := context.Background() diff --git a/integration/container/wait_test.go b/integration/container/wait_test.go index cfe5bd3da8..12c66a2a7f 100644 --- a/integration/container/wait_test.go +++ b/integration/container/wait_test.go @@ -16,7 +16,7 @@ import ( ) func TestWaitNonBlocked(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) cli := request.NewAPIClient(t) testCases := []struct { @@ -59,7 +59,7 @@ func TestWaitBlocked(t *testing.T) { // Windows busybox does not support trap in this way, not sleep with sub-second // granularity. It will always exit 0x40010004. skip.If(t, testEnv.DaemonInfo.OSType != "linux") - defer setupTest(t)() + t.Cleanup(setupTest(t)) cli := request.NewAPIClient(t) testCases := []struct { @@ -104,7 +104,7 @@ func TestWaitBlocked(t *testing.T) { } func TestWaitConditions(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) cli := request.NewAPIClient(t) testCases := []struct { @@ -159,7 +159,7 @@ func TestWaitConditions(t *testing.T) { } func TestWaitRestartedContainer(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) cli := request.NewAPIClient(t) testCases := []struct { diff --git a/integration/network/network_test.go b/integration/network/network_test.go index 00603094a2..96d2a08e41 100644 --- a/integration/network/network_test.go +++ b/integration/network/network_test.go @@ -65,7 +65,7 @@ func TestRunContainerWithBridgeNone(t *testing.T) { // TestNetworkInvalidJSON tests that POST endpoints that expect a body return // the correct error when sending invalid JSON requests. func TestNetworkInvalidJSON(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) // POST endpoints that accept / expect a JSON body; endpoints := []string{ @@ -124,7 +124,7 @@ func TestNetworkInvalidJSON(t *testing.T) { // TestNetworkList verifies that /networks returns a list of networks either // with, or without a trailing slash (/networks/). Regression test for https://github.com/moby/moby/issues/24595 func TestNetworkList(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) endpoints := []string{ "/networks", diff --git a/integration/plugin/common/plugin_test.go b/integration/plugin/common/plugin_test.go index 37ef0b3374..f988cce467 100644 --- a/integration/plugin/common/plugin_test.go +++ b/integration/plugin/common/plugin_test.go @@ -32,7 +32,7 @@ import ( // TestPluginInvalidJSON tests that POST endpoints that expect a body return // the correct error when sending invalid JSON requests. func TestPluginInvalidJSON(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) // POST endpoints that accept / expect a JSON body; endpoints := []string{ diff --git a/integration/volume/volume_test.go b/integration/volume/volume_test.go index e3d0cd7b96..617f8957f8 100644 --- a/integration/volume/volume_test.go +++ b/integration/volume/volume_test.go @@ -197,7 +197,7 @@ func TestVolumesInspect(t *testing.T) { // TestVolumesInvalidJSON tests that POST endpoints that expect a body return // the correct error when sending invalid JSON requests. func TestVolumesInvalidJSON(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) // POST endpoints that accept / expect a JSON body; endpoints := []string{"/volumes/create"}