summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/compare.rs20
-rw-r--r--tests/package_installer.rs18
2 files changed, 38 insertions, 0 deletions
diff --git a/tests/compare.rs b/tests/compare.rs
index 6dd7317..eb6d388 100644
--- a/tests/compare.rs
+++ b/tests/compare.rs
@@ -217,6 +217,26 @@ fn normalizes_legacy_dot_prefixed_archive_paths_before_comparison() {
}
#[test]
+fn normalizes_dot_prefixed_paths_from_a_legacy_tree_archive() {
+ let fixture = tempdir().expect("temporary directory");
+ let rootfs = fixture.path().join("rootfs");
+ fs::create_dir_all(rootfs.join("etc")).expect("create rootfs directory");
+ fs::write(rootfs.join("etc/controller.conf"), "controller\n").expect("write rootfs file");
+ let artifact = fixture.path().join("legacy.tar");
+ let mut archive = tar::Builder::new(fs::File::create(&artifact).expect("create legacy archive"));
+ archive.append_dir_all(".", &rootfs).expect("write legacy tree archive");
+ archive.finish().expect("finish legacy archive");
+
+ let manifest = ArtifactManifest::collect_archive(&artifact).expect("collect legacy archive facts");
+
+ assert!(manifest.files.iter().all(|record| !record.path.starts_with("./")));
+ assert!(manifest
+ .archive_members
+ .iter()
+ .all(|record| !record.path.starts_with("./")));
+}
+
+#[test]
fn excludes_legacy_internal_host_and_fakedata_archive_members() {
let fixture = tempdir().expect("temporary directory");
let rootfs = fixture.path().join("rootfs");
diff --git a/tests/package_installer.rs b/tests/package_installer.rs
index 622d378..b322aa9 100644
--- a/tests/package_installer.rs
+++ b/tests/package_installer.rs
@@ -1,6 +1,7 @@
use std::path::PathBuf;
use alt_controller_image::hasher::{CommandRunner, HasherInstaller, Invocation};
+use alt_controller_image::{BuildPlan, ImageSpec};
use alt_controller_image::package_installer::{AptConfig, PackageInstaller, PackageRequest};
#[derive(Default)]
@@ -70,3 +71,20 @@ fn package_request_rejects_empty_packages_and_unsafe_apt_config_paths() {
)
.is_err());
}
+
+#[test]
+fn build_plan_compiles_its_typed_package_request() {
+ let spec = ImageSpec::load(std::path::Path::new("profiles/alt-controller.toml"))
+ .expect("load controller spec");
+ let plan = BuildPlan::compile(spec).expect("compile controller plan");
+
+ let request = plan
+ .package_request("work/alt-controller", "profiles/apt.conf")
+ .expect("compile package request");
+
+ assert_eq!(request.workdir(), std::path::Path::new("work/alt-controller"));
+ assert_eq!(request.apt_config().as_path(), std::path::Path::new("profiles/apt.conf"));
+ assert_eq!(request.packages()[0], "apt");
+ assert!(request.packages().contains(&"libiec61850".to_owned()));
+ assert_eq!(request.selectors(), ["^kernel-(image|modules-())-(rt)$"]);
+}