diff --git a/buildfile_test.go b/buildfile_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..b6f4e62ae940e20420702310f423a609568e3ffa
--- /dev/null
+++ b/buildfile_test.go
@@ -0,0 +1,72 @@
+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
+`
+
+func TestBuild(t *testing.T) {
+	runtime, err := newTestRuntime()
+	if err != nil {
+		t.Fatal(err)
+	}
+	defer nuke(runtime)
+
+	srv := &Server{runtime: runtime}
+
+	buildfile := NewBuildFile(srv, &utils.NopWriter{})
+
+	imgId, err := buildfile.Build(strings.NewReader(Dockerfile), nil)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	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)
+
+	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: imgId,
+			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")
+	}
+}
diff --git a/runtime_test.go b/runtime_test.go
index 27db53a8844a56a986e72ac2779847754e2a1eca..55671e12b67be130c4d830bcfa717105ccc4bf52 100644
--- a/runtime_test.go
+++ b/runtime_test.go
@@ -8,7 +8,6 @@ import (
 	"io/ioutil"
 	"net"
 	"os"
-	"os/exec"
 	"os/user"
 	"sync"
 	"testing"