Merge pull request #29043 from duglin/Issue29014

Fix use of **/ in .dockerignore
This commit is contained in:
Alexander Morozov 2016-12-02 08:34:45 -08:00 committed by GitHub
commit 8895ee0b4d
2 changed files with 11 additions and 7 deletions

View File

@ -161,17 +161,19 @@ func regexpMatch(pattern, path string) (bool, error) {
// is some flavor of "**"
scan.Next()
// Treat **/ as ** so eat the "/"
if string(scan.Peek()) == sl {
scan.Next()
}
if scan.Peek() == scanner.EOF {
// is "**EOF" - to align with .gitignore just accept all
regStr += ".*"
} else {
// is "**"
regStr += "((.*" + escSL + ")|([^" + escSL + "]*))"
}
// Treat **/ as ** so eat the "/"
if string(scan.Peek()) == sl {
scan.Next()
// Note that this allows for any # of /'s (even 0) because
// the .* will eat everything, even /'s
regStr += "(.*" + escSL + ")?"
}
} else {
// is "*" so map it to anything but "/"

View File

@ -325,7 +325,7 @@ func TestMatches(t *testing.T) {
{"**", "/", true},
{"**/", "/", true},
{"**", "dir/file", true},
{"**/", "dir/file", false},
{"**/", "dir/file", true},
{"**", "dir/file/", true},
{"**/", "dir/file/", true},
{"**/**", "dir/file", true},
@ -379,6 +379,8 @@ func TestMatches(t *testing.T) {
{"abc/**", "abc", false},
{"abc/**", "abc/def", true},
{"abc/**", "abc/def/ghi", true},
{"**/.foo", ".foo", true},
{"**/.foo", "bar.foo", false},
}
for _, test := range tests {