From e337949cb0ce8eda0673e005e670c12e997a3336 Mon Sep 17 00:00:00 2001 From: "Guillaume J. Charmes" Date: Thu, 25 Apr 2013 11:20:56 -0700 Subject: [PATCH] Add builder_test.go --- builder_test.go | 88 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 builder_test.go diff --git a/builder_test.go b/builder_test.go new file mode 100644 index 0000000000..345fd2c594 --- /dev/null +++ b/builder_test.go @@ -0,0 +1,88 @@ +package docker + +import ( + "strings" + "testing" +) + +const Dockerfile = ` +# VERSION 0.1 +# DOCKER-VERSION 0.1.6 + +from docker-ut +run sh -c 'echo root:testpass > /tmp/passwd' +run mkdir -p /var/run/sshd +copy https://raw.github.com/dotcloud/docker/master/CHANGELOG.md /tmp/CHANGELOG.md +` + +func TestBuild(t *testing.T) { + runtime, err := newTestRuntime() + if err != nil { + t.Fatal(err) + } + defer nuke(runtime) + + builder := NewBuilder(runtime) + + img, err := builder.Build(strings.NewReader(Dockerfile), &nopWriter{}) + if err != nil { + t.Fatal(err) + } + + container, err := builder.Create( + &Config{ + Image: img.Id, + Cmd: []string{"cat", "/tmp/passwd"}, + }, + ) + if err != nil { + t.Fatal(err) + } + defer runtime.Destroy(container) + + output, err := container.Output() + if err != nil { + t.Fatal(err) + } + if string(output) != "root:testpass\n" { + t.Fatalf("Unexpected output. Read '%s', expected '%s'", output, "root:testpass\n") + } + + container2, err := builder.Create( + &Config{ + Image: img.Id, + Cmd: []string{"ls", "-d", "/var/run/sshd"}, + }, + ) + if err != nil { + t.Fatal(err) + } + defer runtime.Destroy(container2) + + output, err = container2.Output() + if err != nil { + t.Fatal(err) + } + if string(output) != "/var/run/sshd\n" { + t.Fatal("/var/run/sshd has not been created") + } + + container3, err := builder.Create( + &Config{ + Image: img.Id, + Cmd: []string{"cat", "/tmp/CHANGELOG.md"}, + }, + ) + if err != nil { + t.Fatal(err) + } + defer runtime.Destroy(container3) + + output, err = container3.Output() + if err != nil { + t.Fatal(err) + } + if len(output) == 0 { + t.Fatal("/tmp/CHANGELOG.md has not been copied") + } +}