浏览代码

lib/versioner: Hack to make test coverage stable from run to run

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3485
Jakob Borg 9 年之前
父节点
当前提交
dcbf68e104
共有 2 个文件被更改,包括 12 次插入0 次删除
  1. 5 0
      lib/versioner/staggered.go
  2. 7 0
      lib/versioner/staggered_test.go

+ 5 - 0
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()
 		}

+ 7 - 0
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)