func killBucket(b *s3.Bucket) { var err error for attempt := attempts.Start(); attempt.Next(); { err = b.DelBucket() if err == nil { return } if _, ok := err.(*net.DNSError); ok { return } e, ok := err.(*s3.Error) if ok && e.Code == "NoSuchBucket" { return } if ok && e.Code == "BucketNotEmpty" { // Errors are ignored here. Just retry. resp, err := b.List("", "", "", 1000) if err == nil { for _, key := range resp.Contents { _ = b.Del(key.Key) } } multis, _, _ := b.ListMulti("", "") for _, m := range multis { _ = m.Abort() } } } message := "cannot delete test bucket" if err != nil { message += ": " + err.Error() } panic(message) }
}, Source: models.Source{ Bucket: bucketName, Key: key, AccessKeyID: accessKeyID, SecretAccessKey: secretAccessKey, RegionName: regionName, }, Params: models.InParams{}, } response = models.InResponse{} }) AfterEach(func() { err := bucket.Del(key) Ω(err).ShouldNot(HaveOccurred()) }) JustBeforeEach(func() { stdin, err := inCmd.StdinPipe() Ω(err).ShouldNot(HaveOccurred()) session, err := gexec.Start(inCmd, GinkgoWriter, GinkgoWriter) Ω(err).ShouldNot(HaveOccurred()) err = json.NewEncoder(stdin).Encode(request) Ω(err).ShouldNot(HaveOccurred()) // account for roundtrip to s3 Eventually(session, 5*time.Second).Should(gexec.Exit(0))