Move TestMergeOnCommit to integration-cli
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
parent
9b4d9a3421
commit
ed6074ea6b
|
@ -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,12 +1,6 @@
|
||||||
package docker
|
package docker
|
||||||
|
|
||||||
import (
|
import "testing"
|
||||||
"bytes"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/docker/docker/builder"
|
|
||||||
"github.com/docker/docker/engine"
|
|
||||||
)
|
|
||||||
|
|
||||||
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))
|
||||||
|
|
Loading…
Reference in New Issue