diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-10-15 11:27:39 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-15 11:27:39 -0700 |
| commit | 3d25f206c83e893d6dc5ea419a8702f0f44655e0 (patch) | |
| tree | 8eed0317efd9b93199525b531bf18b08abbd658f /.github/workflows | |
| parent | ffc45a538d535c2cc9f374918c7db68c09809299 (diff) | |
| download | seaweedfs-3d25f206c83e893d6dc5ea419a8702f0f44655e0.tar.xz seaweedfs-3d25f206c83e893d6dc5ea419a8702f0f44655e0.zip | |
S3: Signature verification should not check permissions (#7335)
* Signature verification should not check permissions - that's done later in authRequest
* test permissions during signature verfication
* fix s3 test path
* s3tests_boto3 => s3tests
* remove extra lines
Diffstat (limited to '.github/workflows')
| -rw-r--r-- | .github/workflows/s3tests.yml | 726 |
1 files changed, 363 insertions, 363 deletions
diff --git a/.github/workflows/s3tests.yml b/.github/workflows/s3tests.yml index 6da1afd30..540247a34 100644 --- a/.github/workflows/s3tests.yml +++ b/.github/workflows/s3tests.yml @@ -107,7 +107,7 @@ jobs: echo "All SeaweedFS components are ready!" cd ../s3-tests - sed -i "s/assert prefixes == \['foo%2B1\/', 'foo\/', 'quux%20ab\/'\]/assert prefixes == \['foo\/', 'foo%2B1\/', 'quux%20ab\/'\]/" s3tests_boto3/functional/test_s3.py + sed -i "s/assert prefixes == \['foo%2B1\/', 'foo\/', 'quux%20ab\/'\]/assert prefixes == \['foo\/', 'foo%2B1\/', 'quux%20ab\/'\]/" s3tests/functional/test_s3.py # Debug: Show the config file contents echo "=== S3 Config File Contents ===" @@ -132,183 +132,183 @@ jobs: echo "✅ S3 server is responding, starting tests..." tox -- \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_distinct \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_many \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_many \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_encoding_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_encoding_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_prefix \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_prefix \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_prefix_ends_with_delimiter \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_prefix_ends_with_delimiter \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_prefix_underscore \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_prefix_underscore \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_percentage \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_percentage \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_whitespace \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_whitespace \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_dot \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_dot \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_not_skip_special \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_fetchowner_notempty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_fetchowner_defaultempty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_fetchowner_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_one \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_maxkeys_one \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_zero \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_maxkeys_zero \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_maxkeys_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_unordered \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_unordered \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_invalid \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_continuationtoken_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_continuationtoken \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_both_continuationtoken_startafter \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_startafter_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_not_in_list \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_startafter_not_in_list \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_after_list \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_startafter_after_list \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_return_data \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_objects_anonymous \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_objects_anonymous \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_objects_anonymous_fail \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_objects_anonymous_fail \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_long_name \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_special_prefix \ - s3tests_boto3/functional/test_s3.py::test_bucket_delete_notexist \ - s3tests_boto3/functional/test_s3.py::test_bucket_create_delete \ - s3tests_boto3/functional/test_s3.py::test_object_read_not_exist \ - s3tests_boto3/functional/test_s3.py::test_multi_object_delete \ - s3tests_boto3/functional/test_s3.py::test_multi_objectv2_delete \ - s3tests_boto3/functional/test_s3.py::test_object_head_zero_bytes \ - s3tests_boto3/functional/test_s3.py::test_object_write_check_etag \ - s3tests_boto3/functional/test_s3.py::test_object_write_cache_control \ - s3tests_boto3/functional/test_s3.py::test_object_write_expires \ - s3tests_boto3/functional/test_s3.py::test_object_write_read_update_read_delete \ - s3tests_boto3/functional/test_s3.py::test_object_metadata_replaced_on_put \ - s3tests_boto3/functional/test_s3.py::test_object_write_file \ - s3tests_boto3/functional/test_s3.py::test_post_object_invalid_date_format \ - s3tests_boto3/functional/test_s3.py::test_post_object_no_key_specified \ - s3tests_boto3/functional/test_s3.py::test_post_object_missing_signature \ - s3tests_boto3/functional/test_s3.py::test_post_object_condition_is_case_sensitive \ - s3tests_boto3/functional/test_s3.py::test_post_object_expires_is_case_sensitive \ - s3tests_boto3/functional/test_s3.py::test_post_object_missing_expires_condition \ - s3tests_boto3/functional/test_s3.py::test_post_object_missing_conditions_list \ - s3tests_boto3/functional/test_s3.py::test_post_object_upload_size_limit_exceeded \ - s3tests_boto3/functional/test_s3.py::test_post_object_missing_content_length_argument \ - s3tests_boto3/functional/test_s3.py::test_post_object_invalid_content_length_argument \ - s3tests_boto3/functional/test_s3.py::test_post_object_upload_size_below_minimum \ - s3tests_boto3/functional/test_s3.py::test_post_object_empty_conditions \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifmatch_good \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifnonematch_good \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifmatch_failed \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifnonematch_failed \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifmodifiedsince_good \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifmodifiedsince_failed \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifunmodifiedsince_failed \ - s3tests_boto3/functional/test_s3.py::test_bucket_head \ - s3tests_boto3/functional/test_s3.py::test_bucket_head_notexist \ - s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated \ - s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_bucket_acl \ - s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_object_acl \ - s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_object_gone \ - s3tests_boto3/functional/test_s3.py::test_object_raw_get_x_amz_expires_out_range_zero \ - s3tests_boto3/functional/test_s3.py::test_object_anon_put \ - s3tests_boto3/functional/test_s3.py::test_object_put_authenticated \ - s3tests_boto3/functional/test_s3.py::test_bucket_recreate_overwrite_acl \ - s3tests_boto3/functional/test_s3.py::test_bucket_recreate_new_acl \ - s3tests_boto3/functional/test_s3.py::test_buckets_create_then_list \ - s3tests_boto3/functional/test_s3.py::test_buckets_list_ctime \ - s3tests_boto3/functional/test_s3.py::test_list_buckets_invalid_auth \ - s3tests_boto3/functional/test_s3.py::test_list_buckets_bad_auth \ - s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_contains_period \ - s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_contains_hyphen \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_special_prefix \ - s3tests_boto3/functional/test_s3.py::test_object_copy_zero_size \ - s3tests_boto3/functional/test_s3.py::test_object_copy_same_bucket \ - s3tests_boto3/functional/test_s3.py::test_object_copy_to_itself \ - s3tests_boto3/functional/test_s3.py::test_object_copy_diff_bucket \ - s3tests_boto3/functional/test_s3.py::test_object_copy_canned_acl \ - s3tests_boto3/functional/test_s3.py::test_object_copy_bucket_not_found \ - s3tests_boto3/functional/test_s3.py::test_object_copy_key_not_found \ - s3tests_boto3/functional/test_s3.py::test_multipart_copy_small \ - s3tests_boto3/functional/test_s3.py::test_multipart_copy_without_range \ - s3tests_boto3/functional/test_s3.py::test_multipart_copy_special_names \ - s3tests_boto3/functional/test_s3.py::test_multipart_copy_multiple_sizes \ - s3tests_boto3/functional/test_s3.py::test_multipart_get_part \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_empty \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_multiple_sizes \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_contents \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_overwrite_existing_object \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_size_too_small \ - s3tests_boto3/functional/test_s3.py::test_multipart_resend_first_finishes_last \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_resend_part \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_missing_part \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_incorrect_etag \ - s3tests_boto3/functional/test_s3.py::test_abort_multipart_upload \ - s3tests_boto3/functional/test_s3.py::test_list_multipart_upload \ - s3tests_boto3/functional/test_s3.py::test_atomic_read_1mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_read_4mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_read_8mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_write_1mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_write_4mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_write_8mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_dual_write_1mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_dual_write_4mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_dual_write_8mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_multipart_upload_write \ - s3tests_boto3/functional/test_s3.py::test_ranged_request_response_code \ - s3tests_boto3/functional/test_s3.py::test_ranged_big_request_response_code \ - s3tests_boto3/functional/test_s3.py::test_ranged_request_skip_leading_bytes_response_code \ - s3tests_boto3/functional/test_s3.py::test_ranged_request_return_trailing_bytes_response_code \ - s3tests_boto3/functional/test_s3.py::test_copy_object_ifmatch_good \ - s3tests_boto3/functional/test_s3.py::test_copy_object_ifnonematch_failed \ - s3tests_boto3/functional/test_s3.py::test_copy_object_ifmatch_failed \ - s3tests_boto3/functional/test_s3.py::test_copy_object_ifnonematch_good \ - s3tests_boto3/functional/test_s3.py::test_lifecycle_set \ - s3tests_boto3/functional/test_s3.py::test_lifecycle_get \ - s3tests_boto3/functional/test_s3.py::test_lifecycle_set_filter + s3tests/functional/test_s3.py::test_bucket_list_empty \ + s3tests/functional/test_s3.py::test_bucket_list_distinct \ + s3tests/functional/test_s3.py::test_bucket_list_many \ + s3tests/functional/test_s3.py::test_bucket_listv2_many \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_basic \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_basic \ + s3tests/functional/test_s3.py::test_bucket_listv2_encoding_basic \ + s3tests/functional/test_s3.py::test_bucket_list_encoding_basic \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_prefix \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_prefix \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_prefix_ends_with_delimiter \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_prefix_ends_with_delimiter \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_alt \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_alt \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_prefix_underscore \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_prefix_underscore \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_percentage \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_percentage \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_whitespace \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_whitespace \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_dot \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_dot \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_unreadable \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_unreadable \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_empty \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_empty \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_none \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_none \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_not_skip_special \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_basic \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_basic \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_alt \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_alt \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_fetchowner_notempty \ + s3tests/functional/test_s3.py::test_bucket_listv2_fetchowner_defaultempty \ + s3tests/functional/test_s3.py::test_bucket_listv2_fetchowner_empty \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_basic \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_basic \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_alt \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_alt \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_empty \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_empty \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_none \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_none \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_unreadable \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_unreadable \ + s3tests/functional/test_s3.py::test_bucket_list_maxkeys_one \ + s3tests/functional/test_s3.py::test_bucket_listv2_maxkeys_one \ + s3tests/functional/test_s3.py::test_bucket_list_maxkeys_zero \ + s3tests/functional/test_s3.py::test_bucket_listv2_maxkeys_zero \ + s3tests/functional/test_s3.py::test_bucket_list_maxkeys_none \ + s3tests/functional/test_s3.py::test_bucket_listv2_maxkeys_none \ + s3tests/functional/test_s3.py::test_bucket_list_unordered \ + s3tests/functional/test_s3.py::test_bucket_listv2_unordered \ + s3tests/functional/test_s3.py::test_bucket_list_maxkeys_invalid \ + s3tests/functional/test_s3.py::test_bucket_list_marker_none \ + s3tests/functional/test_s3.py::test_bucket_list_marker_empty \ + s3tests/functional/test_s3.py::test_bucket_listv2_continuationtoken_empty \ + s3tests/functional/test_s3.py::test_bucket_listv2_continuationtoken \ + s3tests/functional/test_s3.py::test_bucket_listv2_both_continuationtoken_startafter \ + s3tests/functional/test_s3.py::test_bucket_list_marker_unreadable \ + s3tests/functional/test_s3.py::test_bucket_listv2_startafter_unreadable \ + s3tests/functional/test_s3.py::test_bucket_list_marker_not_in_list \ + s3tests/functional/test_s3.py::test_bucket_listv2_startafter_not_in_list \ + s3tests/functional/test_s3.py::test_bucket_list_marker_after_list \ + s3tests/functional/test_s3.py::test_bucket_listv2_startafter_after_list \ + s3tests/functional/test_s3.py::test_bucket_list_return_data \ + s3tests/functional/test_s3.py::test_bucket_list_objects_anonymous \ + s3tests/functional/test_s3.py::test_bucket_listv2_objects_anonymous \ + s3tests/functional/test_s3.py::test_bucket_list_objects_anonymous_fail \ + s3tests/functional/test_s3.py::test_bucket_listv2_objects_anonymous_fail \ + s3tests/functional/test_s3.py::test_bucket_list_long_name \ + s3tests/functional/test_s3.py::test_bucket_list_special_prefix \ + s3tests/functional/test_s3.py::test_bucket_delete_notexist \ + s3tests/functional/test_s3.py::test_bucket_create_delete \ + s3tests/functional/test_s3.py::test_object_read_not_exist \ + s3tests/functional/test_s3.py::test_multi_object_delete \ + s3tests/functional/test_s3.py::test_multi_objectv2_delete \ + s3tests/functional/test_s3.py::test_object_head_zero_bytes \ + s3tests/functional/test_s3.py::test_object_write_check_etag \ + s3tests/functional/test_s3.py::test_object_write_cache_control \ + s3tests/functional/test_s3.py::test_object_write_expires \ + s3tests/functional/test_s3.py::test_object_write_read_update_read_delete \ + s3tests/functional/test_s3.py::test_object_metadata_replaced_on_put \ + s3tests/functional/test_s3.py::test_object_write_file \ + s3tests/functional/test_s3.py::test_post_object_invalid_date_format \ + s3tests/functional/test_s3.py::test_post_object_no_key_specified \ + s3tests/functional/test_s3.py::test_post_object_missing_signature \ + s3tests/functional/test_s3.py::test_post_object_condition_is_case_sensitive \ + s3tests/functional/test_s3.py::test_post_object_expires_is_case_sensitive \ + s3tests/functional/test_s3.py::test_post_object_missing_expires_condition \ + s3tests/functional/test_s3.py::test_post_object_missing_conditions_list \ + s3tests/functional/test_s3.py::test_post_object_upload_size_limit_exceeded \ + s3tests/functional/test_s3.py::test_post_object_missing_content_length_argument \ + s3tests/functional/test_s3.py::test_post_object_invalid_content_length_argument \ + s3tests/functional/test_s3.py::test_post_object_upload_size_below_minimum \ + s3tests/functional/test_s3.py::test_post_object_empty_conditions \ + s3tests/functional/test_s3.py::test_get_object_ifmatch_good \ + s3tests/functional/test_s3.py::test_get_object_ifnonematch_good \ + s3tests/functional/test_s3.py::test_get_object_ifmatch_failed \ + s3tests/functional/test_s3.py::test_get_object_ifnonematch_failed \ + s3tests/functional/test_s3.py::test_get_object_ifmodifiedsince_good \ + s3tests/functional/test_s3.py::test_get_object_ifmodifiedsince_failed \ + s3tests/functional/test_s3.py::test_get_object_ifunmodifiedsince_failed \ + s3tests/functional/test_s3.py::test_bucket_head \ + s3tests/functional/test_s3.py::test_bucket_head_notexist \ + s3tests/functional/test_s3.py::test_object_raw_authenticated \ + s3tests/functional/test_s3.py::test_object_raw_authenticated_bucket_acl \ + s3tests/functional/test_s3.py::test_object_raw_authenticated_object_acl \ + s3tests/functional/test_s3.py::test_object_raw_authenticated_object_gone \ + s3tests/functional/test_s3.py::test_object_raw_get_x_amz_expires_out_range_zero \ + s3tests/functional/test_s3.py::test_object_anon_put \ + s3tests/functional/test_s3.py::test_object_put_authenticated \ + s3tests/functional/test_s3.py::test_bucket_recreate_overwrite_acl \ + s3tests/functional/test_s3.py::test_bucket_recreate_new_acl \ + s3tests/functional/test_s3.py::test_buckets_create_then_list \ + s3tests/functional/test_s3.py::test_buckets_list_ctime \ + s3tests/functional/test_s3.py::test_list_buckets_invalid_auth \ + s3tests/functional/test_s3.py::test_list_buckets_bad_auth \ + s3tests/functional/test_s3.py::test_bucket_create_naming_good_contains_period \ + s3tests/functional/test_s3.py::test_bucket_create_naming_good_contains_hyphen \ + s3tests/functional/test_s3.py::test_bucket_list_special_prefix \ + s3tests/functional/test_s3.py::test_object_copy_zero_size \ + s3tests/functional/test_s3.py::test_object_copy_same_bucket \ + s3tests/functional/test_s3.py::test_object_copy_to_itself \ + s3tests/functional/test_s3.py::test_object_copy_diff_bucket \ + s3tests/functional/test_s3.py::test_object_copy_canned_acl \ + s3tests/functional/test_s3.py::test_object_copy_bucket_not_found \ + s3tests/functional/test_s3.py::test_object_copy_key_not_found \ + s3tests/functional/test_s3.py::test_multipart_copy_small \ + s3tests/functional/test_s3.py::test_multipart_copy_without_range \ + s3tests/functional/test_s3.py::test_multipart_copy_special_names \ + s3tests/functional/test_s3.py::test_multipart_copy_multiple_sizes \ + s3tests/functional/test_s3.py::test_multipart_get_part \ + s3tests/functional/test_s3.py::test_multipart_upload \ + s3tests/functional/test_s3.py::test_multipart_upload_empty \ + s3tests/functional/test_s3.py::test_multipart_upload_multiple_sizes \ + s3tests/functional/test_s3.py::test_multipart_upload_contents \ + s3tests/functional/test_s3.py::test_multipart_upload_overwrite_existing_object \ + s3tests/functional/test_s3.py::test_multipart_upload_size_too_small \ + s3tests/functional/test_s3.py::test_multipart_resend_first_finishes_last \ + s3tests/functional/test_s3.py::test_multipart_upload_resend_part \ + s3tests/functional/test_s3.py::test_multipart_upload_missing_part \ + s3tests/functional/test_s3.py::test_multipart_upload_incorrect_etag \ + s3tests/functional/test_s3.py::test_abort_multipart_upload \ + s3tests/functional/test_s3.py::test_list_multipart_upload \ + s3tests/functional/test_s3.py::test_atomic_read_1mb \ + s3tests/functional/test_s3.py::test_atomic_read_4mb \ + s3tests/functional/test_s3.py::test_atomic_read_8mb \ + s3tests/functional/test_s3.py::test_atomic_write_1mb \ + s3tests/functional/test_s3.py::test_atomic_write_4mb \ + s3tests/functional/test_s3.py::test_atomic_write_8mb \ + s3tests/functional/test_s3.py::test_atomic_dual_write_1mb \ + s3tests/functional/test_s3.py::test_atomic_dual_write_4mb \ + s3tests/functional/test_s3.py::test_atomic_dual_write_8mb \ + s3tests/functional/test_s3.py::test_atomic_multipart_upload_write \ + s3tests/functional/test_s3.py::test_ranged_request_response_code \ + s3tests/functional/test_s3.py::test_ranged_big_request_response_code \ + s3tests/functional/test_s3.py::test_ranged_request_skip_leading_bytes_response_code \ + s3tests/functional/test_s3.py::test_ranged_request_return_trailing_bytes_response_code \ + s3tests/functional/test_s3.py::test_copy_object_ifmatch_good \ + s3tests/functional/test_s3.py::test_copy_object_ifnonematch_failed \ + s3tests/functional/test_s3.py::test_copy_object_ifmatch_failed \ + s3tests/functional/test_s3.py::test_copy_object_ifnonematch_good \ + s3tests/functional/test_s3.py::test_lifecycle_set \ + s3tests/functional/test_s3.py::test_lifecycle_get \ + s3tests/functional/test_s3.py::test_lifecycle_set_filter kill -9 $pid || true # Clean up data directory rm -rf "$WEED_DATA_DIR" || true @@ -408,7 +408,7 @@ jobs: echo "All SeaweedFS components are ready!" cd ../s3-tests - sed -i "s/assert prefixes == \['foo%2B1\/', 'foo\/', 'quux%20ab\/'\]/assert prefixes == \['foo\/', 'foo%2B1\/', 'quux%20ab\/'\]/" s3tests_boto3/functional/test_s3.py + sed -i "s/assert prefixes == \['foo%2B1\/', 'foo\/', 'quux%20ab\/'\]/assert prefixes == \['foo\/', 'foo%2B1\/', 'quux%20ab\/'\]/" s3tests/functional/test_s3.py # Create and update s3tests.conf to use port 8001 cp ../docker/compose/s3tests.conf ../docker/compose/s3tests-versioning.conf sed -i 's/port = 8000/port = 8001/g' ../docker/compose/s3tests-versioning.conf @@ -476,7 +476,7 @@ jobs: " || echo "Cleanup completed with some errors (expected)" # Run versioning and object lock tests once (avoid duplicates) - tox -- s3tests_boto3/functional/test_s3.py -k "object_lock or versioning" --tb=short + tox -- s3tests/functional/test_s3.py -k "object_lock or versioning" --tb=short kill -9 $pid || true # Clean up data directory rm -rf "$WEED_DATA_DIR" || true @@ -566,7 +566,7 @@ jobs: echo "All SeaweedFS components are ready!" cd ../s3-tests - sed -i "s/assert prefixes == \['foo%2B1\/', 'foo\/', 'quux%20ab\/'\]/assert prefixes == \['foo\/', 'foo%2B1\/', 'quux%20ab\/'\]/" s3tests_boto3/functional/test_s3.py + sed -i "s/assert prefixes == \['foo%2B1\/', 'foo\/', 'quux%20ab\/'\]/assert prefixes == \['foo\/', 'foo%2B1\/', 'quux%20ab\/'\]/" s3tests/functional/test_s3.py # Create and update s3tests.conf to use port 8002 cp ../docker/compose/s3tests.conf ../docker/compose/s3tests-cors.conf sed -i 's/port = 8000/port = 8002/g' ../docker/compose/s3tests-cors.conf @@ -595,11 +595,11 @@ jobs: sleep 2 done # Run CORS-specific tests from s3-tests suite - tox -- s3tests_boto3/functional/test_s3.py -k "cors" --tb=short || echo "No CORS tests found in s3-tests suite" + tox -- s3tests/functional/test_s3.py -k "cors" --tb=short || echo "No CORS tests found in s3-tests suite" # If no specific CORS tests exist, run bucket configuration tests that include CORS - tox -- s3tests_boto3/functional/test_s3.py::test_put_bucket_cors || echo "No put_bucket_cors test found" - tox -- s3tests_boto3/functional/test_s3.py::test_get_bucket_cors || echo "No get_bucket_cors test found" - tox -- s3tests_boto3/functional/test_s3.py::test_delete_bucket_cors || echo "No delete_bucket_cors test found" + tox -- s3tests/functional/test_s3.py::test_put_bucket_cors || echo "No put_bucket_cors test found" + tox -- s3tests/functional/test_s3.py::test_get_bucket_cors || echo "No get_bucket_cors test found" + tox -- s3tests/functional/test_s3.py::test_delete_bucket_cors || echo "No delete_bucket_cors test found" kill -9 $pid || true # Clean up data directory rm -rf "$WEED_DATA_DIR" || true @@ -896,7 +896,7 @@ jobs: echo "All SeaweedFS components are ready!" cd ../s3-tests - sed -i "s/assert prefixes == \['foo%2B1\/', 'foo\/', 'quux%20ab\/'\]/assert prefixes == \['foo\/', 'foo%2B1\/', 'quux%20ab\/'\]/" s3tests_boto3/functional/test_s3.py + sed -i "s/assert prefixes == \['foo%2B1\/', 'foo\/', 'quux%20ab\/'\]/assert prefixes == \['foo\/', 'foo%2B1\/', 'quux%20ab\/'\]/" s3tests/functional/test_s3.py # Create and update s3tests.conf to use port 8004 cp ../docker/compose/s3tests.conf ../docker/compose/s3tests-sql.conf sed -i 's/port = 8000/port = 8004/g' ../docker/compose/s3tests-sql.conf @@ -947,183 +947,183 @@ jobs: sleep 2 done tox -- \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_distinct \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_many \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_many \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_encoding_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_encoding_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_prefix \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_prefix \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_prefix_ends_with_delimiter \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_prefix_ends_with_delimiter \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_prefix_underscore \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_prefix_underscore \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_percentage \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_percentage \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_whitespace \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_whitespace \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_dot \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_dot \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_not_skip_special \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_delimiter_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_fetchowner_notempty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_fetchowner_defaultempty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_fetchowner_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_basic \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_alt \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_not_exist \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_one \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_maxkeys_one \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_zero \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_maxkeys_zero \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_maxkeys_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_unordered \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_unordered \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_invalid \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_none \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_continuationtoken_empty \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_continuationtoken \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_both_continuationtoken_startafter \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_startafter_unreadable \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_not_in_list \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_startafter_not_in_list \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_after_list \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_startafter_after_list \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_return_data \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_objects_anonymous \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_objects_anonymous \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_objects_anonymous_fail \ - s3tests_boto3/functional/test_s3.py::test_bucket_listv2_objects_anonymous_fail \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_long_name \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_special_prefix \ - s3tests_boto3/functional/test_s3.py::test_bucket_delete_notexist \ - s3tests_boto3/functional/test_s3.py::test_bucket_create_delete \ - s3tests_boto3/functional/test_s3.py::test_object_read_not_exist \ - s3tests_boto3/functional/test_s3.py::test_multi_object_delete \ - s3tests_boto3/functional/test_s3.py::test_multi_objectv2_delete \ - s3tests_boto3/functional/test_s3.py::test_object_head_zero_bytes \ - s3tests_boto3/functional/test_s3.py::test_object_write_check_etag \ - s3tests_boto3/functional/test_s3.py::test_object_write_cache_control \ - s3tests_boto3/functional/test_s3.py::test_object_write_expires \ - s3tests_boto3/functional/test_s3.py::test_object_write_read_update_read_delete \ - s3tests_boto3/functional/test_s3.py::test_object_metadata_replaced_on_put \ - s3tests_boto3/functional/test_s3.py::test_object_write_file \ - s3tests_boto3/functional/test_s3.py::test_post_object_invalid_date_format \ - s3tests_boto3/functional/test_s3.py::test_post_object_no_key_specified \ - s3tests_boto3/functional/test_s3.py::test_post_object_missing_signature \ - s3tests_boto3/functional/test_s3.py::test_post_object_condition_is_case_sensitive \ - s3tests_boto3/functional/test_s3.py::test_post_object_expires_is_case_sensitive \ - s3tests_boto3/functional/test_s3.py::test_post_object_missing_expires_condition \ - s3tests_boto3/functional/test_s3.py::test_post_object_missing_conditions_list \ - s3tests_boto3/functional/test_s3.py::test_post_object_upload_size_limit_exceeded \ - s3tests_boto3/functional/test_s3.py::test_post_object_missing_content_length_argument \ - s3tests_boto3/functional/test_s3.py::test_post_object_invalid_content_length_argument \ - s3tests_boto3/functional/test_s3.py::test_post_object_upload_size_below_minimum \ - s3tests_boto3/functional/test_s3.py::test_post_object_empty_conditions \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifmatch_good \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifnonematch_good \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifmatch_failed \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifnonematch_failed \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifmodifiedsince_good \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifmodifiedsince_failed \ - s3tests_boto3/functional/test_s3.py::test_get_object_ifunmodifiedsince_failed \ - s3tests_boto3/functional/test_s3.py::test_bucket_head \ - s3tests_boto3/functional/test_s3.py::test_bucket_head_notexist \ - s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated \ - s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_bucket_acl \ - s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_object_acl \ - s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_object_gone \ - s3tests_boto3/functional/test_s3.py::test_object_raw_get_x_amz_expires_out_range_zero \ - s3tests_boto3/functional/test_s3.py::test_object_anon_put \ - s3tests_boto3/functional/test_s3.py::test_object_put_authenticated \ - s3tests_boto3/functional/test_s3.py::test_bucket_recreate_overwrite_acl \ - s3tests_boto3/functional/test_s3.py::test_bucket_recreate_new_acl \ - s3tests_boto3/functional/test_s3.py::test_buckets_create_then_list \ - s3tests_boto3/functional/test_s3.py::test_buckets_list_ctime \ - s3tests_boto3/functional/test_s3.py::test_list_buckets_invalid_auth \ - s3tests_boto3/functional/test_s3.py::test_list_buckets_bad_auth \ - s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_contains_period \ - s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_contains_hyphen \ - s3tests_boto3/functional/test_s3.py::test_bucket_list_special_prefix \ - s3tests_boto3/functional/test_s3.py::test_object_copy_zero_size \ - s3tests_boto3/functional/test_s3.py::test_object_copy_same_bucket \ - s3tests_boto3/functional/test_s3.py::test_object_copy_to_itself \ - s3tests_boto3/functional/test_s3.py::test_object_copy_diff_bucket \ - s3tests_boto3/functional/test_s3.py::test_object_copy_canned_acl \ - s3tests_boto3/functional/test_s3.py::test_object_copy_bucket_not_found \ - s3tests_boto3/functional/test_s3.py::test_object_copy_key_not_found \ - s3tests_boto3/functional/test_s3.py::test_multipart_copy_small \ - s3tests_boto3/functional/test_s3.py::test_multipart_copy_without_range \ - s3tests_boto3/functional/test_s3.py::test_multipart_copy_special_names \ - s3tests_boto3/functional/test_s3.py::test_multipart_copy_multiple_sizes \ - s3tests_boto3/functional/test_s3.py::test_multipart_get_part \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_empty \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_multiple_sizes \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_contents \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_overwrite_existing_object \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_size_too_small \ - s3tests_boto3/functional/test_s3.py::test_multipart_resend_first_finishes_last \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_resend_part \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_missing_part \ - s3tests_boto3/functional/test_s3.py::test_multipart_upload_incorrect_etag \ - s3tests_boto3/functional/test_s3.py::test_abort_multipart_upload \ - s3tests_boto3/functional/test_s3.py::test_list_multipart_upload \ - s3tests_boto3/functional/test_s3.py::test_atomic_read_1mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_read_4mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_read_8mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_write_1mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_write_4mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_write_8mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_dual_write_1mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_dual_write_4mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_dual_write_8mb \ - s3tests_boto3/functional/test_s3.py::test_atomic_multipart_upload_write \ - s3tests_boto3/functional/test_s3.py::test_ranged_request_response_code \ - s3tests_boto3/functional/test_s3.py::test_ranged_big_request_response_code \ - s3tests_boto3/functional/test_s3.py::test_ranged_request_skip_leading_bytes_response_code \ - s3tests_boto3/functional/test_s3.py::test_ranged_request_return_trailing_bytes_response_code \ - s3tests_boto3/functional/test_s3.py::test_copy_object_ifmatch_good \ - s3tests_boto3/functional/test_s3.py::test_copy_object_ifnonematch_failed \ - s3tests_boto3/functional/test_s3.py::test_copy_object_ifmatch_failed \ - s3tests_boto3/functional/test_s3.py::test_copy_object_ifnonematch_good \ - s3tests_boto3/functional/test_s3.py::test_lifecycle_set \ - s3tests_boto3/functional/test_s3.py::test_lifecycle_get \ - s3tests_boto3/functional/test_s3.py::test_lifecycle_set_filter + s3tests/functional/test_s3.py::test_bucket_list_empty \ + s3tests/functional/test_s3.py::test_bucket_list_distinct \ + s3tests/functional/test_s3.py::test_bucket_list_many \ + s3tests/functional/test_s3.py::test_bucket_listv2_many \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_basic \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_basic \ + s3tests/functional/test_s3.py::test_bucket_listv2_encoding_basic \ + s3tests/functional/test_s3.py::test_bucket_list_encoding_basic \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_prefix \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_prefix \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_prefix_ends_with_delimiter \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_prefix_ends_with_delimiter \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_alt \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_alt \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_prefix_underscore \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_prefix_underscore \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_percentage \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_percentage \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_whitespace \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_whitespace \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_dot \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_dot \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_unreadable \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_unreadable \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_empty \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_empty \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_none \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_none \ + s3tests/functional/test_s3.py::test_bucket_listv2_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_delimiter_not_skip_special \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_basic \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_basic \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_alt \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_alt \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_delimiter_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_fetchowner_notempty \ + s3tests/functional/test_s3.py::test_bucket_listv2_fetchowner_defaultempty \ + s3tests/functional/test_s3.py::test_bucket_listv2_fetchowner_empty \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_basic \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_basic \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_alt \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_alt \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_empty \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_empty \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_none \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_none \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_not_exist \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_not_exist \ + s3tests/functional/test_s3.py::test_bucket_list_prefix_unreadable \ + s3tests/functional/test_s3.py::test_bucket_listv2_prefix_unreadable \ + s3tests/functional/test_s3.py::test_bucket_list_maxkeys_one \ + s3tests/functional/test_s3.py::test_bucket_listv2_maxkeys_one \ + s3tests/functional/test_s3.py::test_bucket_list_maxkeys_zero \ + s3tests/functional/test_s3.py::test_bucket_listv2_maxkeys_zero \ + s3tests/functional/test_s3.py::test_bucket_list_maxkeys_none \ + s3tests/functional/test_s3.py::test_bucket_listv2_maxkeys_none \ + s3tests/functional/test_s3.py::test_bucket_list_unordered \ + s3tests/functional/test_s3.py::test_bucket_listv2_unordered \ + s3tests/functional/test_s3.py::test_bucket_list_maxkeys_invalid \ + s3tests/functional/test_s3.py::test_bucket_list_marker_none \ + s3tests/functional/test_s3.py::test_bucket_list_marker_empty \ + s3tests/functional/test_s3.py::test_bucket_listv2_continuationtoken_empty \ + s3tests/functional/test_s3.py::test_bucket_listv2_continuationtoken \ + s3tests/functional/test_s3.py::test_bucket_listv2_both_continuationtoken_startafter \ + s3tests/functional/test_s3.py::test_bucket_list_marker_unreadable \ + s3tests/functional/test_s3.py::test_bucket_listv2_startafter_unreadable \ + s3tests/functional/test_s3.py::test_bucket_list_marker_not_in_list \ + s3tests/functional/test_s3.py::test_bucket_listv2_startafter_not_in_list \ + s3tests/functional/test_s3.py::test_bucket_list_marker_after_list \ + s3tests/functional/test_s3.py::test_bucket_listv2_startafter_after_list \ + s3tests/functional/test_s3.py::test_bucket_list_return_data \ + s3tests/functional/test_s3.py::test_bucket_list_objects_anonymous \ + s3tests/functional/test_s3.py::test_bucket_listv2_objects_anonymous \ + s3tests/functional/test_s3.py::test_bucket_list_objects_anonymous_fail \ + s3tests/functional/test_s3.py::test_bucket_listv2_objects_anonymous_fail \ + s3tests/functional/test_s3.py::test_bucket_list_long_name \ + s3tests/functional/test_s3.py::test_bucket_list_special_prefix \ + s3tests/functional/test_s3.py::test_bucket_delete_notexist \ + s3tests/functional/test_s3.py::test_bucket_create_delete \ + s3tests/functional/test_s3.py::test_object_read_not_exist \ + s3tests/functional/test_s3.py::test_multi_object_delete \ + s3tests/functional/test_s3.py::test_multi_objectv2_delete \ + s3tests/functional/test_s3.py::test_object_head_zero_bytes \ + s3tests/functional/test_s3.py::test_object_write_check_etag \ + s3tests/functional/test_s3.py::test_object_write_cache_control \ + s3tests/functional/test_s3.py::test_object_write_expires \ + s3tests/functional/test_s3.py::test_object_write_read_update_read_delete \ + s3tests/functional/test_s3.py::test_object_metadata_replaced_on_put \ + s3tests/functional/test_s3.py::test_object_write_file \ + s3tests/functional/test_s3.py::test_post_object_invalid_date_format \ + s3tests/functional/test_s3.py::test_post_object_no_key_specified \ + s3tests/functional/test_s3.py::test_post_object_missing_signature \ + s3tests/functional/test_s3.py::test_post_object_condition_is_case_sensitive \ + s3tests/functional/test_s3.py::test_post_object_expires_is_case_sensitive \ + s3tests/functional/test_s3.py::test_post_object_missing_expires_condition \ + s3tests/functional/test_s3.py::test_post_object_missing_conditions_list \ + s3tests/functional/test_s3.py::test_post_object_upload_size_limit_exceeded \ + s3tests/functional/test_s3.py::test_post_object_missing_content_length_argument \ + s3tests/functional/test_s3.py::test_post_object_invalid_content_length_argument \ + s3tests/functional/test_s3.py::test_post_object_upload_size_below_minimum \ + s3tests/functional/test_s3.py::test_post_object_empty_conditions \ + s3tests/functional/test_s3.py::test_get_object_ifmatch_good \ + s3tests/functional/test_s3.py::test_get_object_ifnonematch_good \ + s3tests/functional/test_s3.py::test_get_object_ifmatch_failed \ + s3tests/functional/test_s3.py::test_get_object_ifnonematch_failed \ + s3tests/functional/test_s3.py::test_get_object_ifmodifiedsince_good \ + s3tests/functional/test_s3.py::test_get_object_ifmodifiedsince_failed \ + s3tests/functional/test_s3.py::test_get_object_ifunmodifiedsince_failed \ + s3tests/functional/test_s3.py::test_bucket_head \ + s3tests/functional/test_s3.py::test_bucket_head_notexist \ + s3tests/functional/test_s3.py::test_object_raw_authenticated \ + s3tests/functional/test_s3.py::test_object_raw_authenticated_bucket_acl \ + s3tests/functional/test_s3.py::test_object_raw_authenticated_object_acl \ + s3tests/functional/test_s3.py::test_object_raw_authenticated_object_gone \ + s3tests/functional/test_s3.py::test_object_raw_get_x_amz_expires_out_range_zero \ + s3tests/functional/test_s3.py::test_object_anon_put \ + s3tests/functional/test_s3.py::test_object_put_authenticated \ + s3tests/functional/test_s3.py::test_bucket_recreate_overwrite_acl \ + s3tests/functional/test_s3.py::test_bucket_recreate_new_acl \ + s3tests/functional/test_s3.py::test_buckets_create_then_list \ + s3tests/functional/test_s3.py::test_buckets_list_ctime \ + s3tests/functional/test_s3.py::test_list_buckets_invalid_auth \ + s3tests/functional/test_s3.py::test_list_buckets_bad_auth \ + s3tests/functional/test_s3.py::test_bucket_create_naming_good_contains_period \ + s3tests/functional/test_s3.py::test_bucket_create_naming_good_contains_hyphen \ + s3tests/functional/test_s3.py::test_bucket_list_special_prefix \ + s3tests/functional/test_s3.py::test_object_copy_zero_size \ + s3tests/functional/test_s3.py::test_object_copy_same_bucket \ + s3tests/functional/test_s3.py::test_object_copy_to_itself \ + s3tests/functional/test_s3.py::test_object_copy_diff_bucket \ + s3tests/functional/test_s3.py::test_object_copy_canned_acl \ + s3tests/functional/test_s3.py::test_object_copy_bucket_not_found \ + s3tests/functional/test_s3.py::test_object_copy_key_not_found \ + s3tests/functional/test_s3.py::test_multipart_copy_small \ + s3tests/functional/test_s3.py::test_multipart_copy_without_range \ + s3tests/functional/test_s3.py::test_multipart_copy_special_names \ + s3tests/functional/test_s3.py::test_multipart_copy_multiple_sizes \ + s3tests/functional/test_s3.py::test_multipart_get_part \ + s3tests/functional/test_s3.py::test_multipart_upload \ + s3tests/functional/test_s3.py::test_multipart_upload_empty \ + s3tests/functional/test_s3.py::test_multipart_upload_multiple_sizes \ + s3tests/functional/test_s3.py::test_multipart_upload_contents \ + s3tests/functional/test_s3.py::test_multipart_upload_overwrite_existing_object \ + s3tests/functional/test_s3.py::test_multipart_upload_size_too_small \ + s3tests/functional/test_s3.py::test_multipart_resend_first_finishes_last \ + s3tests/functional/test_s3.py::test_multipart_upload_resend_part \ + s3tests/functional/test_s3.py::test_multipart_upload_missing_part \ + s3tests/functional/test_s3.py::test_multipart_upload_incorrect_etag \ + s3tests/functional/test_s3.py::test_abort_multipart_upload \ + s3tests/functional/test_s3.py::test_list_multipart_upload \ + s3tests/functional/test_s3.py::test_atomic_read_1mb \ + s3tests/functional/test_s3.py::test_atomic_read_4mb \ + s3tests/functional/test_s3.py::test_atomic_read_8mb \ + s3tests/functional/test_s3.py::test_atomic_write_1mb \ + s3tests/functional/test_s3.py::test_atomic_write_4mb \ + s3tests/functional/test_s3.py::test_atomic_write_8mb \ + s3tests/functional/test_s3.py::test_atomic_dual_write_1mb \ + s3tests/functional/test_s3.py::test_atomic_dual_write_4mb \ + s3tests/functional/test_s3.py::test_atomic_dual_write_8mb \ + s3tests/functional/test_s3.py::test_atomic_multipart_upload_write \ + s3tests/functional/test_s3.py::test_ranged_request_response_code \ + s3tests/functional/test_s3.py::test_ranged_big_request_response_code \ + s3tests/functional/test_s3.py::test_ranged_request_skip_leading_bytes_response_code \ + s3tests/functional/test_s3.py::test_ranged_request_return_trailing_bytes_response_code \ + s3tests/functional/test_s3.py::test_copy_object_ifmatch_good \ + s3tests/functional/test_s3.py::test_copy_object_ifnonematch_failed \ + s3tests/functional/test_s3.py::test_copy_object_ifmatch_failed \ + s3tests/functional/test_s3.py::test_copy_object_ifnonematch_good \ + s3tests/functional/test_s3.py::test_lifecycle_set \ + s3tests/functional/test_s3.py::test_lifecycle_get \ + s3tests/functional/test_s3.py::test_lifecycle_set_filter kill -9 $pid || true # Clean up data directory rm -rf "$WEED_DATA_DIR" || true |
