1be2c1f145
Eighteen markdown list items in module- and item-doc comments had continuation lines that were not indented to align under the item text, so rustdoc rendered them as separate paragraphs and broke the list. Corrected the indentation (and, at two sites where a general wrap-up sentence followed a sublist, separated it with a blank doc line so it does not mis-attach to the last item). Doc whitespace only; no prose reworded, no code changed. Workspace clippy is now warning-clean.
45 lines
1.8 KiB
Rust
45 lines
1.8 KiB
Rust
//! Embedding-ABI M1 coherent-stop proof (spec §"Testing strategy" 5
|
|
//! + Acceptance criteria): build `examples/embed_backtest_step.ail`
|
|
//! as a staticlib, link the C host against `libembed_backtest_step.a`
|
|
//! + `libailang_rt.a`, run it, assert the `s == 25` assertion holds
|
|
//! (exit 0). This is the whole-milestone existence proof.
|
|
|
|
use ailang_test_support::workspace_root;
|
|
use std::path::PathBuf;
|
|
use std::process::Command;
|
|
|
|
fn ail_bin() -> &'static str { env!("CARGO_BIN_EXE_ail") }
|
|
fn manifest() -> PathBuf { PathBuf::from(env!("CARGO_MANIFEST_DIR")) }
|
|
|
|
#[test]
|
|
fn c_host_calls_exported_scalar_kernel() {
|
|
let fixture = workspace_root().join("examples").join("embed_backtest_step.ail");
|
|
let host_c = manifest().join("tests").join("embed").join("host.c");
|
|
let outdir = std::env::temp_dir()
|
|
.join(format!("ail-embed-e2e-{}", std::process::id()));
|
|
std::fs::create_dir_all(&outdir).unwrap();
|
|
|
|
let build = Command::new(ail_bin())
|
|
.args(["build", fixture.to_str().unwrap(),
|
|
"--emit=staticlib", "-o", outdir.to_str().unwrap()])
|
|
.output().expect("ail build --emit=staticlib");
|
|
assert!(build.status.success(),
|
|
"staticlib build failed: {}",
|
|
String::from_utf8_lossy(&build.stderr));
|
|
|
|
let host_bin = outdir.join("host");
|
|
let cc = Command::new("cc")
|
|
.arg(&host_c)
|
|
.arg(outdir.join("libembed_backtest_step.a"))
|
|
.arg(outdir.join("libailang_rt.a"))
|
|
.arg("-o").arg(&host_bin)
|
|
.output().expect("cc host link");
|
|
assert!(cc.status.success(),
|
|
"cc link failed: {}", String::from_utf8_lossy(&cc.stderr));
|
|
|
|
let run = Command::new(&host_bin).output().expect("run host");
|
|
assert!(run.status.success(),
|
|
"host assertion `s == 25` failed (exit {:?}); stderr={}",
|
|
run.status.code(), String::from_utf8_lossy(&run.stderr));
|
|
}
|