Exit ScanView if context has been cancelled (#7419)

This commit is contained in:
Michael Gaffney
2019-09-04 09:18:19 -04:00
committed by GitHub
parent 6c54c27ac0
commit 33fd94e56f
2 changed files with 22 additions and 0 deletions

View File

@@ -74,6 +74,10 @@ func ScanView(ctx context.Context, view ClearableView, cb func(path string)) err
// Handle the contents in the directory
for _, c := range contents {
// Exit if the context has been canceled
if ctx.Err() != nil {
return ctx.Err()
}
fullPath := current + c
if strings.HasSuffix(c, "/") {
frontier = append(frontier, fullPath)

View File

@@ -34,6 +34,24 @@ func TestScanView(t *testing.T) {
}
}
func TestScanView_CancelContext(t *testing.T) {
s := prepKeyStorage(t)
ctx, cancelCtx := context.WithCancel(context.Background())
var i int
err := ScanView(ctx, s, func(path string) {
cancelCtx()
i++
})
if err == nil {
t.Error("Want context cancel err, got none")
}
if i != 1 {
t.Errorf("Want i==1, got %d", i)
}
}
func TestCollectKeys(t *testing.T) {
s := prepKeyStorage(t)