summaryrefslogtreecommitdiff
path: root/tests/stage_graph.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stage_graph.rs')
-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]);
+}