diff --git a/cli/formatter/logs.go b/cli/formatter/logs.go index 3bfbbbff..83eb4d4d 100644 --- a/cli/formatter/logs.go +++ b/cli/formatter/logs.go @@ -53,7 +53,7 @@ func (l *logConsumer) Log(service, container, message string) { func (l *logConsumer) Status(service, container, msg string) { cf := l.getColorFunc(service) - buf := bytes.NewBufferString(fmt.Sprintf("%s %s \n", cf(container), cf(msg))) + buf := bytes.NewBufferString(cf(fmt.Sprintf("%s %s\n", container, msg))) l.writer.Write(buf.Bytes()) // nolint:errcheck } diff --git a/local/compose/start.go b/local/compose/start.go index 47cdb470..3315587e 100644 --- a/local/compose/start.go +++ b/local/compose/start.go @@ -62,7 +62,7 @@ func (s *composeService) Start(ctx context.Context, project *types.Project, opti select { case status := <-statusC: service := c.Labels[serviceLabel] - options.Attach.Status(service, getContainerNameWithoutProject(c), fmt.Sprintf("exited with code %d", status.StatusCode)) + options.Attach.Status(service, getCanonicalContainerName(c), fmt.Sprintf("exited with code %d", status.StatusCode)) if options.Listener != nil { options.Listener <- compose.Event{ Service: service, diff --git a/local/e2e/compose/cascade_stop_test.go b/local/e2e/compose/cascade_stop_test.go new file mode 100644 index 00000000..449e825e --- /dev/null +++ b/local/e2e/compose/cascade_stop_test.go @@ -0,0 +1,36 @@ +/* + Copyright 2020 Docker Compose CLI authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package e2e + +import ( + "testing" + + "gotest.tools/v3/icmd" + + . "github.com/docker/compose-cli/utils/e2e" +) + +func TestCascadeStop(t *testing.T) { + c := NewParallelE2eCLI(t, binDir) + + const projectName = "compose-e2e-logs" + + res := c.RunDockerCmd("compose", "-f", "./fixtures/cascade-stop-test/compose.yaml", "--project-name", projectName, "up", "--abort-on-container-exit") + res.Assert(t, icmd.Expected{Out: `PING localhost (127.0.0.1)`}) + res.Assert(t, icmd.Expected{Out: `ping_1 exited with code 0`}) + res.Assert(t, icmd.Expected{Out: `Aborting on container exit...`}) +} diff --git a/local/e2e/compose/fixtures/cascade-stop-test/compose.yaml b/local/e2e/compose/fixtures/cascade-stop-test/compose.yaml new file mode 100644 index 00000000..24ef57c7 --- /dev/null +++ b/local/e2e/compose/fixtures/cascade-stop-test/compose.yaml @@ -0,0 +1,4 @@ +services: + ping: + image: busybox:1.27.2 + command: ping localhost -c 1