package filesystem
import (
"context"
"strings"
"sync"
"testing"
"github.com/efficientgo/core/testutil"
)
func TestDelete_EmptyDirDeletionRaceCondition(t *testing.T) {
const runs = 1000
ctx := context.Background()
for r := 0; r < runs; r++ {
b, err := NewBucket(t.TempDir())
testutil.Ok(t, err)
testutil.Ok(t, b.Upload(ctx, "subfolder/first", strings.NewReader("first")))
testutil.Ok(t, b.Upload(ctx, "subfolder/second", strings.NewReader("second")))
start := make(chan struct{})
group := sync.WaitGroup{}
group.Add(2)
for _, object := range []string{"first", "second"} {
go func(object string) {
defer group.Done()
<-start
testutil.Ok(t, b.Delete(ctx, "subfolder/"+object))
}(object)
}
close(start)
group.Wait()
}
}