starryos-test 技术文档
路径:
test-suit/starryos类型:二进制 crate 分层:测试层 / StarryOS 系统回归入口 版本:0.3.0-preview.3文档依据:Cargo.toml、src/main.rs、src/init.sh、xtask/src/starry/{mod.rs,run.rs,config.rs,build.rs}、os/StarryOS/kernel/src/entry.rs
starryos-test 是 StarryOS 的专用测试入口包。它的运行时代码当前几乎与 starryos 相同,同样会构造 /bin/sh -c init.sh 并调用 starry_kernel::entry::init();但它在构建和运行流程中的“包身份”完全不同,因为 cargo starry test qemu 默认选择的就是它。
因此,starryos-test 不是另一套内核实现,而是“被测试系统的入口包”。它把 StarryOS 的真实启动主线放进了专门的自动化回归通道里。
1. 架构设计分析
1.1 总体定位
这个包的职责可以概括为三点:
- 作为
cargo starry test qemu的默认目标包。 - 复用与
starryos基本一致的启动路径,确保测试跑在真实系统 bring-up 之上。 - 让 xtask 能为测试场景注入专门的成功/失败判据和目标产物目录。
从 CI 和本地测试视角看,它就是 StarryOS 的“系统测试镜像入口”。
1.2 为什么必须单独做成一个包
真实差异不在 src/main.rs,而在 xtask 的选择逻辑:
xtask/src/starry/build.rs把测试包名固定为STARRY_TEST_PACKAGE = "starryos-test"。scripts/axbuild/src/starry/mod.rs::Starry::test_qemu()会构造测试请求并强制package = "starryos-test"。xtask/src/starry/run.rs在包名等于starryos-test时使用RunScope::PackageRoot。xtask/src/starry/config.rs通过cargo build -p starryos-test --target ... --features qemu解析测试产物目录和rootfs-<arch>.img位置。
也就是说,测试入口之所以独立,不是为了换一套运行时代码,而是为了换一条受控的测试构建/运行通道。