fix(ls): include version summaries in JSON output#165
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related issue(s)
This change comes from the test-gap detection sweep for recent
ls --versionswork.Background
The recent
ls --versionsimplementation added JSON pagination metadata and text-mode summaries, but--summarizestill had no effect when the command was used with--json.For users relying on structured output, that meant the new version-listing path behaved differently from the existing
ls --json --summarizeobject-listing paths, which already expose totals in the response body.Root cause
The JSON formatter for
ls --versionsonly serializeditems,truncated, and pagination markers. It ignored thesummarizeflag entirely even though the command already computed the same totals for text output.Solution
The command now includes a version-specific
summaryblock inls --versions --json --summarize, with total version count and aggregate size. The change stays inside the recent version-listing code path and does not widen behavior outsidels --versions.The regression coverage adds:
ls --versions --json --summarizeagainst a versioned object with multiple versionsValidation
cargo test -p rustfs-cli ls::tests --libcargo test --features integration --test integration version_operations::test_ls_versions_json_summary_reports_totalsmake pre-commit