S3: regenerate test snapshots & parity fixes#13824
Conversation
S3 Image Test Results (AMD64 / ARM64) 2 files 2 suites 8m 19s ⏱️ Results for commit 3c03ba3. |
Test Results (amd64) - Integration, Bootstrap 5 files 5 suites 2h 41m 54s ⏱️ Results for commit 3c03ba3. |
LocalStack Community integration with Pro 2 files ±0 2 suites ±0 2h 3m 42s ⏱️ + 2m 25s Results for commit 3c03ba3. ± Comparison against base commit b8f25f2. This pull request skips 4 and un-skips 1 tests. |
aidehn
left a comment
There was a problem hiding this comment.
Looks good! Pretty confident about this since all the pipelines are passing - just left a comment about potentially creating a ticket for the regression! It's nice we can remove some of the patches too 🔥
| snapshot.match("delete_bucket_metrics_configuration_2", delete_err.value.response) | ||
|
|
||
|
|
||
| @pytest.mark.skip( |
There was a problem hiding this comment.
It could be worth creating a ticket for this (if not already created or being worked on!)
There was a problem hiding this comment.
Already existing, see FLC-141, but good thinking 👍
AWS S3 expanded If-Match conditional delete support to general-purpose buckets in September 2025. This change removes If-Match from the unsupported precondition block and validates it using the existing object_exists_for_precondition_write and verify_object_equality_precondition_write helpers, matching the pattern used by PutObject and CopyObject. Unlike PutObject and CopyObject, DeleteObject accepts If-Match: * (delete only if the object exists), so that value is handled explicitly rather than rejected. x-amz-if-match-size and x-amz-if-match-last-modified-time remain unsupported as those are still Directory Bucket only. The TestS3DeletePrecondition class is unskipped (the existing snapshot for test_delete_object_if_match_non_express was already re-recorded against AWS in localstack#13824 and shows 412 PreconditionFailed). New tests cover successful deletes, If-Match: *, and versioned bucket behavior including delete markers. Locking for full concurrency guarantees is left as a TODO for a follow-up, per maintainer guidance on localstack#13330. Fixes localstack#13323
AWS S3 expanded If-Match conditional delete support to general-purpose
buckets in September 2025. This change removes If-Match from the
unsupported precondition block and validates it using the existing
object_exists_for_precondition_write and
verify_object_equality_precondition_write helpers, matching the pattern
used by PutObject and CopyObject.
Behavior validated against AWS us-east-1:
- wrong ETag: 412 PreconditionFailed
- correct ETag: 204, delete proceeds (creates delete marker on
versioned buckets)
- object missing or current version is a delete marker: 404 NoSuchKey
(for both ETag and '*' values — AWS docs say 412 here but actual
behavior is 404)
- If-Match: '*' is accepted (unlike PutObject/CopyObject which reject
it) and means "delete only if the object exists"
- If-Match combined with VersionId: 501 NotImplemented — AWS rejects
this combination outright regardless of values
x-amz-if-match-size and x-amz-if-match-last-modified-time remain
unsupported as those are still Directory Bucket only.
The TestS3DeletePrecondition class is unskipped (the existing snapshot
for test_delete_object_if_match_non_express was already re-recorded
against AWS in localstack#13824 and shows 412 PreconditionFailed). New tests cover
all paths above.
Locking for full concurrency guarantees is left as a TODO for a
follow-up, per maintainer guidance on localstack#13330.
Fixes localstack#13323
AWS S3 expanded If-Match conditional delete support to general-purpose
buckets in September 2025. This change removes If-Match from the
unsupported precondition block and validates it using the existing
object_exists_for_precondition_write and
verify_object_equality_precondition_write helpers, matching the pattern
used by PutObject and CopyObject.
Behavior validated against AWS us-east-1:
- wrong ETag: 412 PreconditionFailed
- correct ETag: 204, delete proceeds (creates delete marker on
versioned buckets)
- object missing or current version is a delete marker: 404 NoSuchKey
(for both ETag and '*' values — AWS docs say 412 here but actual
behavior is 404)
- If-Match: '*' is accepted (unlike PutObject/CopyObject which reject
it) and means "delete only if the object exists"
- If-Match combined with VersionId: 501 NotImplemented — AWS rejects
this combination outright regardless of values
x-amz-if-match-size and x-amz-if-match-last-modified-time remain
unsupported as those are still Directory Bucket only.
The TestS3DeletePrecondition class is unskipped (the existing snapshot
for test_delete_object_if_match_non_express was already re-recorded
against AWS in localstack#13824 and shows 412 PreconditionFailed). New tests cover
all paths above.
Locking for full concurrency guarantees is left as a TODO for a
follow-up, per maintainer guidance on localstack#13330.
Fixes localstack#13323
Motivation & Changes
While reviewing and regenerating some tests for #13554, I realized AWS started returning
ChecksumTypeinCopyObjectresults, which was something missing as they were returning it for all other operations related to object creation.I regenerated most snapshots and added the fixes needed:
HeadBucketresult by removing spec patches and use newly added in BotocoreHeadBucketOutputBucketArninCreateBucket,HeadBucketandListBucketsDisplayNamefromOwnerbut notInitiatorArgumentValuewhennullfor SSE-C validationTests
Related