MCPcopy
hub / github.com/rclone/rclone / TestOverlappingFilterCheckWithFilter

Function TestOverlappingFilterCheckWithFilter

fs/operations/operations_test.go:1201–1246  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1199}
1200
1201func TestOverlappingFilterCheckWithFilter(t *testing.T) {
1202 ctx := context.Background()
1203 fi, err := filter.NewFilter(nil)
1204 require.NoError(t, err)
1205 require.NoError(t, fi.Add(false, "/exclude/"))
1206 require.NoError(t, fi.Add(false, "/Exclude2/"))
1207 require.NoError(t, fi.Add(true, "*"))
1208 ctx = filter.ReplaceConfig(ctx, fi)
1209
1210 src := &testFs{testFsInfo{name: "name", root: "root"}}
1211 src.features.CaseInsensitive = true
1212 slash := string(os.PathSeparator) // native path separator
1213 for _, test := range []struct {
1214 name string
1215 root string
1216 expected bool
1217 }{
1218 {"name", "root", true},
1219 {"name", "ROOT", true}, // case insensitive is set
1220 {"name", "/root", true},
1221 {"name", "root/", true},
1222 {"name", "root" + slash, true},
1223 {"name", "root/exclude", false},
1224 {"name", "root/Exclude2", false},
1225 {"name", "root/include", true},
1226 {"name", "root/exclude/", false},
1227 {"name", "root/Exclude2/", false},
1228 {"name", "root/exclude/sub", false},
1229 {"name", "root/Exclude2/sub", false},
1230 {"name", "/root/exclude/", false},
1231 {"name", "root" + slash + "exclude", false},
1232 {"name", "root" + slash + "exclude" + slash, false},
1233 {"namey", "root/include", false},
1234 {"namey", "root/include/", false},
1235 {"namey", "root" + slash + "include", false},
1236 {"namey", "root" + slash + "include" + slash, false},
1237 } {
1238 dst := &testFs{testFsInfo{name: test.name, root: test.root}}
1239 dst.features.CaseInsensitive = true
1240 what := fmt.Sprintf("(%q,%q) vs (%q,%q)", src.name, src.root, dst.name, dst.root)
1241 actual := operations.OverlappingFilterCheck(ctx, dst, src)
1242 assert.Equal(t, test.expected, actual, what)
1243 actual = operations.OverlappingFilterCheck(ctx, src, dst)
1244 assert.Equal(t, test.expected, actual, what)
1245 }
1246}
1247
1248func TestListFormat(t *testing.T) {
1249 item0 := &operations.ListJSONItem{

Callers

nothing calls this directly

Calls 5

AddMethod · 0.95
NewFilterFunction · 0.92
ReplaceConfigFunction · 0.92
OverlappingFilterCheckFunction · 0.92
EqualMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…