Skip to content

Test copy semantics, and versions, batch versions and restores - #13

Merged
tiptenbrink merged 3 commits into
masterfrom
copy-semantics-and-versions
Oct 3, 2026
Merged

tiptenbrink merged 3 commits into
masterfrom
copy-semantics-and-versions

Conversation

@tiptenbrink

@tiptenbrink tiptenbrink commented Oct 3, 2026 •

Copy link
Copy Markdown
Collaborator

Ready for review. CI passes, with the borink adapter pinned at object-storage a231d3b, which passes every case.

Summary

  • Copy semantics a client decides from the documentation, 15 cases:
    • An S3 REPLACE replaces the content properties with the metadata, so a copy naming only metadata gets binary/octet-stream.
    • REPLACE with no metadata or no tags clears them. A client API that cannot say so may refuse or decline.
    • UploadPartCopy reports a failed source condition as 412 PreconditionFailed.
    • Copy Blob ignores content properties, while Put Blob From URL honors them.
    • A From URL source that is missing is 404 CannotVerifyCopySource.
  • Tags of a version or snapshot, 12 cases. Azure sets a snapshot's tags, though its reference names only versionid. S3 answers a deleted version with 404 NoSuchVersion and an ID it could never have given with 400 InvalidArgument.
  • A version or snapshot per key in a batch delete, 7 cases. A delete_many key may be {"key", "version"}, on Azure also {"key", "snapshot"}. blob_batch now compares each subrequest's query.
  • S3 version listings, 8 cases. list_page with include: ["versions"] pages by continuation_token and a new version_marker. A directory bucket answers 501 NotImplemented, which a client may refuse.
  • Restoring from archive, 14 cases. A new restore call reports state started or readable, and reads report restore_status.
  • Every case is verified live. REFERENCE.md has the new result fields.
  • The AWS C++ SDK sends ?tagging=tagging, ?restore=restore and ?versions=versions beside another parameter. S3 accepts that, so the cases do too.

Test plan

  • object-tests validate cases/operations.json passes (1,132 cases).
  • cargo test passes.

tiptenbrink and others added 3 commits October 3, 2026 13:02
15 cases, verified live: an S3 REPLACE replaces content properties with metadata, and with none clears metadata or tags; UploadPartCopy reports a failed source condition as 412; Copy Blob ignores content properties, which Put Blob From URL honors; a From URL source that is missing is 404 CannotVerifyCopySource.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Batch deletes, ListObjectVersions and restore get new call and result fields, and blob_batch compares each subrequest's query.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@tiptenbrink
tiptenbrink merged commit 1eca6ca into master Oct 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant