lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

commit 9ad2168c20bf409f5968d3a9952bc53a2033db6e
parent 5245d7fdf487ac905f2ddd47f635d349f9911465
Author: triesap <tyson@radroots.org>
Date:   Fri, 21 Aug 2026 01:06:33 +0000

build: stabilize API qualification

- clear only extbuild-owned Rustdoc artifacts before each package
- prevent stale HTML or dependency fingerprints from hiding JSON output
- preserve the governed cargo-semver-checks contract and target routing
- cover the exact bounded cleanup invocation in xtask tests

Diffstat:
Mtools/xtask/src/api_qualification.rs | 23++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/tools/xtask/src/api_qualification.rs b/tools/xtask/src/api_qualification.rs @@ -29,6 +29,7 @@ pub fn run(root: &Path) -> Result<(), String> { verify_revision(root, &baseline.revision)?; } for package in &contract.packages { + clear_rustdoc_artifacts(root)?; let args = invocation(&contract, package); eprintln!("cargo {}", args.join(" ")); let status = Command::new("cargo") @@ -48,6 +49,25 @@ pub fn run(root: &Path) -> Result<(), String> { Ok(()) } +fn clear_rustdoc_artifacts(root: &Path) -> Result<(), String> { + let args = rustdoc_cleanup_invocation(); + eprintln!("cargo {}", args.join(" ")); + let status = Command::new("cargo") + .args(args) + .current_dir(root) + .status() + .map_err(|error| format!("failed to start rustdoc cleanup: {error}"))?; + if status.success() { + Ok(()) + } else { + Err("rustdoc cleanup failed before public API qualification".to_owned()) + } +} + +fn rustdoc_cleanup_invocation() -> [&'static str; 2] { + ["clean", "--doc"] +} + fn load(root: &Path) -> Result<Contract, String> { let path = root.join("contracts/releases/api_semver.toml"); let raw = fs::read_to_string(&path) @@ -148,7 +168,7 @@ fn invocation(contract: &Contract, package: &str) -> Vec<String> { #[cfg(test)] mod tests { - use super::{invocation, load, validate}; + use super::{invocation, load, rustdoc_cleanup_invocation, validate}; #[test] fn current_contract_covers_all_library_packages() { @@ -161,5 +181,6 @@ mod tests { let invocation = invocation(&contract, "radroots_core"); assert!(invocation.contains(&"--all-features".to_owned())); assert!(invocation.ends_with(&["--release-type".to_owned(), "major".to_owned()])); + assert_eq!(rustdoc_cleanup_invocation(), ["clean", "--doc"]); } }