From 381eebb02d41d19a6e1da83fe3055c8d1a89d6e6 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Sat, 26 Sep 2026 13:36:53 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20test=20=E6=9C=AA=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E5=AD=90=E5=91=BD=E4=BB=A4=E9=80=80=E5=87=BA=E7=A0=81=E7=94=B1?= =?UTF-8?q?=200=20=E6=94=B9=E4=B8=BA=202=20=E4=BB=A5=E5=8C=BA=E5=88=86?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E4=B8=8E=E8=BF=90=E8=A1=8C=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_cli/src/main.rs | 3 ++- crates/oxide_cli/tests/cli_smoke.rs | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/crates/oxide_cli/src/main.rs b/crates/oxide_cli/src/main.rs index c4e19504..d13dbe07 100644 --- a/crates/oxide_cli/src/main.rs +++ b/crates/oxide_cli/src/main.rs @@ -470,5 +470,6 @@ fn not_implemented(command: &str) -> ExitCode { use ansi_term::Colour::Yellow; kernel_info!("command not yet implemented: {}", command); eprintln!("{}", Yellow.paint(format!("'{command}' is not yet implemented"))); - ExitCode::SUCCESS + // 2 = 未实现,与 0=成功、1=运行失败区分,供脚本与 CI 识别。 + ExitCode::from(2) } diff --git a/crates/oxide_cli/tests/cli_smoke.rs b/crates/oxide_cli/tests/cli_smoke.rs index 537612b7..b8530262 100644 --- a/crates/oxide_cli/tests/cli_smoke.rs +++ b/crates/oxide_cli/tests/cli_smoke.rs @@ -63,6 +63,22 @@ fn eval_array_output() { assert!(stdout.trim() == "[1, 2, 3]", "eval 数组应打印元素区内容: {stdout}"); } +#[test] +fn test_stub_exit_code() { + let output = Command::new(env!("CARGO_BIN_EXE_oxide")) + .args(["test"]) + .output() + .expect("failed to run oxide test"); + + // 未实现子命令固定退出码 2,区别于 0=成功 / 1=运行失败。 + assert_eq!(output.status.code(), Some(2), "test stub should exit 2"); + let stderr = String::from_utf8_lossy(&output.stderr); + assert!( + stderr.contains("not yet implemented"), + "test stub should print not-implemented notice: {stderr}" + ); +} + #[test] fn bench_help() { let output = Command::new(env!("CARGO_BIN_EXE_oxide"))