tool(tests): use library to use the "target architecture" properly in tests
This commit is contained in:
parent
7a6c9945b8
commit
acc4c2e0a1
|
@ -17,6 +17,21 @@ use rand::{thread_rng, Rng};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
|
|
||||||
|
use lanzaboote_tool::architecture::Architecture;
|
||||||
|
use lzbt_systemd::architecture::SystemdArchitectureExt;
|
||||||
|
|
||||||
|
/// Returns the host platform system
|
||||||
|
/// in the system double format for
|
||||||
|
/// our usual targets.
|
||||||
|
#[cfg(target_arch = "aarch64")]
|
||||||
|
pub static TARGET_SYSTEM_DOUBLE: &'static str = "aarch64-linux";
|
||||||
|
|
||||||
|
#[cfg(target_arch = "x86")]
|
||||||
|
pub static TARGET_SYSTEM_DOUBLE: &'static str = "i686-linux";
|
||||||
|
|
||||||
|
#[cfg(target_arch = "x86_64")]
|
||||||
|
pub static TARGET_SYSTEM_DOUBLE: &'static str = "x86_64-linux";
|
||||||
|
|
||||||
/// Create a mock generation link.
|
/// Create a mock generation link.
|
||||||
///
|
///
|
||||||
/// Works like `setup_generation_link_from_toplevel` but already sets up toplevel.
|
/// Works like `setup_generation_link_from_toplevel` but already sets up toplevel.
|
||||||
|
@ -55,7 +70,7 @@ pub fn setup_generation_link_from_toplevel(
|
||||||
],
|
],
|
||||||
"label": "LanzaOS",
|
"label": "LanzaOS",
|
||||||
"toplevel": toplevel,
|
"toplevel": toplevel,
|
||||||
"system": "x86_64-linux",
|
"system": TARGET_SYSTEM_DOUBLE,
|
||||||
},
|
},
|
||||||
"org.nixos-community.lanzaboote": { "osRelease": toplevel.join("os-release") }
|
"org.nixos-community.lanzaboote": { "osRelease": toplevel.join("os-release") }
|
||||||
});
|
});
|
||||||
|
@ -78,13 +93,18 @@ pub fn setup_generation_link_from_toplevel(
|
||||||
/// Accepts the temporary directory as a parameter so that the invoking function retains control of
|
/// Accepts the temporary directory as a parameter so that the invoking function retains control of
|
||||||
/// it (and when it goes out of scope).
|
/// it (and when it goes out of scope).
|
||||||
pub fn setup_toplevel(tmpdir: &Path) -> Result<PathBuf> {
|
pub fn setup_toplevel(tmpdir: &Path) -> Result<PathBuf> {
|
||||||
|
let system = Architecture::from_nixos_system(TARGET_SYSTEM_DOUBLE)?;
|
||||||
// Generate a random toplevel name so that multiple toplevel paths can live alongside each
|
// Generate a random toplevel name so that multiple toplevel paths can live alongside each
|
||||||
// other in the same directory.
|
// other in the same directory.
|
||||||
let toplevel = tmpdir.join(format!("toplevel-{}", random_string(8)));
|
let toplevel = tmpdir.join(format!("toplevel-{}", random_string(8)));
|
||||||
fs::create_dir(&toplevel)?;
|
fs::create_dir(&toplevel)?;
|
||||||
|
|
||||||
let test_systemd = systemd_location_from_env()?;
|
let test_systemd = systemd_location_from_env()?;
|
||||||
let test_systemd_stub = format!("{test_systemd}/lib/systemd/boot/efi/linuxx64.efi.stub");
|
let systemd_stub_filename = system.systemd_stub_filename();
|
||||||
|
let test_systemd_stub = format!(
|
||||||
|
"{test_systemd}/lib/systemd/boot/efi/{systemd_stub_filename}",
|
||||||
|
systemd_stub_filename = systemd_stub_filename.display()
|
||||||
|
);
|
||||||
|
|
||||||
let initrd_path = toplevel.join("initrd");
|
let initrd_path = toplevel.join("initrd");
|
||||||
let kernel_path = toplevel.join("kernel");
|
let kernel_path = toplevel.join("kernel");
|
||||||
|
@ -119,8 +139,13 @@ pub fn lanzaboote_install(
|
||||||
) -> Result<Output> {
|
) -> Result<Output> {
|
||||||
// To simplify the test setup, we use the systemd stub here instead of the lanzaboote stub. See
|
// To simplify the test setup, we use the systemd stub here instead of the lanzaboote stub. See
|
||||||
// the comment in setup_toplevel for details.
|
// the comment in setup_toplevel for details.
|
||||||
|
let system = Architecture::from_nixos_system(TARGET_SYSTEM_DOUBLE)?;
|
||||||
let test_systemd = systemd_location_from_env()?;
|
let test_systemd = systemd_location_from_env()?;
|
||||||
let test_systemd_stub = format!("{test_systemd}/lib/systemd/boot/efi/linuxx64.efi.stub");
|
let systemd_stub_filename = system.systemd_stub_filename();
|
||||||
|
let test_systemd_stub = format!(
|
||||||
|
"{test_systemd}/lib/systemd/boot/efi/{systemd_stub_filename}",
|
||||||
|
systemd_stub_filename = systemd_stub_filename.display()
|
||||||
|
);
|
||||||
|
|
||||||
let test_loader_config_path = tempfile::NamedTempFile::new()?;
|
let test_loader_config_path = tempfile::NamedTempFile::new()?;
|
||||||
let test_loader_config = r"timeout 0\nconsole-mode 1\n";
|
let test_loader_config = r"timeout 0\nconsole-mode 1\n";
|
||||||
|
|
|
@ -6,7 +6,7 @@ use tempfile::tempdir;
|
||||||
|
|
||||||
mod common;
|
mod common;
|
||||||
|
|
||||||
use common::{hash_file, mtime, remove_signature, verify_signature};
|
use common::{hash_file, mtime, remove_signature, verify_signature, TARGET_SYSTEM_DOUBLE};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn keep_systemd_boot_binaries() -> Result<()> {
|
fn keep_systemd_boot_binaries() -> Result<()> {
|
||||||
|
|
Loading…
Reference in New Issue