summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHermes Agent <hermes@localhost>2026-08-12 00:04:41 +0000
committerHermes Agent <hermes@localhost>2026-08-12 00:04:41 +0000
commitc24c00c1d89990d44d796c4fd2b84e92162b044a (patch)
treea58cd6fc3aaf473463dd1e51315043064787f53f /tests
parent191e2b7429ff4547b5fdd0fbfcff943ce96c2d68 (diff)
Add validated image build stage graph
Diffstat (limited to 'tests')
-rw-r--r--tests/stage_graph.rs40
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]);
+}