Skip to content

Fix bundle outdated --groups to actually group output#9699

Open
nevinera wants to merge 2 commits into
ruby:masterfrom
nevinera:nev/9333/fix-bundle-outdated-groups-argument
Open

Fix bundle outdated --groups to actually group output#9699
nevinera wants to merge 2 commits into
ruby:masterfrom
nevinera:nev/9333/fix-bundle-outdated-groups-argument

Conversation

@nevinera

@nevinera nevinera commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Purpose

Update bundle outdated --groups to produce its table of output actually sorted by group.

Analysis

print_indented unconditionally sorted table rows by gem name, discarding the group clustering that --groups had already computed, so --groups produced output identical to plain outdated (#9333). Skip that re-sort when a --group/--groups option is active, since specs_for_outdated_check already sorts by name and group_by preserves that order within each group.

What was the end-user or developer problem that led to this PR?

A (correct) observation in #9333 that bundle outdated --groups was not actually grouping at all.

What is your fix for the problem, implemented in this PR?

  • Update the existing test on this to assert a more obviously failing result - because listing the gems alphabetically also resulted in them being accidentally "grouped"
  • Add a sort = true second positional parameter to print_indented!, which controls whether to sort its results before printing
  • in print_gems_table, determine whether to sort based on the options_include_groups attr, which is true if --groups or --group foo is supplied.

Make sure the following tasks are checked

nevinera added 2 commits July 15, 2026 15:31
print_indented unconditionally sorted table rows by gem name,
discarding the group clustering that --groups had already computed,
so --groups produced output identical to plain outdated (ruby#9333).
Skip that re-sort when a --group/--groups option is active, since
specs_for_outdated_check already sorts by name and group_by preserves
that order within each group.

Also fixes the outdated_spec.rb "--groups" test, which previously
passed regardless of whether grouping worked because its expected
output happened to match alphabetical-by-name ordering.
Copilot AI review requested due to automatic review settings July 24, 2026 12:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes bundle outdated --groups so the output is actually grouped by Bundler group, instead of being re-sorted alphabetically by gem name at print time (which previously erased the grouping computed earlier).

Changes:

  • Add an optional sort parameter to print_indented to allow callers to skip row re-sorting.
  • When --groups/--group is active, print the gems table without re-sorting so group clustering is preserved.
  • Strengthen the existing --groups spec to fail more reliably by adding another outdated gem in the same non-default group.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
spec/commands/outdated_spec.rb Updates the --groups expectation to assert true group clustering by introducing an additional gem in the same group.
lib/bundler/cli/outdated.rb Skips the print-time sort when group-based output is requested, preserving the pre-grouped ordering.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

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.

2 participants