Skip to content

merge queue: embarking main (8438ac4) and #1399 together#1449

Closed
mergify[bot] wants to merge 3 commits into
mainfrom
mergify/merge-queue/2172765325
Closed

merge queue: embarking main (8438ac4) and #1399 together#1449
mergify[bot] wants to merge 3 commits into
mainfrom
mergify/merge-queue/2172765325

Conversation

@mergify
Copy link
Copy Markdown
Contributor

@mergify mergify Bot commented May 20, 2026

🎉 This pull request has been checked successfully and will be merged soon. 🎉

Branch main (8438ac4) and #1399 are embarked together for merge.

This pull request has been created by Mergify to speculatively check the mergeability of #1399.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.

Required conditions of queue rule default for merge:

Required conditions to stay in the queue:

---
checking_base_sha: 8438ac425dd809c01be1a2f23004d030676cbcec
previous_failed_batches: []
pull_requests:
  - number: 1399
    scopes: []
scopes: []
...

jd and others added 3 commits May 19, 2026 16:14
Pins the contract for ``mergify queue show`` 404 handling
before the Rust port lands on top. Same test exercises Python
at this PR's CI and Rust on the port commit's rebase.

Uses a PR number far above the test repo's actual PR count to
force the 404 path. That's robust against the test repo's queue
state (PR #1 may or may not be queued at any given moment) and
exercises the parts that would silently break on URL or schema
drift: endpoint reachability, auth, and 404 → ``MERGIFY_API_ERROR``
exit code (6) mapping with the ``not in the merge queue`` message.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Change-Id: I944234ba2d22d99b410f4b8c91e56f0d8a49a9f7
The Rust binary now serves ``mergify queue show <PR_NUMBER>``
natively. The Python implementation
(``mergify_cli/queue/cli.py:show`` plus the eight rendering
helpers it depended on, plus ``mergify_cli/queue/api.py``) is
removed in the same PR — the port-and-delete rule keeps a single
live copy of every command.

This is the last command in the ``queue`` group, so the whole
``mergify_cli/queue/`` Python package goes away. Closes the gap
noted in #1380's commit message: ``mergify queue --help`` now
lists ``show`` alongside ``pause`` / ``unpause`` / ``status``.

``mergify queue show <PR_NUMBER> [-v] [--json] [-r REPO]
[-t TOKEN] [-u URL]``:

1. Resolves repository / token / API URL via the shared
   ``mergify_core::auth`` resolver.
2. Fetches ``GET /v1/repos/<repo>/merge-queue/pull/<pr_number>``
   through the new ``HttpClient::get_if_exists`` helper. On 404
   the command exits with ``MERGIFY_API_ERROR`` and the message
   ``PR #<n> is not in the merge queue``, matching the Python
   implementation. Other 4xx/5xx surface as normal API errors.
3. With ``--json``: pretty-prints the raw response. Schema is the
   Mergify API contract, so unknown fields survive verbatim.
4. Without ``--json``: renders the metadata block (position /
   priority / queue rule / queued / ETA), then a CI-state line
   and a checks section, then a conditions section.
   ``--verbose`` switches the checks summary to a full table and
   the conditions summary to a tree (``├── └── │   ``) instead
   of the compact ``N/M met`` summary with bullet-listed
   failures.

New plumbing in ``mergify-core::http``:

- ``Client::get_if_exists<T>(&path) -> Result<Option<T>, _>`` —
  GET that returns ``None`` on 404. Mirrors
  ``delete_if_exists`` for read-only endpoints where "not found"
  is a meaningful caller branch rather than a server failure.
  Reuses the same retry policy, bearer-auth injection, and
  flavor-aware error mapping as ``get`` / ``post`` / ``put``.

Tests:

- 7 new unit tests in ``crates/mergify-queue/src/show.rs``:
  compact metadata + checks summary + failing-conditions block;
  verbose checks table + conditions tree; JSON passthrough with
  a synthetic ``future_field`` to verify unknown fields survive;
  404 → ``MergifyApi`` error with the right message; missing
  ``mergeability_check`` falls through to "Waiting for
  mergeability check..."; condition-group summarization (two
  labels joined with ``or``; truncation at 3+ labels);
  aggregator recursion (``any of`` / ``all of`` / ``not`` falls
  through to the first leaf).

Wiring:

- ``crates/mergify-cli/src/main.rs``: adds ``Show(ShowCliArgs)``
  to ``QueueSubcommand``, dispatch to
  ``mergify_queue::show::run``. Adds ``("queue", "show")`` to
  ``NATIVE_COMMANDS``. ``ShowCliArgs`` carries the positional
  ``pr_number: u64`` plus ``--verbose`` and ``--json`` flags.

Python deletions:

- ``mergify_cli/queue/__init__.py`` / ``cli.py`` / ``api.py``:
  removed entirely. The whole package goes away — all four
  ``queue`` subcommands are now Rust-native.
- ``mergify_cli/cli.py``: drops the
  ``from mergify_cli.queue import cli as queue_cli_mod`` import
  and the ``cli.add_command(queue_cli_mod.queue)`` call.
- ``mergify_cli/tests/queue/test_cli.py``: deleted entirely (it
  only covered ``_relative_time``, which lives in
  ``mergify-tui::time`` now).
- ``mergify_cli/tests/queue/test_show.py``: deleted entirely.
- ``mergify_cli/tests/queue/test_skill.py``: drops the click
  import; the skill-reference check now consults the binary
  alone (no parallel click-command list to merge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Change-Id: I6c265303a37642529dbbcef6f255eb429407a1d2
@mergify mergify Bot deployed to Mergify Merge Protections May 20, 2026 07:31 Active
@mergify mergify Bot temporarily deployed to func-tests-live May 20, 2026 07:31 Inactive
@mergify mergify Bot closed this May 20, 2026
@mergify mergify Bot deleted the mergify/merge-queue/2172765325 branch May 20, 2026 07:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant