From e2c55c2122079daa78f315cb2f27abf883918fbd Mon Sep 17 00:00:00 2001
From: Nicolas De Loof <nicolas.deloof@gmail.com>
Date: Thu, 17 Dec 2020 11:48:58 +0100
Subject: [PATCH] e2e test for local `Log` command

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
---
 local/compose/logs.go                         |  1 +
 .../fixtures/logs-test/compose.yaml           |  7 +++
 tests/compose-e2e/logs_test.go                | 60 +++++++++++++++++++
 3 files changed, 68 insertions(+)
 create mode 100644 tests/compose-e2e/fixtures/logs-test/compose.yaml
 create mode 100644 tests/compose-e2e/logs_test.go

diff --git a/local/compose/logs.go b/local/compose/logs.go
index c3c395d3c..3b8d34ac3 100644
--- a/local/compose/logs.go
+++ b/local/compose/logs.go
@@ -34,6 +34,7 @@ func (s *composeService) Logs(ctx context.Context, projectName string, consumer
 		Filters: filters.NewArgs(
 			projectFilter(projectName),
 		),
+		All: true,
 	})
 
 	ignore := func(string) bool {
diff --git a/tests/compose-e2e/fixtures/logs-test/compose.yaml b/tests/compose-e2e/fixtures/logs-test/compose.yaml
new file mode 100644
index 000000000..dac5610bf
--- /dev/null
+++ b/tests/compose-e2e/fixtures/logs-test/compose.yaml
@@ -0,0 +1,7 @@
+services:
+  ping:
+    image: busybox:1.27.2
+    command: ping localhost -c 1
+  hello:
+    image: busybox:1.31.0-uclibc
+    command: echo hello
diff --git a/tests/compose-e2e/logs_test.go b/tests/compose-e2e/logs_test.go
new file mode 100644
index 000000000..95a60f0b6
--- /dev/null
+++ b/tests/compose-e2e/logs_test.go
@@ -0,0 +1,60 @@
+/*
+   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 (
+	"strings"
+	"testing"
+
+	"gotest.tools/v3/assert"
+
+	"gotest.tools/v3/icmd"
+
+	. "github.com/docker/compose-cli/tests/framework"
+)
+
+func TestLocalComposeLogs(t *testing.T) {
+	c := NewParallelE2eCLI(t, binDir)
+
+	const projectName = "compose-e2e-logs"
+
+	t.Run("up", func(t *testing.T) {
+		c.RunDockerCmd("compose", "up", "-d", "-f", "./fixtures/logs-test/compose.yaml", "--project-name", projectName, "-d")
+	})
+
+	t.Run("logs", func(t *testing.T) {
+		res := c.RunDockerCmd("compose", "logs", "--project-name", projectName)
+		res.Assert(t, icmd.Expected{Out: `PING localhost (127.0.0.1)`})
+		res.Assert(t, icmd.Expected{Out: `hello`})
+	})
+
+	t.Run("logs ping", func(t *testing.T) {
+		res := c.RunDockerCmd("compose", "logs", "--project-name", projectName, "ping")
+		res.Assert(t, icmd.Expected{Out: `PING localhost (127.0.0.1)`})
+		assert.Assert(t, !strings.Contains(res.Stdout(), "hello"))
+	})
+
+	t.Run("logs hello", func(t *testing.T) {
+		res := c.RunDockerCmd("compose", "logs", "--project-name", projectName, "hello", "ping")
+		res.Assert(t, icmd.Expected{Out: `PING localhost (127.0.0.1)`})
+		res.Assert(t, icmd.Expected{Out: `hello`})
+	})
+
+	t.Run("down", func(t *testing.T) {
+		_ = c.RunDockerCmd("compose", "down", "--project-name", projectName)
+	})
+}