From f7ba1c34bb7670b1a8d761b73eb9a775fa0f6bbe Mon Sep 17 00:00:00 2001 From: Johannes 'fish' Ziemke Date: Fri, 20 Dec 2013 13:26:11 +0100 Subject: [PATCH] Return error if Dockerfile is empty --- buildfile.go | 8 ++++++++ integration/buildfile_test.go | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/buildfile.go b/buildfile.go index 7d87a17d3..1f82245cc 100644 --- a/buildfile.go +++ b/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 diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index 4d15031d3..598edff0d 100644 --- a/integration/buildfile_test.go +++ b/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) + } +}