From 0b51803275413adcb3c22575e882c4ffadcc9bbc 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 Upstream-commit: f7ba1c34bb7670b1a8d761b73eb9a775fa0f6bbe Component: engine --- components/engine/buildfile.go | 8 ++++++++ components/engine/integration/buildfile_test.go | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/components/engine/buildfile.go b/components/engine/buildfile.go index 7d87a17d3a..1f82245cc5 100644 --- a/components/engine/buildfile.go +++ b/components/engine/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/components/engine/integration/buildfile_test.go b/components/engine/integration/buildfile_test.go index 4d15031d30..598edff0dd 100644 --- a/components/engine/integration/buildfile_test.go +++ b/components/engine/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) + } +}