Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions crates/api-test/tests/fixtures/grpc/smoke.suite.json

This file was deleted.

38 changes: 0 additions & 38 deletions crates/codex-cli/tests/parity_oracle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,6 @@ fn run_gemini(args: &[&str]) -> CmdOutput {
cmd::run(&bin, args, &[], None)
}

fn assert_unrecognized_subcommand(output: &CmdOutput, command: &str) {
let stderr = output.stderr_text();
assert!(
stderr.contains("unrecognized subcommand"),
"missing clap parse error for {command}: {stderr}"
);
assert!(
stderr.contains(command),
"missing command token {command}: {stderr}"
);
}

fn extract_commands(help_text: &str) -> Vec<String> {
let mut commands = Vec::new();
let mut in_commands = false;
Expand Down Expand Up @@ -75,32 +63,6 @@ fn parity_oracle_topology_matches_gemini() {
assert_eq!(codex_commands, gemini_commands);
}

#[test]
fn parity_oracle_removed_redirect_commands_match_gemini_parse_behavior() {
for command in [
"list",
"prompt",
"advice",
"knowledge",
"commit",
"auto-refresh",
"rate-limits",
"provider",
"debug",
"workflow",
"automation",
] {
let codex = run_codex(&[command]);
let gemini = run_gemini(&[command]);
assert_eq!(
codex.code, gemini.code,
"removed command mismatch: {command}"
);
assert_unrecognized_subcommand(&codex, command);
assert_unrecognized_subcommand(&gemini, command);
}
}

#[test]
fn parity_oracle_json_flags_match_gemini_for_auth_and_diag_help() {
let codex_auth = run_codex(&["auth", "current", "--help"]);
Expand Down
38 changes: 0 additions & 38 deletions crates/gemini-cli/tests/parity_oracle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,6 @@ fn run_codex(args: &[&str]) -> CmdOutput {
cmd::run(&bin, args, &[], None)
}

fn assert_unrecognized_subcommand(output: &CmdOutput, command: &str) {
let stderr = output.stderr_text();
assert!(
stderr.contains("unrecognized subcommand"),
"missing clap parse error for {command}: {stderr}"
);
assert!(
stderr.contains(command),
"missing command token {command}: {stderr}"
);
}

fn extract_commands(help_text: &str) -> Vec<String> {
let mut commands = Vec::new();
let mut in_commands = false;
Expand Down Expand Up @@ -75,32 +63,6 @@ fn parity_oracle_topology_matches_codex() {
assert_eq!(gemini_commands, codex_commands);
}

#[test]
fn parity_oracle_removed_redirect_commands_match_codex_parse_behavior() {
for command in [
"list",
"prompt",
"advice",
"knowledge",
"commit",
"auto-refresh",
"rate-limits",
"provider",
"debug",
"workflow",
"automation",
] {
let gemini = run_gemini(&[command]);
let codex = run_codex(&[command]);
assert_eq!(
gemini.code, codex.code,
"removed command mismatch: {command}"
);
assert_unrecognized_subcommand(&gemini, command);
assert_unrecognized_subcommand(&codex, command);
}
}

#[test]
fn parity_oracle_json_flags_match_codex_for_auth_and_diag_help() {
let gemini_auth = run_gemini(&["auth", "current", "--help"]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,5 @@ Normalization rules applied by `regenerate.sh`:
- Replace `${HOME}/.config/agent-kit` absolute path with `$AGENT_KIT_HOME`.

Fixtures:
- `help.txt`: `--help` surface baseline.
- `multi_sprint_guide_dry_run.txt`: `multi-sprint-guide --dry-run` baseline.
- `comment_template_start.md`: extracted start-sprint markdown comment template.
40 changes: 0 additions & 40 deletions crates/plan-issue-cli/tests/fixtures/shell_parity/help.txt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ run_plan_issue_local() {
cargo run -q -p nils-plan-issue-cli --bin plan-issue-local -- "$@"
}

run_plan_issue_local --help >"$script_dir/help.txt"

run_plan_issue_local --format json multi-sprint-guide \
--plan "$plan_fixture_rel" \
--dry-run \
Expand Down
60 changes: 20 additions & 40 deletions crates/plan-issue-cli/tests/parity_guardrails.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,50 +28,30 @@ fn normalize_shell_text(text: &str, agent_home: &str) -> String {
.replace("\\>", ">")
}

fn fixture_subcommands(help_fixture: &str) -> Vec<(String, String)> {
let mut rows = Vec::new();
let mut in_section = false;
for line in help_fixture.lines() {
if line.trim() == "Subcommands:" {
in_section = true;
continue;
}
if in_section && line.trim().is_empty() {
break;
}
if !in_section {
continue;
}

if !line.starts_with(" ") {
continue;
}
let trimmed = line.trim();
let mut parts = trimmed.splitn(2, char::is_whitespace);
let Some(name) = parts.next() else { continue };
let desc = parts.next().unwrap_or("").trim();
if !name.is_empty() && !desc.is_empty() {
rows.push((name.to_string(), desc.to_string()));
}
}
rows
}

#[test]
fn parity_shell_help_surface_tracks_shell_fixture_commands() {
let fixture = shell_fixture("help.txt");
let out = common::run_plan_issue(&["--help"]);
fn parity_shell_help_surface_tracks_current_command_contract() {
let out = common::run_plan_issue_local(&["--help"]);
assert_eq!(out.code, 0, "stderr: {}", out.stderr);

for (name, description) in fixture_subcommands(&fixture) {
assert!(
out.stdout.contains(&name),
"help output missing subcommand `{name}`\n{}",
out.stdout
);
for token in [
"Commands:",
"build-task-spec Build sprint-scoped task-spec TSV from a plan",
"build-plan-task-spec Build plan-scoped task-spec TSV (all sprints) for the single plan issue",
"start-plan Open one plan issue with all plan tasks in Task Decomposition",
"status-plan Wrapper of issue-delivery-loop status for the plan issue",
"link-pr Link PR to task rows and set runtime status (default: in-progress)",
"ready-plan Wrapper of issue-delivery-loop ready-for-review for final plan review",
"close-plan Close the single plan issue after final approval + merged PR gates, then enforce worktree cleanup",
"cleanup-worktrees Enforce cleanup of all issue-assigned task worktrees",
"start-sprint Start sprint from Task Decomposition runtime truth after previous sprint merge+done gate passes",
"ready-sprint Post sprint-ready comment for main-agent review before merge",
"accept-sprint Enforce merged-PR gate, sync sprint status=done, then post accepted comment",
"multi-sprint-guide Print the full repeated command flow for a plan (1 plan = 1 issue)",
"completion Export shell completion script",
] {
assert!(
out.stdout.contains(&description),
"help output missing description `{description}`\n{}",
out.stdout.contains(token),
"help output missing token `{token}`\n{}",
out.stdout
);
}
Expand Down