From ac45bb82985b8fe8b66302311d9dac14ffd7bb47 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Mon, 17 Aug 2026 14:13:47 +0200 Subject: [PATCH] test(e2e): gate the e2e suite behind the build tag the docs already promise MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AGENTS.md documents 'Test unit: go test ./pkg/...' and 'E2E tests: go test -tags e2e ./pkg/e2e/'. Both statements were false: no file in pkg/e2e carried an e2e build constraint, so the -tags flag was a no-op and the 'unit' command actually launched the full e2e suite — requiring a Docker daemon and the locally built binary, creating and destroying containers, for up to 20 minutes. CI only avoided this by grepping e2e out of the package list (Dockerfile). Every *_test.go in pkg/e2e now carries //go:build e2e (merged with the existing !windows constraints), and the Makefile e2e targets pass the tag. The documented commands become true: - go test ./pkg/... -> pkg/e2e reports [no test files] - go test -tags e2e ./pkg/e2e -> runs the suite AGENTS.md now also states the daemon/binary prerequisites explicitly. Part of #14074 (A: the code misdescribes its own structure). Signed-off-by: Nicolas De Loof --- AGENTS.md | 6 ++++-- Makefile | 4 ++-- pkg/e2e/bridge_test.go | 2 ++ pkg/e2e/build_test.go | 2 ++ pkg/e2e/cancel_test.go | 2 +- pkg/e2e/cascade_test.go | 2 +- pkg/e2e/commit_test.go | 2 ++ pkg/e2e/compose_environment_test.go | 2 ++ pkg/e2e/compose_exec_test.go | 2 ++ pkg/e2e/compose_run_build_once_test.go | 2 ++ pkg/e2e/compose_run_test.go | 2 ++ pkg/e2e/compose_test.go | 2 ++ pkg/e2e/compose_up_test.go | 2 ++ pkg/e2e/config_test.go | 2 ++ pkg/e2e/configs_test.go | 2 ++ pkg/e2e/container_name_test.go | 2 +- pkg/e2e/cp_test.go | 2 ++ pkg/e2e/env_file_test.go | 2 ++ pkg/e2e/events_test.go | 2 ++ pkg/e2e/exec_test.go | 2 ++ pkg/e2e/export_test.go | 2 ++ pkg/e2e/expose_test.go | 2 +- pkg/e2e/healthcheck_test.go | 2 ++ pkg/e2e/hooks_test.go | 2 ++ pkg/e2e/image_identity_corner_test.go | 2 ++ pkg/e2e/image_identity_test.go | 2 ++ pkg/e2e/images_test.go | 2 ++ pkg/e2e/ipc_test.go | 2 ++ pkg/e2e/logs_test.go | 2 ++ pkg/e2e/main_test.go | 2 ++ pkg/e2e/model_test.go | 2 ++ pkg/e2e/multiplatform_test.go | 2 ++ pkg/e2e/networks_test.go | 2 ++ pkg/e2e/noDeps_test.go | 2 +- pkg/e2e/orphans_test.go | 2 ++ pkg/e2e/pause_test.go | 2 ++ pkg/e2e/profiles_test.go | 2 ++ pkg/e2e/providers_test.go | 2 ++ pkg/e2e/ps_test.go | 2 ++ pkg/e2e/publish_test.go | 2 ++ pkg/e2e/pull_test.go | 2 ++ pkg/e2e/recreate_no_deps_test.go | 2 ++ pkg/e2e/restart_test.go | 2 ++ pkg/e2e/scale_test.go | 2 ++ pkg/e2e/secrets_test.go | 2 ++ pkg/e2e/start_stop_test.go | 2 ++ pkg/e2e/testdata_test.go | 2 ++ pkg/e2e/up_test.go | 2 +- pkg/e2e/volumes_test.go | 2 ++ pkg/e2e/wait_test.go | 2 ++ pkg/e2e/watch_test.go | 2 ++ 51 files changed, 98 insertions(+), 10 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index e91c95f52ae..ab2ff6128d0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,9 +4,11 @@ - Build: `make build` - Test all: `make test` -- Test unit: `go test ./pkg/...` +- Test unit: `go test ./pkg/...` — needs no Docker daemon; the e2e suite is + gated behind the `e2e` build tag and is not picked up - Test single: `go test ./pkg/compose/ -run TestFunctionName` -- E2E tests: `go test -tags e2e ./pkg/e2e/ -run TestName` +- E2E tests: `go test -tags e2e ./pkg/e2e/ -run TestName` — requires a Docker + daemon and the locally built binary (`make build`) ## E2E tests diff --git a/Makefile b/Makefile index 14542e2e527..db04afa0a0a 100644 --- a/Makefile +++ b/Makefile @@ -77,11 +77,11 @@ install: binary .PHONY: e2e-compose e2e-compose: example-provider ## Run end to end local tests in plugin mode. Set E2E_TEST=TestName to run a single test - go run gotest.tools/gotestsum@latest --format testname --junitfile "/tmp/report/report.xml" -- -v $(TEST_FLAGS) -count=1 -parallel=$(E2E_PARALLEL_PLUGIN) -timeout 20m ./pkg/e2e + go run gotest.tools/gotestsum@latest --format testname --junitfile "/tmp/report/report.xml" -- -v $(TEST_FLAGS) -count=1 -parallel=$(E2E_PARALLEL_PLUGIN) -timeout 20m -tags e2e ./pkg/e2e .PHONY: e2e-compose-standalone e2e-compose-standalone: ## Run End to end local tests in standalone mode. Set E2E_TEST=TestName to run a single test - go run gotest.tools/gotestsum@latest --format testname --junitfile "/tmp/report/report.xml" -- $(TEST_FLAGS) -v -count=1 -parallel=$(E2E_STANDALONE_PARALLEL) -timeout 20m --tags=standalone ./pkg/e2e + go run gotest.tools/gotestsum@latest --format testname --junitfile "/tmp/report/report.xml" -- $(TEST_FLAGS) -v -count=1 -parallel=$(E2E_STANDALONE_PARALLEL) -timeout 20m --tags=e2e,standalone ./pkg/e2e .PHONY: build-and-e2e-compose build-and-e2e-compose: build e2e-compose ## Compile the compose cli-plugin and run end to end local tests in plugin mode. Set E2E_TEST=TestName to run a single test diff --git a/pkg/e2e/bridge_test.go b/pkg/e2e/bridge_test.go index 7212bcaf2c0..19f8eec4788 100644 --- a/pkg/e2e/bridge_test.go +++ b/pkg/e2e/bridge_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/build_test.go b/pkg/e2e/build_test.go index 25fd08b4fd3..1b58c074aeb 100644 --- a/pkg/e2e/build_test.go +++ b/pkg/e2e/build_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/cancel_test.go b/pkg/e2e/cancel_test.go index 64f3ff609a9..4802d64abbc 100644 --- a/pkg/e2e/cancel_test.go +++ b/pkg/e2e/cancel_test.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build e2e && !windows /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/cascade_test.go b/pkg/e2e/cascade_test.go index a201acc2b31..f9f72ca1ef9 100644 --- a/pkg/e2e/cascade_test.go +++ b/pkg/e2e/cascade_test.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build e2e && !windows /* Copyright 2022 Docker Compose CLI authors diff --git a/pkg/e2e/commit_test.go b/pkg/e2e/commit_test.go index 7298b6e7985..c0e3217ac5f 100644 --- a/pkg/e2e/commit_test.go +++ b/pkg/e2e/commit_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2023 Docker Compose CLI authors diff --git a/pkg/e2e/compose_environment_test.go b/pkg/e2e/compose_environment_test.go index 36fa855042e..447104c963d 100644 --- a/pkg/e2e/compose_environment_test.go +++ b/pkg/e2e/compose_environment_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/compose_exec_test.go b/pkg/e2e/compose_exec_test.go index 9e58d566842..b5cf163da93 100644 --- a/pkg/e2e/compose_exec_test.go +++ b/pkg/e2e/compose_exec_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/compose_run_build_once_test.go b/pkg/e2e/compose_run_build_once_test.go index 31b124665c3..608adfe1278 100644 --- a/pkg/e2e/compose_run_build_once_test.go +++ b/pkg/e2e/compose_run_build_once_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/compose_run_test.go b/pkg/e2e/compose_run_test.go index 3a80fdc86bb..31feafe504e 100644 --- a/pkg/e2e/compose_run_test.go +++ b/pkg/e2e/compose_run_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/compose_test.go b/pkg/e2e/compose_test.go index f0ff1da0707..59d6cdd481a 100644 --- a/pkg/e2e/compose_test.go +++ b/pkg/e2e/compose_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/compose_up_test.go b/pkg/e2e/compose_up_test.go index 35296d8f2c8..66e8837a023 100644 --- a/pkg/e2e/compose_up_test.go +++ b/pkg/e2e/compose_up_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/config_test.go b/pkg/e2e/config_test.go index 585ee7419fc..0be97c28ebd 100644 --- a/pkg/e2e/config_test.go +++ b/pkg/e2e/config_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/configs_test.go b/pkg/e2e/configs_test.go index 899c5168ff3..05b2c99bf62 100644 --- a/pkg/e2e/configs_test.go +++ b/pkg/e2e/configs_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/container_name_test.go b/pkg/e2e/container_name_test.go index 79332ab6ac8..2f0fac79000 100644 --- a/pkg/e2e/container_name_test.go +++ b/pkg/e2e/container_name_test.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build e2e && !windows /* Copyright 2022 Docker Compose CLI authors diff --git a/pkg/e2e/cp_test.go b/pkg/e2e/cp_test.go index e9ea7691ad4..5847af4e96e 100644 --- a/pkg/e2e/cp_test.go +++ b/pkg/e2e/cp_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/env_file_test.go b/pkg/e2e/env_file_test.go index 5a5a9643065..c7ae466dcb4 100644 --- a/pkg/e2e/env_file_test.go +++ b/pkg/e2e/env_file_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/events_test.go b/pkg/e2e/events_test.go index 1c9b19334a4..ef20d7264c1 100644 --- a/pkg/e2e/events_test.go +++ b/pkg/e2e/events_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/exec_test.go b/pkg/e2e/exec_test.go index 1f8d1018c0b..d5e70087f4b 100644 --- a/pkg/e2e/exec_test.go +++ b/pkg/e2e/exec_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2023 Docker Compose CLI authors diff --git a/pkg/e2e/export_test.go b/pkg/e2e/export_test.go index 5cceb693a18..12444880062 100644 --- a/pkg/e2e/export_test.go +++ b/pkg/e2e/export_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2023 Docker Compose CLI authors diff --git a/pkg/e2e/expose_test.go b/pkg/e2e/expose_test.go index f7e7d3c2f4a..0fb7d4d15db 100644 --- a/pkg/e2e/expose_test.go +++ b/pkg/e2e/expose_test.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build e2e && !windows /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/healthcheck_test.go b/pkg/e2e/healthcheck_test.go index 2cb42fd54a5..b25376f9cc3 100644 --- a/pkg/e2e/healthcheck_test.go +++ b/pkg/e2e/healthcheck_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2023 Docker Compose CLI authors diff --git a/pkg/e2e/hooks_test.go b/pkg/e2e/hooks_test.go index 8d44de83801..e7db829f33a 100644 --- a/pkg/e2e/hooks_test.go +++ b/pkg/e2e/hooks_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2023 Docker Compose CLI authors diff --git a/pkg/e2e/image_identity_corner_test.go b/pkg/e2e/image_identity_corner_test.go index 810304219af..4f2d3154ffa 100644 --- a/pkg/e2e/image_identity_corner_test.go +++ b/pkg/e2e/image_identity_corner_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2026 Docker Compose CLI authors diff --git a/pkg/e2e/image_identity_test.go b/pkg/e2e/image_identity_test.go index dd1a9b01f9f..b2e881c15ff 100644 --- a/pkg/e2e/image_identity_test.go +++ b/pkg/e2e/image_identity_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/images_test.go b/pkg/e2e/images_test.go index 8511d7ff85a..5ffdf3a1097 100644 --- a/pkg/e2e/images_test.go +++ b/pkg/e2e/images_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2026 Docker Compose CLI authors diff --git a/pkg/e2e/ipc_test.go b/pkg/e2e/ipc_test.go index 010854b60ea..63dcddb9558 100644 --- a/pkg/e2e/ipc_test.go +++ b/pkg/e2e/ipc_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/logs_test.go b/pkg/e2e/logs_test.go index afc2e089081..493385dae88 100644 --- a/pkg/e2e/logs_test.go +++ b/pkg/e2e/logs_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/main_test.go b/pkg/e2e/main_test.go index 415987bc71b..9a710c7a9cd 100644 --- a/pkg/e2e/main_test.go +++ b/pkg/e2e/main_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/model_test.go b/pkg/e2e/model_test.go index a9e6d3d6fd1..baeb6c3d24a 100644 --- a/pkg/e2e/model_test.go +++ b/pkg/e2e/model_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/multiplatform_test.go b/pkg/e2e/multiplatform_test.go index 651c51519b1..2590a43408b 100644 --- a/pkg/e2e/multiplatform_test.go +++ b/pkg/e2e/multiplatform_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2026 Docker Compose CLI authors diff --git a/pkg/e2e/networks_test.go b/pkg/e2e/networks_test.go index 438e31eb284..462ccb35d73 100644 --- a/pkg/e2e/networks_test.go +++ b/pkg/e2e/networks_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/noDeps_test.go b/pkg/e2e/noDeps_test.go index deacbf023bd..f1ad0be2c93 100644 --- a/pkg/e2e/noDeps_test.go +++ b/pkg/e2e/noDeps_test.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build e2e && !windows /* Copyright 2022 Docker Compose CLI authors diff --git a/pkg/e2e/orphans_test.go b/pkg/e2e/orphans_test.go index 0e12a494a1e..77eff1562c5 100644 --- a/pkg/e2e/orphans_test.go +++ b/pkg/e2e/orphans_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/pause_test.go b/pkg/e2e/pause_test.go index d8b037c26ca..0fa4489138c 100644 --- a/pkg/e2e/pause_test.go +++ b/pkg/e2e/pause_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/profiles_test.go b/pkg/e2e/profiles_test.go index 6c1256a05f4..0a2883aa848 100644 --- a/pkg/e2e/profiles_test.go +++ b/pkg/e2e/profiles_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/providers_test.go b/pkg/e2e/providers_test.go index 91b0ab04504..0b8031c3f4a 100644 --- a/pkg/e2e/providers_test.go +++ b/pkg/e2e/providers_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/ps_test.go b/pkg/e2e/ps_test.go index 8ea47f7463b..2aae0a53ae1 100644 --- a/pkg/e2e/ps_test.go +++ b/pkg/e2e/ps_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/publish_test.go b/pkg/e2e/publish_test.go index e8c46c7d0ab..902c5422151 100644 --- a/pkg/e2e/publish_test.go +++ b/pkg/e2e/publish_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/pull_test.go b/pkg/e2e/pull_test.go index 979b08de42a..906fff4f674 100644 --- a/pkg/e2e/pull_test.go +++ b/pkg/e2e/pull_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/recreate_no_deps_test.go b/pkg/e2e/recreate_no_deps_test.go index 8ba94b74eba..e9a5b0267c5 100644 --- a/pkg/e2e/recreate_no_deps_test.go +++ b/pkg/e2e/recreate_no_deps_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2022 Docker Compose CLI authors diff --git a/pkg/e2e/restart_test.go b/pkg/e2e/restart_test.go index 21746e0dce0..6f0e316b6ab 100644 --- a/pkg/e2e/restart_test.go +++ b/pkg/e2e/restart_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/scale_test.go b/pkg/e2e/scale_test.go index 92e135075ee..9184d03a498 100644 --- a/pkg/e2e/scale_test.go +++ b/pkg/e2e/scale_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/secrets_test.go b/pkg/e2e/secrets_test.go index 3147c3765b5..78ead037d77 100644 --- a/pkg/e2e/secrets_test.go +++ b/pkg/e2e/secrets_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/start_stop_test.go b/pkg/e2e/start_stop_test.go index bad7fdb4a2e..5bf1f3e589d 100644 --- a/pkg/e2e/start_stop_test.go +++ b/pkg/e2e/start_stop_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/testdata_test.go b/pkg/e2e/testdata_test.go index 780fa27827c..b0e43b45d70 100644 --- a/pkg/e2e/testdata_test.go +++ b/pkg/e2e/testdata_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/up_test.go b/pkg/e2e/up_test.go index c4d0856a14f..01c11b7b932 100644 --- a/pkg/e2e/up_test.go +++ b/pkg/e2e/up_test.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build e2e && !windows /* Copyright 2022 Docker Compose CLI authors diff --git a/pkg/e2e/volumes_test.go b/pkg/e2e/volumes_test.go index 0407f016a3f..1827d9fbba7 100644 --- a/pkg/e2e/volumes_test.go +++ b/pkg/e2e/volumes_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/wait_test.go b/pkg/e2e/wait_test.go index 23a80020d14..b8fb8d86d7a 100644 --- a/pkg/e2e/wait_test.go +++ b/pkg/e2e/wait_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2020 Docker Compose CLI authors diff --git a/pkg/e2e/watch_test.go b/pkg/e2e/watch_test.go index 225d7fa065e..7267918505c 100644 --- a/pkg/e2e/watch_test.go +++ b/pkg/e2e/watch_test.go @@ -1,3 +1,5 @@ +//go:build e2e + /* Copyright 2023 Docker Compose CLI authors