diff --git a/cmd/compose/run.go b/cmd/compose/run.go index 3d0cb6dec..ada590ccd 100644 --- a/cmd/compose/run.go +++ b/cmd/compose/run.go @@ -63,6 +63,13 @@ type runOptions struct { } func (options runOptions) apply(project *types.Project) error { + if options.noDeps { + err := project.ForServices([]string{options.Service}, types.IgnoreDependencies) + if err != nil { + return err + } + } + target, err := project.GetService(options.Service) if err != nil { return err @@ -93,13 +100,6 @@ func (options runOptions) apply(project *types.Project) error { } } - if options.noDeps { - err := project.ForServices([]string{options.Service}, types.IgnoreDependencies) - if err != nil { - return err - } - } - for i, s := range project.Services { if s.Name == options.Service { project.Services[i] = target diff --git a/pkg/e2e/compose_run_test.go b/pkg/e2e/compose_run_test.go index d0ad12a2d..40ce272f4 100644 --- a/pkg/e2e/compose_run_test.go +++ b/pkg/e2e/compose_run_test.go @@ -136,4 +136,12 @@ func TestLocalComposeRun(t *testing.T) { c.RunDockerComposeCmd(t, "-f", "./fixtures/run-test/deps.yaml", "down", "--remove-orphans") }) + + t.Run("run without dependencies", func(t *testing.T) { + res := c.RunDockerComposeCmd(t, "-f", "./fixtures/run-test/deps.yaml", "run", "--no-deps", "service_a") + assert.Assert(t, !strings.Contains(res.Combined(), "shared_dep"), res.Combined()) + assert.Assert(t, !strings.Contains(res.Combined(), "service_b"), res.Combined()) + + c.RunDockerComposeCmd(t, "-f", "./fixtures/run-test/deps.yaml", "down", "--remove-orphans") + }) }