diff --git a/builder/dockerfile/parser/parser.go b/builder/dockerfile/parser/parser.go index a156babd08..e534644491 100644 --- a/builder/dockerfile/parser/parser.go +++ b/builder/dockerfile/parser/parser.go @@ -61,7 +61,7 @@ func SetEscapeToken(s string, d *Directive) error { return fmt.Errorf("invalid ESCAPE '%s'. Must be ` or \\", s) } d.EscapeToken = rune(s[0]) - d.LineContinuationRegex = regexp.MustCompile(`\` + s + `$`) + d.LineContinuationRegex = regexp.MustCompile(`\` + s + `[ \t]*$`) return nil } diff --git a/builder/dockerfile/parser/testfiles/continueIndent/Dockerfile b/builder/dockerfile/parser/testfiles/continueIndent/Dockerfile index 97f915f16b..42b324e77b 100644 --- a/builder/dockerfile/parser/testfiles/continueIndent/Dockerfile +++ b/builder/dockerfile/parser/testfiles/continueIndent/Dockerfile @@ -13,6 +13,8 @@ world RUN echo hello \ goodbye\ frog +RUN echo hello \ +world RUN echo hi \ \ world \ diff --git a/builder/dockerfile/parser/testfiles/continueIndent/result b/builder/dockerfile/parser/testfiles/continueIndent/result index 76a1cb6f21..268ae073c8 100644 --- a/builder/dockerfile/parser/testfiles/continueIndent/result +++ b/builder/dockerfile/parser/testfiles/continueIndent/result @@ -3,6 +3,7 @@ (run "echo hello world") (run "echo hello world") (run "echo hello goodbyefrog") +(run "echo hello world") (run "echo hi world goodnight") (run "echo goodbyefrog") (run "echo goodbyefrog") diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index cc6cf98cf7..2dbb4fe81e 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -7043,17 +7043,6 @@ func (s *DockerSuite) TestBuildCmdShellArgsEscaped(c *check.C) { } } -func (s *DockerSuite) TestContinueCharSpace(c *check.C) { - // Test to make sure that we don't treat a \ as a continuation - // character IF there are spaces (or tabs) after it on the same line - name := "testbuildcont" - _, err := buildImage(name, "FROM busybox\nRUN echo hi \\\t\nbye", true) - c.Assert(err, check.NotNil, check.Commentf("Build 1 should fail - didn't")) - - _, err = buildImage(name, "FROM busybox\nRUN echo hi \\ \nbye", true) - c.Assert(err, check.NotNil, check.Commentf("Build 2 should fail - didn't")) -} - // Test case for #24912. func (s *DockerSuite) TestBuildStepsWithProgress(c *check.C) { name := "testbuildstepswithprogress"