@@ -109,32 +109,57 @@ func teardown(s *S3Conf, bucket string) error {
109
109
return nil
110
110
}
111
111
112
- in := & s3.ListObjectVersionsInput {Bucket : & bucket }
113
- for {
114
- ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
115
- out , err := s3client .ListObjectVersions (ctx , in )
116
- cancel ()
117
- if err != nil {
118
- return fmt .Errorf ("failed to list objects: %w" , err )
119
- }
120
-
121
- for _ , item := range out .Versions {
122
- err = deleteObject (& bucket , item .Key , item .VersionId )
112
+ if s .versioningEnabled {
113
+ in := & s3.ListObjectVersionsInput {Bucket : & bucket }
114
+ for {
115
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
116
+ out , err := s3client .ListObjectVersions (ctx , in )
117
+ cancel ()
123
118
if err != nil {
124
- return err
119
+ return fmt .Errorf ("failed to list objects: %w" , err )
120
+ }
121
+
122
+ for _ , item := range out .Versions {
123
+ err = deleteObject (& bucket , item .Key , item .VersionId )
124
+ if err != nil {
125
+ return err
126
+ }
127
+ }
128
+ for _ , item := range out .DeleteMarkers {
129
+ err = deleteObject (& bucket , item .Key , item .VersionId )
130
+ if err != nil {
131
+ return err
132
+ }
133
+ }
134
+
135
+ if out .IsTruncated != nil && * out .IsTruncated {
136
+ in .KeyMarker = out .KeyMarker
137
+ in .VersionIdMarker = out .NextVersionIdMarker
138
+ } else {
139
+ break
125
140
}
126
141
}
127
- for _ , item := range out .DeleteMarkers {
128
- err = deleteObject (& bucket , item .Key , item .VersionId )
142
+ } else {
143
+ for {
144
+ ctx , cancel := context .WithTimeout (context .Background (), shortTimeout )
145
+ out , err := s3client .ListObjectsV2 (ctx , & s3.ListObjectsV2Input {
146
+ Bucket : & bucket ,
147
+ })
148
+ cancel ()
129
149
if err != nil {
130
- return err
150
+ return fmt . Errorf ( "failed to list objects: %w" , err )
131
151
}
132
- }
133
152
134
- if out .IsTruncated != nil && * out .IsTruncated {
135
- in .KeyMarker = out .KeyMarker
136
- in .VersionIdMarker = out .NextVersionIdMarker
137
- } else {
153
+ for _ , item := range out .Contents {
154
+ err = deleteObject (& bucket , item .Key , nil )
155
+ if err != nil {
156
+ return err
157
+ }
158
+ }
159
+
160
+ if out .IsTruncated != nil && * out .IsTruncated {
161
+ continue
162
+ }
138
163
break
139
164
}
140
165
}
@@ -594,20 +619,28 @@ func compareBuckets(list1 []types.Bucket, list2 []s3response.ListAllMyBucketsEnt
594
619
595
620
func compareObjects (list1 , list2 []types.Object ) bool {
596
621
if len (list1 ) != len (list2 ) {
622
+ fmt .Println ("list lengths are not equal" )
597
623
return false
598
624
}
599
625
600
626
for i , obj := range list1 {
601
627
if * obj .Key != * list2 [i ].Key {
628
+ fmt .Printf ("keys are not equal: %q != %q\n " , * obj .Key , * list2 [i ].Key )
602
629
return false
603
630
}
604
631
if * obj .ETag != * list2 [i ].ETag {
632
+ fmt .Printf ("etags are not equal: (%q %q) %q != %q\n " ,
633
+ * obj .Key , * list2 [i ].Key , * obj .ETag , * list2 [i ].ETag )
605
634
return false
606
635
}
607
636
if * obj .Size != * list2 [i ].Size {
637
+ fmt .Printf ("sizes are not equal: (%q %q) %v != %v\n " ,
638
+ * obj .Key , * list2 [i ].Key , * obj .Size , * list2 [i ].Size )
608
639
return false
609
640
}
610
641
if obj .StorageClass != list2 [i ].StorageClass {
642
+ fmt .Printf ("storage classes are not equal: (%q %q) %v != %v\n " ,
643
+ * obj .Key , * list2 [i ].Key , obj .StorageClass , list2 [i ].StorageClass )
611
644
return false
612
645
}
613
646
}
0 commit comments