Skip to content

test: derive native queue commands from the binary, not a hardcoded list#1366

Draft
jd wants to merge 1 commit intodevs/jd/worktree-rust-port/port-queue-status-native-rust-phase-1-7--8cebcd32from
devs/jd/worktree-rust-port/derive-native-queue-cmds-binary-hardcoded-list--74502fe8
Draft

test: derive native queue commands from the binary, not a hardcoded list#1366
jd wants to merge 1 commit intodevs/jd/worktree-rust-port/port-queue-status-native-rust-phase-1-7--8cebcd32from
devs/jd/worktree-rust-port/derive-native-queue-cmds-binary-hardcoded-list--74502fe8

Conversation

@jd
Copy link
Copy Markdown
Member

@jd jd commented May 5, 2026

Reviewer feedback (#1352): hardcoding the set of Rust-native queue
subcommands in mergify_cli/tests/queue/test_skill.py made the
skill-reference validation drift-prone — a port PR that forgot to
update NATIVE_QUEUE_COMMANDS would silently pass even though
the skill was referencing a command the binary couldn't handle.

Two changes make the binary the single source of truth:

  1. crates/mergify-cli/src/main.rs factors the
    (group, subcommand) pairs into a top-level
    NATIVE_COMMANDS const. looks_native iterates that
    const instead of a match arm. A new hidden flag
    --list-native-commands (intercepted before clap or the
    shim) prints one <group> <subcommand> pair per line and
    exits 0.

  2. test_skill.py queries the installed mergify binary via
    subprocess.run([…, "--list-native-commands"]) to discover
    the native set, replacing the NATIVE_QUEUE_COMMANDS
    frozenset. The test skips cleanly when the binary isn't on
    PATH (rare; uv run pytest installs it first).

The result: the next port PR adds an entry to NATIVE_COMMANDS
in main.rs as part of its normal wiring, and test_skill.py
picks it up automatically. No parallel list to maintain.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Depends-On: #1359

@jd
Copy link
Copy Markdown
Member Author

jd commented May 5, 2026

This pull request is part of a Mergify stack:

# Pull Request Link
1 feat(rust): port queue pause and unpause to native Rust #1352
2 feat(rust): port ci git-refs and ci queue-info to native Rust #1353
3 feat(rust): port queue status to native Rust #1359
4 test: derive native queue commands from the binary, not a hardcoded list #1366 👈
5 feat(rust): extract reusable terminal-UI primitives into mergify-tui #1379
6 fix(cli): surface clap's --help instead of erroring on native subcommands #1380

@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented May 5, 2026

Merge Protections

Your pull request matches the following merge protections and will not be merged until they are valid.

🔴 ⛓️ Depends-On Requirements

Waiting for

This rule is failing.

Requirement based on the presence of Depends-On in the body of the pull request

🔴 👀 Review Requirements

Waiting for

  • #approved-reviews-by>=2
This rule is failing.
  • any of:
    • #approved-reviews-by>=2
    • author = dependabot[bot]
    • author = mergify-ci-bot
    • author = renovate[bot]

🔴 🔎 Reviews

Waiting for

  • #review-requested = 0
This rule is failing.
  • #review-requested = 0
  • #changes-requested-reviews-by = 0
  • #review-threads-unresolved = 0

🟢 🤖 Continuous Integration

Wonderful, this rule succeeded.
  • all of:
    • check-success=ci-gate

🟢 Enforce conventional commit

Wonderful, this rule succeeded.

Make sure that we follow https://www.conventionalcommits.org/en/v1.0.0/

  • title ~= ^(fix|feat|docs|style|refactor|perf|test|build|ci|chore|revert|ui)(?:\(.+\))?:

🟢 📕 PR description

Wonderful, this rule succeeded.
  • body ~= (?ms:.{48,})

@jd jd force-pushed the devs/jd/worktree-rust-port/derive-native-queue-cmds-binary-hardcoded-list--74502fe8 branch from 08a671e to 6eea6e2 Compare May 6, 2026 07:25
@jd
Copy link
Copy Markdown
Member Author

jd commented May 6, 2026

Revision history

# Type Changes Reason Date
1 initial 08a671e 2026-05-06 07:25 UTC
2 content 08a671e → 6eea6e2 2026-05-06 07:25 UTC
3 rebase 6eea6e2 → c376a33 2026-05-06 10:57 UTC
4 rebase c376a33 → 2ca6999 2026-05-06 13:00 UTC

@mergify mergify Bot had a problem deploying to Mergify Merge Protections May 6, 2026 07:25 Failure
@mergify mergify Bot requested a review from a team May 6, 2026 07:35
@jd jd force-pushed the devs/jd/worktree-rust-port/derive-native-queue-cmds-binary-hardcoded-list--74502fe8 branch from 6eea6e2 to c376a33 Compare May 6, 2026 10:57
@jd jd force-pushed the devs/jd/worktree-rust-port/port-queue-status-native-rust-phase-1-7--8cebcd32 branch from e7ad85a to 4be1b66 Compare May 6, 2026 10:57
@jd jd temporarily deployed to func-tests-live May 6, 2026 10:57 — with GitHub Actions Inactive
@jd jd temporarily deployed to func-tests-live May 6, 2026 10:57 — with GitHub Actions Inactive
@mergify mergify Bot had a problem deploying to Mergify Merge Protections May 6, 2026 10:57 Failure
Reviewer feedback (#1352): hardcoding the set of Rust-native queue
subcommands in ``mergify_cli/tests/queue/test_skill.py`` made the
skill-reference validation drift-prone — a port PR that forgot to
update ``NATIVE_QUEUE_COMMANDS`` would silently pass even though
the skill was referencing a command the binary couldn't handle.

Two changes make the binary the single source of truth:

1. ``crates/mergify-cli/src/main.rs`` factors the
   ``(group, subcommand)`` pairs into a top-level
   ``NATIVE_COMMANDS`` const. ``looks_native`` iterates that
   const instead of a `match` arm. A new hidden flag
   ``--list-native-commands`` (intercepted before clap or the
   shim) prints one ``<group> <subcommand>`` pair per line and
   exits ``0``.

2. ``test_skill.py`` queries the installed ``mergify`` binary via
   ``subprocess.run([…, "--list-native-commands"])`` to discover
   the native set, replacing the ``NATIVE_QUEUE_COMMANDS``
   frozenset. The test skips cleanly when the binary isn't on
   ``PATH`` (rare; ``uv run pytest`` installs it first).

The result: the next port PR adds an entry to ``NATIVE_COMMANDS``
in main.rs as part of its normal wiring, and ``test_skill.py``
picks it up automatically. No parallel list to maintain.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Change-Id: I74502fe8affcc58f26eaaa9d058668eb36fec83b
@jd jd force-pushed the devs/jd/worktree-rust-port/derive-native-queue-cmds-binary-hardcoded-list--74502fe8 branch from c376a33 to 2ca6999 Compare May 6, 2026 13:00
@jd jd force-pushed the devs/jd/worktree-rust-port/port-queue-status-native-rust-phase-1-7--8cebcd32 branch from 4be1b66 to d75104b Compare May 6, 2026 13:00
@jd jd temporarily deployed to func-tests-live May 6, 2026 13:00 — with GitHub Actions Inactive
@jd jd temporarily deployed to func-tests-live May 6, 2026 13:00 — with GitHub Actions Inactive
@jd jd temporarily deployed to func-tests-live May 6, 2026 13:00 — with GitHub Actions Inactive
@mergify mergify Bot had a problem deploying to Mergify Merge Protections May 6, 2026 13:01 Failure
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