From c24c00c1d89990d44d796c4fd2b84e92162b044a Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Wed, 12 Aug 2026 00:04:41 +0000 Subject: Add validated image build stage graph --- tests/stage_graph.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/stage_graph.rs (limited to 'tests') diff --git a/tests/stage_graph.rs b/tests/stage_graph.rs new file mode 100644 index 0000000..cd6fc93 --- /dev/null +++ b/tests/stage_graph.rs @@ -0,0 +1,40 @@ +use alt_controller_image::{BuildPlan, ImageSpec, Stage}; + +const SPEC: &str = r#" +[target] +name = "alt-controller" +architecture = "x86_64" +format = "tar" + +[kernel] +flavour = "rt" + +[boot] +initrd_features = ["rootfs"] +initrd_modules = ["ext4"] + +[packages] +base = ["basesystem"] +selectors = ["^kernel-image-rt$"] +"#; + +#[test] +fn stage_graph_orders_artifact_producers_before_consumers() { + let spec: ImageSpec = toml::from_str(SPEC).expect("spec parses"); + let plan = BuildPlan::compile(spec).expect("plan compiles"); + + assert_eq!( + plan.stages(), + [ + Stage::Resolve, + Stage::Install, + Stage::FinalizeRootfs, + Stage::BuildInitramfs, + Stage::Package, + Stage::Manifest, + ] + ); + assert_eq!(plan.dependencies(Stage::Package), &[Stage::FinalizeRootfs, Stage::BuildInitramfs]); + assert_eq!(plan.dependencies(Stage::BuildInitramfs), &[Stage::Install]); + assert_eq!(plan.dependencies(Stage::Manifest), &[Stage::Package]); +} -- cgit v1.2.3