compose/pkg/e2e
Nicolas De Loof 82a0ad9c44 watch: do not rebuild depends_on services on file change
`compose up --build` populates BuildOptions.Deps=true so the initial
startup also builds images for depends_on services. The watch rebuild
path reused the same BuildOptions pointer, only resetting Build.Services
to the watched service. Build.Deps stayed true, so s.build() switched
back to IncludeDependencies and rebuilt the upstream dependency too.

Fix it by working on a local copy of BuildOptions in rebuild() and
explicitly setting Deps=false. Using a local copy also removes the data
race on the shared pointer when concurrent file events fire.

Also fix a related leak in doBuildBake: the loop populating bake
configuration iterates over every service in the project (needed so
additional_contexts: service:xxx references can resolve), but it was
emitting the "Image X Building" progress event and tracking expected
images for services that were not part of serviceToBeBuild. Filter
those side-effects to the actual build set so the watch rebuild log
shows only the watched service.

Adds an e2e test reproducing the bug.

Fixes #13853

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2026-06-19 11:23:50 +02:00
..
fixtures watch: do not rebuild depends_on services on file change 2026-06-19 11:23:50 +02:00
assert.go fix mixed assertion libraries in tests 2026-03-31 17:32:51 +02:00
bridge_test.go use fixed version of compose bridge transformer images 2025-10-14 09:21:59 +02:00
build_test.go refactor: replace Split in loops with more efficient SplitSeq and replace HasPrefix+TrimPrefix with CutPrefix 2026-06-05 15:52:36 +02:00
cancel_test.go test: replace context.Background()/context.TODO() with t.Context() 2026-01-20 11:34:11 +01:00
cascade_test.go fix linting issues 2025-11-16 14:54:58 +01:00
commit_test.go fix: commit tests 2024-11-27 07:39:46 +01:00
compose_environment_test.go empty env variable with no value must be unset in container 2024-07-10 14:23:34 +02:00
compose_exec_test.go be sure everything has been cleanup at the end of each tests 2024-12-04 15:28:16 +01:00
compose_run_build_once_test.go fix: make e2e tests pass reliably locally with Docker Desktop 2026-05-18 10:55:41 +02:00
compose_run_test.go fix: make e2e tests pass reliably locally with Docker Desktop 2026-05-18 10:55:41 +02:00
compose_test.go fix: make e2e tests pass reliably locally with Docker Desktop 2026-05-18 10:55:41 +02:00
compose_up_test.go fix various linting issues 2025-10-31 17:44:38 +01:00
config_test.go e2e: add tests 2025-05-06 22:33:52 +02:00
configs_test.go be sure everything has been cleanup at the end of each tests 2024-12-04 15:28:16 +01:00
container_name_test.go fix linting issues 2025-11-16 14:54:58 +01:00
cp_test.go align --format flag and UX with docker cli 2022-12-14 22:53:43 +01:00
e2e_config_plugin.go chore(e2e): fix flaky test & standalone behavior (#11382) 2024-01-30 10:49:53 -05:00
e2e_config_standalone.go Use build tags for selecting e2e test mode 2021-12-09 10:52:18 +01:00
env_file_test.go fix: make e2e tests pass reliably locally with Docker Desktop 2026-05-18 10:55:41 +02:00
exec_test.go prefer application container vs one-off running exec without index 2025-09-07 14:41:34 +02:00
export_test.go fix: lint 2024-10-02 21:15:59 +02:00
expose_test.go Fix support for port range 2025-11-16 20:38:54 +01:00
framework.go fix mixed assertion libraries in tests 2026-03-31 17:32:51 +02:00
healthcheck_test.go fix various linting issues 2025-10-31 17:44:38 +01:00
hooks_test.go make sure the post_start hooks fails 2025-06-30 12:37:58 +02:00
ipc_test.go e2e: fix subtests and block parallel unsafe tests 2022-06-15 16:27:30 -04:00
logs_test.go modernize some code 2026-02-12 15:31:35 +01:00
main_test.go Use build tags for selecting e2e test mode 2021-12-09 10:52:18 +01:00
model_test.go fix: make e2e tests pass reliably locally with Docker Desktop 2026-05-18 10:55:41 +02:00
networks_test.go fix: make e2e tests pass reliably locally with Docker Desktop 2026-05-18 10:55:41 +02:00
noDeps_test.go fix linting issues 2025-11-16 14:54:58 +01:00
orphans_test.go be sure everything has been cleanup at the end of each tests 2024-12-04 15:28:16 +01:00
pause_test.go fix: make e2e tests pass reliably locally with Docker Desktop 2026-05-18 10:55:41 +02:00
profiles_test.go COMPOSE_PROFILES can be set by .env file 2024-05-30 07:40:01 +02:00
providers_test.go feat: add stop lifecycle hook for external providers 2026-05-18 11:11:38 +02:00
ps_test.go fix: make e2e tests pass reliably locally with Docker Desktop 2026-05-18 10:55:41 +02:00
publish_test.go fix(publish): prompt on sensitive-looking env literals 2026-05-20 15:48:38 +02:00
pull_test.go distinguish event (short) status text and details 2025-11-04 10:18:55 +01:00
recreate_no_deps_test.go up/start/run: don't wait for disabled service 2022-08-17 12:32:10 -05:00
restart_test.go fix mixed assertion libraries in tests 2026-03-31 17:32:51 +02:00
scale_test.go fix mixed assertion libraries in tests 2026-03-31 17:32:51 +02:00
secrets_test.go Compose can't create a tar with adequate uid:gid ownership 2025-10-20 09:51:58 +02:00
start_stop_test.go fix mixed assertion libraries in tests 2026-03-31 17:32:51 +02:00
up_test.go fix mixed assertion libraries in tests 2026-03-31 17:32:51 +02:00
volumes_test.go compose: recreate container when mounted image digest changes 2026-01-26 15:55:44 +01:00
wait_test.go golangci-lint: use gci formatter instead of goimports 2025-12-01 12:21:50 +01:00
watch_test.go watch: do not rebuild depends_on services on file change 2026-06-19 11:23:50 +02:00