@@ -57,27 +57,31 @@ describe('file', () => {
5757 } ) ;
5858
5959 after ( async ( ) => {
60+ // Clean up local temporary download file
6061 await promisify ( fs . unlink ) ( downloadFilePath ) . catch ( console . error ) ;
61- // Try deleting all files twice, just to make sure
62- await bucket . deleteFiles ( { force : true } ) . catch ( console . error ) ;
63- await bucket . deleteFiles ( { force : true } ) . catch ( console . error ) ;
64- await bucket . delete ( ) . catch ( console . error ) ;
65- await softDeleteBucket
66- . deleteFiles ( { force : true , versions : true } )
67- . catch ( ( ) => { } ) ;
68- await softDeleteBucket . delete ( { ignoreNotFound : true } ) . catch ( console . error ) ;
69-
70- await objectRetentionBucket . deleteFiles ( { force : true } ) . catch ( ( ) => { } ) ;
71- await objectRetentionBucket
72- . delete ( { ignoreNotFound : true } )
73- . catch ( console . error ) ;
74-
75- await objectRetentionBucket
76- . deleteFiles ( { force : true , versions : true } )
77- . catch ( ( ) => { } ) ;
78- await objectRetentionBucket
79- . delete ( { ignoreNotFound : true } )
80- . catch ( console . error ) ;
62+
63+ const targetBuckets = [ bucket , softDeleteBucket , objectRetentionBucket ] ;
64+
65+ for ( const bucket of targetBuckets ) {
66+ try {
67+ // Disable soft delete retention policy to allow immediate object purging
68+ await bucket
69+ . setMetadata ( {
70+ softDeletePolicy : {
71+ retentionDurationSeconds : 0 ,
72+ } ,
73+ } )
74+ . catch ( ( ) => { } ) ;
75+
76+ // Force delete all objects, including archived generations and soft-deleted files
77+ await bucket . deleteFiles ( { force : true , versions : true } ) . catch ( ( ) => { } ) ;
78+
79+ // Remove the empty bucket from Google Cloud Storage
80+ await bucket . delete ( { ignoreNotFound : true } ) ;
81+ } catch ( error ) {
82+ console . error ( `Failed to delete bucket ${ bucket . name } :` , error . message ) ;
83+ }
84+ }
8185 } ) ;
8286
8387 it ( 'should upload a file' , async ( ) => {
0 commit comments