@@ -423,26 +423,21 @@ def test_mv_no_overwrite_flag_on_copy_when_small_object_does_not_exist_on_target
423423 # Set up responses for multipart copy (since no-overwrite always uses multipart)
424424 self .parsed_responses = [
425425 self .head_object_response (), # HeadObject to get source metadata
426- self .create_mpu_response ('foo' ), # CreateMultipartUpload response
427- self .upload_part_copy_response (), # UploadPartCopy response
428- {}, # CompleteMultipartUpload response
429- self .delete_object_response (), # DeleteObject (for move operation)
426+ self .copy_object_response (),
427+ self .delete_object_response (),
430428 ]
431429 self .run_cmd (cmdline , expected_rc = 0 )
432430 # Verify all multipart copy operations were called
433- self .assertEqual (len (self .operations_called ), 5 )
434- self .assertEqual (len (self .operations_called ), 5 )
431+ self .assertEqual (len (self .operations_called ), 3 )
435432 self .assertEqual (self .operations_called [0 ][0 ].name , 'HeadObject' )
436433 self .assertEqual (
437- self .operations_called [1 ][0 ].name , 'CreateMultipartUpload '
434+ self .operations_called [1 ][0 ].name , 'CopyObject '
438435 )
439- self .assertEqual (self .operations_called [2 ][0 ].name , 'UploadPartCopy' )
436+ self .assertEqual (self .operations_called [1 ][1 ]['IfNoneMatch' ], '*' )
437+
440438 self .assertEqual (
441- self .operations_called [3 ][0 ].name , 'CompleteMultipartUpload '
439+ self .operations_called [2 ][0 ].name , 'DeleteObject '
442440 )
443- self .assertEqual (self .operations_called [4 ][0 ].name , 'DeleteObject' )
444- # Verify the IfNoneMatch condition was set in the CompleteMultipartUpload request
445- self .assertEqual (self .operations_called [3 ][1 ]['IfNoneMatch' ], '*' )
446441
447442 def test_mv_no_overwrite_flag_on_copy_when_small_object_exists_on_target (
448443 self ,
@@ -451,65 +446,19 @@ def test_mv_no_overwrite_flag_on_copy_when_small_object_exists_on_target(
451446 # Set up responses for multipart copy (since no-overwrite always uses multipart)
452447 self .parsed_responses = [
453448 self .head_object_response (), # HeadObject to get source metadata
454- self .create_mpu_response ('foo' ), # CreateMultipartUpload response
455- self .upload_part_copy_response (), # UploadPartCopy response
456- self .precondition_failed_error_response (), # CompleteMultipartUpload response
457- {}, # AbortMultipart
449+ self .precondition_failed_error_response (), # CopyObject response
458450 ]
459451 self .run_cmd (cmdline , expected_rc = 0 )
460452 # Set up the response to simulate a PreconditionFailed error
461453 self .http_response .status_code = 412
462- # Verify all multipart copy operations were called
463- self .assertEqual (len (self .operations_called ), 5 )
454+ # Verify all copy operations were called
455+ self .assertEqual (len (self .operations_called ), 2 )
464456 self .assertEqual (self .operations_called [0 ][0 ].name , 'HeadObject' )
465457 self .assertEqual (
466- self .operations_called [1 ][0 ].name , 'CreateMultipartUpload'
467- )
468- self .assertEqual (self .operations_called [2 ][0 ].name , 'UploadPartCopy' )
469- self .assertEqual (
470- self .operations_called [3 ][0 ].name , 'CompleteMultipartUpload'
471- )
472- self .assertEqual (
473- self .operations_called [4 ][0 ].name , 'AbortMultipartUpload'
458+ self .operations_called [1 ][0 ].name , 'CopyObject'
474459 )
475460 # Verify the IfNoneMatch condition was set in the CompleteMultipartUpload request
476- self .assertEqual (self .operations_called [3 ][1 ]['IfNoneMatch' ], '*' )
477-
478- def test_no_overwrite_flag_on_copy_when_zero_size_object_exists_at_destination (
479- self ,
480- ):
481- cmdline = f'{ self .prefix } s3://bucket1/file.txt s3://bucket2/file.txt --no-overwrite'
482- self .parsed_responses = [
483- self .head_object_response (
484- ContentLength = 0
485- ), # Source object (zero size)
486- self .head_object_response (), # Checking the object at destination
487- ]
488- self .run_cmd (cmdline , expected_rc = 0 )
489- self .assertEqual (len (self .operations_called ), 2 )
490- self .assertEqual (self .operations_called [0 ][0 ].name , 'HeadObject' )
491- self .assertEqual (self .operations_called [1 ][0 ].name , 'HeadObject' )
492-
493- def test_no_overwrite_flag_on_copy_when_zero_size_object_not_exists_at_destination (
494- self ,
495- ):
496- cmdline = f'{ self .prefix } s3://bucket1/file.txt s3://bucket2/file1.txt --no-overwrite'
497- self .parsed_responses = [
498- self .head_object_response (
499- ContentLength = 0
500- ), # Source object (zero size)
501- {
502- 'Error' : {'Code' : '404' , 'Message' : 'Not Found' }
503- }, # At destination object does not exists
504- self .copy_object_response (), # Copy Request when object does not exists
505- self .delete_object_response (), # Delete Request for move object
506- ]
507- self .run_cmd (cmdline , expected_rc = 0 )
508- self .assertEqual (len (self .operations_called ), 4 )
509- self .assertEqual (self .operations_called [0 ][0 ].name , 'HeadObject' )
510- self .assertEqual (self .operations_called [1 ][0 ].name , 'HeadObject' )
511- self .assertEqual (self .operations_called [2 ][0 ].name , 'CopyObject' )
512- self .assertEqual (self .operations_called [3 ][0 ].name , 'DeleteObject' )
461+ self .assertEqual (self .operations_called [1 ][1 ]['IfNoneMatch' ], '*' )
513462
514463 def test_mv_no_overwrite_flag_when_large_object_exists_on_target (self ):
515464 cmdline = f'{ self .prefix } s3://bucket1/key1.txt s3://bucket/key1.txt --no-overwrite'
0 commit comments