buildfile_test.go
5b33b246
 package docker
 
 import (
 	"github.com/dotcloud/docker/utils"
 	"strings"
 	"testing"
 )
 
 const Dockerfile = `
 # VERSION		0.1
 # DOCKER-VERSION	0.2
 
 from   ` + unitTestImageName + `
 run    sh -c 'echo root:testpass > /tmp/passwd'
 run    mkdir -p /var/run/sshd
 `
 
2e9403b0
 const DockerfileNoNewLine = `
 # VERSION		0.1
 # DOCKER-VERSION	0.2
 
 from   ` + unitTestImageName + `
 run    sh -c 'echo root:testpass > /tmp/passwd'
 run    mkdir -p /var/run/sshd`
 
5b828761
 // FIXME: test building with a context
 
 // FIXME: test building with a local ADD as first command
 
 // FIXME: test building with 2 successive overlapping ADD commands
 
5b33b246
 func TestBuild(t *testing.T) {
2e9403b0
 	dockerfiles := []string{Dockerfile, DockerfileNoNewLine}
 	for _, Dockerfile := range dockerfiles {
 		runtime, err := newTestRuntime()
 		if err != nil {
 			t.Fatal(err)
 		}
 		defer nuke(runtime)
5b33b246
 
2e9403b0
 		srv := &Server{runtime: runtime}
5b33b246
 
2e9403b0
 		buildfile := NewBuildFile(srv, &utils.NopWriter{})
5b33b246
 
2e9403b0
 		imgID, err := buildfile.Build(strings.NewReader(Dockerfile), nil)
 		if err != nil {
 			t.Fatal(err)
 		}
5b33b246
 
2e9403b0
 		builder := NewBuilder(runtime)
 		container, err := builder.Create(
 			&Config{
 				Image: imgID,
 				Cmd:   []string{"cat", "/tmp/passwd"},
 			},
 		)
 		if err != nil {
 			t.Fatal(err)
 		}
 		defer runtime.Destroy(container)
5b33b246
 
2e9403b0
 		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")
 		}
5b33b246
 
2e9403b0
 		container2, err := builder.Create(
 			&Config{
 				Image: imgID,
 				Cmd:   []string{"ls", "-d", "/var/run/sshd"},
 			},
 		)
 		if err != nil {
 			t.Fatal(err)
 		}
 		defer runtime.Destroy(container2)
5b33b246
 
2e9403b0
 		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")
 		}
5b33b246
 	}
 }