Bläddra i källkod

Move TestMergeOnCommit to integration-cli

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Brian Goff 10 år sedan
förälder
incheckning
ed6074ea6b
2 ändrade filer med 51 tillägg och 88 borttagningar
  1. 50 0
      integration-cli/docker_cli_commit_test.go
  2. 1 88
      integration/server_test.go

+ 50 - 0
integration-cli/docker_cli_commit_test.go

@@ -279,3 +279,53 @@ func TestCommitChange(t *testing.T) {
 
 
 	logDone("commit - commit --change")
 	logDone("commit - commit --change")
 }
 }
+
+// TODO: commit --run is deprecated, remove this once --run is removed
+func TestCommitMergeConfigRun(t *testing.T) {
+	defer deleteAllContainers()
+	name := "commit-test"
+	out, _, _ := dockerCmd(t, "run", "-d", "-e=FOO=bar", "busybox", "/bin/sh", "-c", "echo testing > /tmp/foo")
+	id := strings.TrimSpace(out)
+
+	dockerCmd(t, "commit", `--run={"Cmd": ["cat", "/tmp/foo"]}`, id, "commit-test")
+	defer deleteImages("commit-test")
+
+	out, _, _ = dockerCmd(t, "run", "--name", name, "commit-test")
+	if strings.TrimSpace(out) != "testing" {
+		t.Fatal("run config in commited container was not merged")
+	}
+
+	type cfg struct {
+		Env []string
+		Cmd []string
+	}
+	config1 := cfg{}
+	if err := inspectFieldAndMarshall(id, "Config", &config1); err != nil {
+		t.Fatal(err)
+	}
+	config2 := cfg{}
+	if err := inspectFieldAndMarshall(name, "Config", &config2); err != nil {
+		t.Fatal(err)
+	}
+
+	// Env has at least PATH loaded as well here, so let's just grab the FOO one
+	var env1, env2 string
+	for _, e := range config1.Env {
+		if strings.HasPrefix(e, "FOO") {
+			env1 = e
+			break
+		}
+	}
+	for _, e := range config2.Env {
+		if strings.HasPrefix(e, "FOO") {
+			env2 = e
+			break
+		}
+	}
+
+	if len(config1.Env) != len(config2.Env) || env1 != env2 && env2 != "" {
+		t.Fatalf("expected envs to match: %v - %v", config1.Env, config2.Env)
+	}
+
+	logDone("commit - configs are merged with --run")
+}

+ 1 - 88
integration/server_test.go

@@ -1,12 +1,6 @@
 package docker
 package docker
 
 
-import (
-	"bytes"
-	"testing"
-
-	"github.com/docker/docker/builder"
-	"github.com/docker/docker/engine"
-)
+import "testing"
 
 
 func TestCreateNumberHostname(t *testing.T) {
 func TestCreateNumberHostname(t *testing.T) {
 	eng := NewTestEngine(t)
 	eng := NewTestEngine(t)
@@ -20,87 +14,6 @@ func TestCreateNumberHostname(t *testing.T) {
 	createTestContainer(eng, config, t)
 	createTestContainer(eng, config, t)
 }
 }
 
 
-func TestCommit(t *testing.T) {
-	eng := NewTestEngine(t)
-	b := &builder.BuilderJob{Engine: eng}
-	b.Install()
-	defer mkDaemonFromEngine(eng, t).Nuke()
-
-	config, _, _, err := parseRun([]string{unitTestImageID, "/bin/cat"})
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	id := createTestContainer(eng, config, t)
-
-	job := eng.Job("commit", id)
-	job.Setenv("repo", "testrepo")
-	job.Setenv("tag", "testtag")
-	job.SetenvJson("config", config)
-	if err := job.Run(); err != nil {
-		t.Fatal(err)
-	}
-}
-
-func TestMergeConfigOnCommit(t *testing.T) {
-	eng := NewTestEngine(t)
-	b := &builder.BuilderJob{Engine: eng}
-	b.Install()
-	runtime := mkDaemonFromEngine(eng, t)
-	defer runtime.Nuke()
-
-	container1, _, _ := mkContainer(runtime, []string{"-e", "FOO=bar", unitTestImageID, "echo test > /tmp/foo"}, t)
-	defer runtime.Rm(container1)
-
-	config, _, _, err := parseRun([]string{container1.ID, "cat /tmp/foo"})
-	if err != nil {
-		t.Error(err)
-	}
-
-	job := eng.Job("commit", container1.ID)
-	job.Setenv("repo", "testrepo")
-	job.Setenv("tag", "testtag")
-	job.SetenvJson("config", config)
-	var outputBuffer = bytes.NewBuffer(nil)
-	job.Stdout.Add(outputBuffer)
-	if err := job.Run(); err != nil {
-		t.Error(err)
-	}
-
-	container2, _, _ := mkContainer(runtime, []string{engine.Tail(outputBuffer, 1)}, t)
-	defer runtime.Rm(container2)
-
-	job = eng.Job("container_inspect", container1.Name)
-	baseContainer, _ := job.Stdout.AddEnv()
-	if err := job.Run(); err != nil {
-		t.Error(err)
-	}
-
-	job = eng.Job("container_inspect", container2.Name)
-	commitContainer, _ := job.Stdout.AddEnv()
-	if err := job.Run(); err != nil {
-		t.Error(err)
-	}
-
-	baseConfig := baseContainer.GetSubEnv("Config")
-	commitConfig := commitContainer.GetSubEnv("Config")
-
-	if commitConfig.Get("Env") != baseConfig.Get("Env") {
-		t.Fatalf("Env config in committed container should be %v, was %v",
-			baseConfig.Get("Env"), commitConfig.Get("Env"))
-	}
-
-	if baseConfig.Get("Cmd") != "[\"echo test \\u003e /tmp/foo\"]" {
-		t.Fatalf("Cmd in base container should be [\"echo test \\u003e /tmp/foo\"], was %s",
-			baseConfig.Get("Cmd"))
-	}
-
-	if commitConfig.Get("Cmd") != "[\"cat /tmp/foo\"]" {
-		t.Fatalf("Cmd in committed container should be [\"cat /tmp/foo\"], was %s",
-			commitConfig.Get("Cmd"))
-	}
-}
-
 func TestImagesFilter(t *testing.T) {
 func TestImagesFilter(t *testing.T) {
 	eng := NewTestEngine(t)
 	eng := NewTestEngine(t)
 	defer nuke(mkDaemonFromEngine(eng, t))
 	defer nuke(mkDaemonFromEngine(eng, t))