浏览代码

Return error if Dockerfile is empty

Johannes 'fish' Ziemke 11 年之前
父节点
当前提交
f7ba1c34bb
共有 2 个文件被更改,包括 16 次插入0 次删除
  1. 8 0
      buildfile.go
  2. 8 0
      integration/buildfile_test.go

+ 8 - 0
buildfile.go

@@ -2,6 +2,7 @@ package docker
 
 import (
 	"encoding/json"
+	"errors"
 	"fmt"
 	"github.com/dotcloud/docker/archive"
 	"github.com/dotcloud/docker/auth"
@@ -16,6 +17,10 @@ import (
 	"strings"
 )
 
+var (
+	ErrDockerfileEmpty = errors.New("Dockerfile cannot be empty")
+)
+
 type BuildFile interface {
 	Build(io.Reader) (string, error)
 	CmdFrom(string) error
@@ -529,6 +534,9 @@ func (b *buildFile) Build(context io.Reader) (string, error) {
 	if err != nil {
 		return "", err
 	}
+	if len(fileBytes) == 0 {
+		return "", ErrDockerfileEmpty
+	}
 	dockerfile := string(fileBytes)
 	dockerfile = lineContinuation.ReplaceAllString(dockerfile, "")
 	stepN := 0

+ 8 - 0
integration/buildfile_test.go

@@ -630,3 +630,11 @@ func TestBuildFails(t *testing.T) {
 		t.Fatalf("StatusCode %d unexpected, should be 23", sterr.Code)
 	}
 }
+
+func TestBuildFailsDockerfileEmpty(t *testing.T) {
+	_, err := buildImage(testContextTemplate{``, nil, nil}, t, nil, true)
+
+	if err != docker.ErrDockerfileEmpty {
+		t.Fatal("Expected: %v, got: %v", docker.ErrDockerfileEmpty, err)
+	}
+}