From 1acf750860422567732557f7382d91b0d1a50d15 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Mon, 29 Jun 2026 04:44:25 +0800 Subject: feat(verify): support build-time Rust code blocks in markdown tests Handle code blocks annotated with `// BUILD TIME` by generating a `build.rs` instead of `src/main.rs`, adding `mingling` as a build dependency with the `builds` feature, and writing a stub main.rs --- dev_tools/src/bin/test-all-markdown-code.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'dev_tools/src/bin') diff --git a/dev_tools/src/bin/test-all-markdown-code.rs b/dev_tools/src/bin/test-all-markdown-code.rs index a1acb22..280fca7 100644 --- a/dev_tools/src/bin/test-all-markdown-code.rs +++ b/dev_tools/src/bin/test-all-markdown-code.rs @@ -5,8 +5,8 @@ use std::path::{Path, PathBuf}; use colored::Colorize; use indicatif::ProgressBar; use tools::verify::{ - build_block, compute_block_hash, generate_cargo_toml, generate_main_rs, is_block_testable, - parse_code_blocks, write_summary_report, + build_block, compute_block_hash, generate_cargo_toml, generate_main_rs, generate_build_rs, + is_block_testable, parse_code_blocks, write_summary_report, }; use tools::{eprintln_cargo_style, println_cargo_style}; @@ -184,8 +184,19 @@ async fn main() { bar.set_message(block_label.clone()); - let main_rs = generate_main_rs(block); - let (ok, err) = build_block(&src_dir, &manifest_path, &cargo_toml, &main_rs); + let main_rs = if block.is_build_time { + // For build-time blocks, write a stub main.rs and generate build.rs + generate_build_rs(block) + } else { + generate_main_rs(block) + }; + let (ok, err) = build_block( + &src_dir, + &manifest_path, + &cargo_toml, + &main_rs, + block.is_build_time, + ); if ok { bar.inc(1); } else { -- cgit