diff options
| author | Hermes Agent <hermes@localhost> | 2026-08-12 00:04:41 +0000 |
|---|---|---|
| committer | Hermes Agent <hermes@localhost> | 2026-08-12 00:04:41 +0000 |
| commit | c24c00c1d89990d44d796c4fd2b84e92162b044a (patch) | |
| tree | a58cd6fc3aaf473463dd1e51315043064787f53f /tests/stage_graph.rs | |
| parent | 191e2b7429ff4547b5fdd0fbfcff943ce96c2d68 (diff) | |
Add validated image build stage graph
Diffstat (limited to 'tests/stage_graph.rs')
| -rw-r--r-- | tests/stage_graph.rs | 40 |
1 files changed, 40 insertions, 0 deletions
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]); +} |