Forráskód Böngészése

fix `compose config --format json`

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 1 éve
szülő
commit
bc5fc6ba7e
3 módosított fájl, 63 hozzáadás és 1 törlés
  1. 9 1
      cmd/compose/config.go
  2. 49 0
      pkg/e2e/config_test.go
  3. 5 0
      pkg/e2e/fixtures/config/compose.yaml

+ 9 - 1
cmd/compose/config.go

@@ -160,7 +160,15 @@ func runConfig(ctx context.Context, dockerCli command.Cli, opts configOptions, s
 		if err != nil {
 			return err
 		}
-		content, err = project.MarshalYAML()
+
+		switch opts.Format {
+		case "json":
+			content, err = project.MarshalJSON()
+		case "yaml":
+			content, err = project.MarshalYAML()
+		default:
+			return fmt.Errorf("unsupported format %q", opts.Format)
+		}
 		if err != nil {
 			return err
 		}

+ 49 - 0
pkg/e2e/config_test.go

@@ -0,0 +1,49 @@
+/*
+   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"
+)
+
+func TestLocalComposeConfig(t *testing.T) {
+	c := NewParallelCLI(t)
+
+	const projectName = "compose-e2e-config"
+
+	t.Run("yaml", func(t *testing.T) {
+		res := c.RunDockerComposeCmd(t, "-f", "./fixtures/config/compose.yaml", "--project-name", projectName, "config")
+		res.Assert(t, icmd.Expected{Out: `
+    ports:
+      - mode: ingress
+        target: 80
+        published: "8080"
+        protocol: tcp`})
+	})
+
+	t.Run("json", func(t *testing.T) {
+		res := c.RunDockerComposeCmd(t, "-f", "./fixtures/config/compose.yaml", "--project-name", projectName, "config", "--format", "json")
+		res.Assert(t, icmd.Expected{Out: `ports":[{"mode":"ingress","target":80,"published":"8080","protocol":"tcp"}]`})
+	})
+
+	t.Run("--no-interpolate", func(t *testing.T) {
+		res := c.RunDockerComposeCmd(t, "-f", "./fixtures/config/compose.yaml", "--project-name", projectName, "config", "--no-interpolate")
+		res.Assert(t, icmd.Expected{Out: `- ${PORT:-8080}:80`})
+	})
+}

+ 5 - 0
pkg/e2e/fixtures/config/compose.yaml

@@ -0,0 +1,5 @@
+services:
+  test:
+    image: test
+    ports:
+      - ${PORT:-8080}:80