forked from TrueCloudLab/restic
Merge pull request #1210 from prattmic/glob_test
filter: document recursive wildcards
This commit is contained in:
commit
ff3149831e
2 changed files with 10 additions and 0 deletions
|
@ -17,6 +17,10 @@ var ErrBadString = errors.New("filter.Match: string is empty")
|
||||||
//
|
//
|
||||||
// Pattern can be a combination of patterns suitable for filepath.Match, joined
|
// Pattern can be a combination of patterns suitable for filepath.Match, joined
|
||||||
// by filepath.Separator.
|
// by filepath.Separator.
|
||||||
|
//
|
||||||
|
// In addition patterns suitable for filepath.Match, pattern accepts a
|
||||||
|
// recursive wildcard '**', which greedily matches an arbitrary number of
|
||||||
|
// intermediate directories.
|
||||||
func Match(pattern, str string) (matched bool, err error) {
|
func Match(pattern, str string) (matched bool, err error) {
|
||||||
if pattern == "" {
|
if pattern == "" {
|
||||||
return true, nil
|
return true, nil
|
||||||
|
@ -46,6 +50,10 @@ func Match(pattern, str string) (matched bool, err error) {
|
||||||
//
|
//
|
||||||
// Pattern can be a combination of patterns suitable for filepath.Match, joined
|
// Pattern can be a combination of patterns suitable for filepath.Match, joined
|
||||||
// by filepath.Separator.
|
// by filepath.Separator.
|
||||||
|
//
|
||||||
|
// In addition patterns suitable for filepath.Match, pattern accepts a
|
||||||
|
// recursive wildcard '**', which greedily matches an arbitrary number of
|
||||||
|
// intermediate directories.
|
||||||
func ChildMatch(pattern, str string) (matched bool, err error) {
|
func ChildMatch(pattern, str string) (matched bool, err error) {
|
||||||
if pattern == "" {
|
if pattern == "" {
|
||||||
return true, nil
|
return true, nil
|
||||||
|
|
|
@ -76,6 +76,7 @@ var matchTests = []struct {
|
||||||
{"foo/**/bar/*.go", "/home/user/foo/bar/test.go", true},
|
{"foo/**/bar/*.go", "/home/user/foo/bar/test.go", true},
|
||||||
{"foo/**/bar/*.go", "x/foo/bar/test.go", true},
|
{"foo/**/bar/*.go", "x/foo/bar/test.go", true},
|
||||||
{"foo/**/bar/*.go", "foo/bar/test.go", true},
|
{"foo/**/bar/*.go", "foo/bar/test.go", true},
|
||||||
|
{"foo/**/bar/*.go", "foo/bar/baz/bar/test.go", true},
|
||||||
{"foo/**/bar/*.go", "/home/user/foo/test.c", false},
|
{"foo/**/bar/*.go", "/home/user/foo/test.c", false},
|
||||||
{"foo/**/bar/*.go", "bar/foo/main.go", false},
|
{"foo/**/bar/*.go", "bar/foo/main.go", false},
|
||||||
{"foo/**/bar/*.go", "/foo/bar/main.go", true},
|
{"foo/**/bar/*.go", "/foo/bar/main.go", true},
|
||||||
|
@ -144,6 +145,7 @@ var childMatchTests = []struct {
|
||||||
{"/foo/bar/baz", "/foo/bar", true},
|
{"/foo/bar/baz", "/foo/bar", true},
|
||||||
{"/foo/bar/baz", "/foo/baz", false},
|
{"/foo/bar/baz", "/foo/baz", false},
|
||||||
{"/foo/**/baz", "/foo/bar/baz", true},
|
{"/foo/**/baz", "/foo/bar/baz", true},
|
||||||
|
{"/foo/**/baz", "/foo/bar/baz/blah", true},
|
||||||
{"/foo/**/qux", "/foo/bar/baz/qux", true},
|
{"/foo/**/qux", "/foo/bar/baz/qux", true},
|
||||||
{"/baz/bar", "/foo", false},
|
{"/baz/bar", "/foo", false},
|
||||||
{"/foo", "/foo/bar", true},
|
{"/foo", "/foo/bar", true},
|
||||||
|
|
Loading…
Reference in a new issue