summaryrefslogtreecommitdiffstats
path: root/modules/setting/indexer_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/setting/indexer_test.go')
-rw-r--r--modules/setting/indexer_test.go71
1 files changed, 71 insertions, 0 deletions
diff --git a/modules/setting/indexer_test.go b/modules/setting/indexer_test.go
new file mode 100644
index 0000000..8f0437b
--- /dev/null
+++ b/modules/setting/indexer_test.go
@@ -0,0 +1,71 @@
+// Copyright 2019 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package setting
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+type indexerMatchList struct {
+ value string
+ position int
+}
+
+func Test_newIndexerGlobSettings(t *testing.T) {
+ checkGlobMatch(t, "", []indexerMatchList{})
+ checkGlobMatch(t, " ", []indexerMatchList{})
+ checkGlobMatch(t, "data, */data, */data/*, **/data/*, **/data/**", []indexerMatchList{
+ {"", -1},
+ {"don't", -1},
+ {"data", 0},
+ {"/data", 1},
+ {"x/data", 1},
+ {"x/data/y", 2},
+ {"a/b/c/data/z", 3},
+ {"a/b/c/data/x/y/z", 4},
+ })
+ checkGlobMatch(t, "*.txt, txt, **.txt, **txt, **txt*", []indexerMatchList{
+ {"my.txt", 0},
+ {"don't", -1},
+ {"mytxt", 3},
+ {"/data/my.txt", 2},
+ {"data/my.txt", 2},
+ {"data/txt", 3},
+ {"data/thistxtfile", 4},
+ {"/data/thistxtfile", 4},
+ })
+ checkGlobMatch(t, "data/**/*.txt, data/**.txt", []indexerMatchList{
+ {"data/a/b/c/d.txt", 0},
+ {"data/a.txt", 1},
+ })
+ checkGlobMatch(t, "**/*.txt, data/**.txt", []indexerMatchList{
+ {"data/a/b/c/d.txt", 0},
+ {"data/a.txt", 0},
+ {"a.txt", -1},
+ })
+}
+
+func checkGlobMatch(t *testing.T, globstr string, list []indexerMatchList) {
+ glist := IndexerGlobFromString(globstr)
+ if len(list) == 0 {
+ assert.Empty(t, glist)
+ return
+ }
+ assert.NotEmpty(t, glist)
+ for _, m := range list {
+ found := false
+ for pos, g := range glist {
+ if g.Match(m.value) {
+ assert.Equal(t, m.position, pos, "Test string `%s` doesn't match `%s`@%d, but matches @%d", m.value, globstr, m.position, pos)
+ found = true
+ break
+ }
+ }
+ if !found {
+ assert.Equal(t, m.position, -1, "Test string `%s` doesn't match `%s` anywhere; expected @%d", m.value, globstr, m.position)
+ }
+ }
+}