From f9e2eed55d014bd29dc54a7300a10be72222fa5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Thu, 13 Jul 2023 13:41:00 +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 --- 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 2c8f949768..07aa20f5b4 100644 --- a/integration/container/create_test.go +++ b/integration/container/create_test.go @@ -24,7 +24,7 @@ import ( ) func TestCreateFailsWhenIdentifierDoesNotExist(t *testing.T) { - defer setupTest(t)() + t.Cleanup(setupTest(t)) client := testEnv.APIClient() testCases := []struct { @@ -90,7 +90,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 7216f22adb..3b11cee378 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 26f0eaad43..7a95bb984e 100644 --- a/integration/container/mounts_linux_test.go +++ b/integration/container/mounts_linux_test.go @@ -91,7 +91,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 ae3c1471c4..1ca5f7c690 100644 --- a/integration/container/stop_linux_test.go +++ b/integration/container/stop_linux_test.go @@ -24,7 +24,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 3dc3d33a88..9a9e441729 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.DaemonInfo.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 9140faa2f6..47b5640575 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 { @@ -179,7 +179,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 a9ee0d86e6..010102e9e0 100644 --- a/integration/network/network_test.go +++ b/integration/network/network_test.go @@ -67,7 +67,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{ @@ -126,7 +126,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 75ebacc767..5258d1487d 100644 --- a/integration/plugin/common/plugin_test.go +++ b/integration/plugin/common/plugin_test.go @@ -33,7 +33,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 bfc7ce38a3..c5836d0121 100644 --- a/integration/volume/volume_test.go +++ b/integration/volume/volume_test.go @@ -196,7 +196,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"}