diff --git a/lib/versioner/staggered.go b/lib/versioner/staggered.go index 6cb05a119..58dc8a870 100644 --- a/lib/versioner/staggered.go +++ b/lib/versioner/staggered.go @@ -35,6 +35,8 @@ type Staggered struct { mutex sync.Mutex } +var testCleanDone chan struct{} + func NewStaggered(folderID, folderPath string, params map[string]string) Versioner { maxAge, err := strconv.ParseInt(params["maxAge"], 10, 0) if err != nil { @@ -72,6 +74,9 @@ func NewStaggered(folderID, folderPath string, params map[string]string) Version go func() { s.clean() + if testCleanDone != nil { + close(testCleanDone) + } for _ = range time.Tick(time.Duration(cleanInterval) * time.Second) { s.clean() } diff --git a/lib/versioner/staggered_test.go b/lib/versioner/staggered_test.go index b3e722aa8..f3c7d957c 100644 --- a/lib/versioner/staggered_test.go +++ b/lib/versioner/staggered_test.go @@ -7,6 +7,7 @@ package versioner import ( + "os" "sort" "strconv" "testing" @@ -58,7 +59,13 @@ func TestStaggeredVersioningVersionCount(t *testing.T) { } sort.Strings(delete) + os.MkdirAll("testdata/.stversions", 0755) + defer os.RemoveAll("testdata") + + testCleanDone = make(chan struct{}) v := NewStaggered("", "testdata", map[string]string{"maxAge": strconv.Itoa(365 * 86400)}).(Staggered) + <-testCleanDone + rem := v.toRemove(files, now) if diff, equal := messagediff.PrettyDiff(delete, rem); !equal { t.Errorf("Incorrect deleted files; got %v, expected %v\n%v", rem, delete, diff)