Skip to content

Commit 203a4fc

Browse files
committed
tree-wide: Move everything else under #[cfg(test)]
Followup to 40af5a6 now that some other PRs have merged this one would be less conflict-fest. This is a general best practice; specifically motivated by handling test-specific imports. Signed-off-by: Colin Walters <[email protected]>
1 parent 7bea5ef commit 203a4fc

File tree

7 files changed

+338
-304
lines changed

7 files changed

+338
-304
lines changed

lib/src/deploy.rs

Lines changed: 85 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -817,44 +817,6 @@ pub(crate) fn switch_origin_inplace(root: &Dir, imgref: &ImageReference) -> Resu
817817
Ok(newest_deployment)
818818
}
819819

820-
#[test]
821-
fn test_switch_inplace() -> Result<()> {
822-
use cap_std::fs::DirBuilderExt;
823-
824-
let td = cap_std_ext::cap_tempfile::TempDir::new(cap_std::ambient_authority())?;
825-
let mut builder = cap_std::fs::DirBuilder::new();
826-
let builder = builder.recursive(true).mode(0o755);
827-
let deploydir = "sysroot/ostree/deploy/default/deploy";
828-
let target_deployment = "af36eb0086bb55ac601600478c6168f834288013d60f8870b7851f44bf86c3c5.0";
829-
td.ensure_dir_with(
830-
format!("sysroot/ostree/deploy/default/deploy/{target_deployment}"),
831-
builder,
832-
)?;
833-
let deploydir = &td.open_dir(deploydir)?;
834-
let orig_imgref = ImageReference {
835-
image: "quay.io/exampleos/original:sometag".into(),
836-
transport: "registry".into(),
837-
signature: None,
838-
};
839-
{
840-
let origin = origin_from_imageref(&orig_imgref)?;
841-
deploydir.atomic_write(
842-
format!("{target_deployment}.origin"),
843-
origin.to_data().as_bytes(),
844-
)?;
845-
}
846-
847-
let target_imgref = ImageReference {
848-
image: "quay.io/someother/otherimage:latest".into(),
849-
transport: "registry".into(),
850-
signature: None,
851-
};
852-
853-
let replaced = switch_origin_inplace(&td, &target_imgref).unwrap();
854-
assert_eq!(replaced, target_deployment);
855-
Ok(())
856-
}
857-
858820
/// A workaround for https://github.com/ostreedev/ostree/issues/3193
859821
/// as generated by anaconda.
860822
#[context("Updating /etc/fstab for anaconda+composefs")]
@@ -935,56 +897,100 @@ pub(crate) fn fixup_etc_fstab(root: &Dir) -> Result<()> {
935897
Ok(())
936898
}
937899

938-
#[test]
939-
fn test_fixup_etc_fstab_default() -> Result<()> {
940-
let tempdir = cap_std_ext::cap_tempfile::tempdir(cap_std::ambient_authority())?;
941-
let default = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n";
942-
tempdir.create_dir_all("etc")?;
943-
tempdir.atomic_write("etc/fstab", default)?;
944-
fixup_etc_fstab(&tempdir).unwrap();
945-
assert_eq!(tempdir.read_to_string("etc/fstab")?, default);
946-
Ok(())
947-
}
900+
#[cfg(test)]
901+
mod tests {
902+
use super::*;
903+
904+
#[test]
905+
fn test_switch_inplace() -> Result<()> {
906+
use cap_std::fs::DirBuilderExt;
907+
908+
let td = cap_std_ext::cap_tempfile::TempDir::new(cap_std::ambient_authority())?;
909+
let mut builder = cap_std::fs::DirBuilder::new();
910+
let builder = builder.recursive(true).mode(0o755);
911+
let deploydir = "sysroot/ostree/deploy/default/deploy";
912+
let target_deployment =
913+
"af36eb0086bb55ac601600478c6168f834288013d60f8870b7851f44bf86c3c5.0";
914+
td.ensure_dir_with(
915+
format!("sysroot/ostree/deploy/default/deploy/{target_deployment}"),
916+
builder,
917+
)?;
918+
let deploydir = &td.open_dir(deploydir)?;
919+
let orig_imgref = ImageReference {
920+
image: "quay.io/exampleos/original:sometag".into(),
921+
transport: "registry".into(),
922+
signature: None,
923+
};
924+
{
925+
let origin = origin_from_imageref(&orig_imgref)?;
926+
deploydir.atomic_write(
927+
format!("{target_deployment}.origin"),
928+
origin.to_data().as_bytes(),
929+
)?;
930+
}
931+
932+
let target_imgref = ImageReference {
933+
image: "quay.io/someother/otherimage:latest".into(),
934+
transport: "registry".into(),
935+
signature: None,
936+
};
948937

949-
#[test]
950-
fn test_fixup_etc_fstab_multi() -> Result<()> {
951-
let tempdir = cap_std_ext::cap_tempfile::tempdir(cap_std::ambient_authority())?;
952-
let default = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n\
938+
let replaced = switch_origin_inplace(&td, &target_imgref).unwrap();
939+
assert_eq!(replaced, target_deployment);
940+
Ok(())
941+
}
942+
943+
#[test]
944+
fn test_fixup_etc_fstab_default() -> Result<()> {
945+
let tempdir = cap_std_ext::cap_tempfile::tempdir(cap_std::ambient_authority())?;
946+
let default = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n";
947+
tempdir.create_dir_all("etc")?;
948+
tempdir.atomic_write("etc/fstab", default)?;
949+
fixup_etc_fstab(&tempdir).unwrap();
950+
assert_eq!(tempdir.read_to_string("etc/fstab")?, default);
951+
Ok(())
952+
}
953+
954+
#[test]
955+
fn test_fixup_etc_fstab_multi() -> Result<()> {
956+
let tempdir = cap_std_ext::cap_tempfile::tempdir(cap_std::ambient_authority())?;
957+
let default = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n\
953958
UUID=6907-17CA /boot/efi vfat umask=0077,shortname=winnt 0 2\n";
954-
tempdir.create_dir_all("etc")?;
955-
tempdir.atomic_write("etc/fstab", default)?;
956-
fixup_etc_fstab(&tempdir).unwrap();
957-
assert_eq!(tempdir.read_to_string("etc/fstab")?, default);
958-
Ok(())
959-
}
959+
tempdir.create_dir_all("etc")?;
960+
tempdir.atomic_write("etc/fstab", default)?;
961+
fixup_etc_fstab(&tempdir).unwrap();
962+
assert_eq!(tempdir.read_to_string("etc/fstab")?, default);
963+
Ok(())
964+
}
960965

961-
#[test]
962-
fn test_fixup_etc_fstab_ro() -> Result<()> {
963-
let tempdir = cap_std_ext::cap_tempfile::tempdir(cap_std::ambient_authority())?;
964-
let default = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n\
966+
#[test]
967+
fn test_fixup_etc_fstab_ro() -> Result<()> {
968+
let tempdir = cap_std_ext::cap_tempfile::tempdir(cap_std::ambient_authority())?;
969+
let default = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n\
965970
UUID=1eef9f42-40e3-4bd8-ae20-e9f2325f8b52 / xfs ro 0 0\n\
966971
UUID=6907-17CA /boot/efi vfat umask=0077,shortname=winnt 0 2\n";
967-
tempdir.create_dir_all("etc")?;
968-
tempdir.atomic_write("etc/fstab", default)?;
969-
fixup_etc_fstab(&tempdir).unwrap();
970-
assert_eq!(tempdir.read_to_string("etc/fstab")?, default);
971-
Ok(())
972-
}
972+
tempdir.create_dir_all("etc")?;
973+
tempdir.atomic_write("etc/fstab", default)?;
974+
fixup_etc_fstab(&tempdir).unwrap();
975+
assert_eq!(tempdir.read_to_string("etc/fstab")?, default);
976+
Ok(())
977+
}
973978

974-
#[test]
975-
fn test_fixup_etc_fstab_rw() -> Result<()> {
976-
let tempdir = cap_std_ext::cap_tempfile::tempdir(cap_std::ambient_authority())?;
977-
// This case uses `defaults`
978-
let default = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n\
979+
#[test]
980+
fn test_fixup_etc_fstab_rw() -> Result<()> {
981+
let tempdir = cap_std_ext::cap_tempfile::tempdir(cap_std::ambient_authority())?;
982+
// This case uses `defaults`
983+
let default = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n\
979984
UUID=1eef9f42-40e3-4bd8-ae20-e9f2325f8b52 / xfs defaults 0 0\n\
980985
UUID=6907-17CA /boot/efi vfat umask=0077,shortname=winnt 0 2\n";
981-
let modified = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n\
986+
let modified = "UUID=f7436547-20ac-43cb-aa2f-eac9632183f6 /boot auto ro 0 0\n\
982987
# Updated by bootc-fstab-edit.service\n\
983988
UUID=1eef9f42-40e3-4bd8-ae20-e9f2325f8b52 / xfs defaults,ro 0 0\n\
984989
UUID=6907-17CA /boot/efi vfat umask=0077,shortname=winnt 0 2\n";
985-
tempdir.create_dir_all("etc")?;
986-
tempdir.atomic_write("etc/fstab", default)?;
987-
fixup_etc_fstab(&tempdir).unwrap();
988-
assert_eq!(tempdir.read_to_string("etc/fstab")?, modified);
989-
Ok(())
990+
tempdir.create_dir_all("etc")?;
991+
tempdir.atomic_write("etc/fstab", default)?;
992+
fixup_etc_fstab(&tempdir).unwrap();
993+
assert_eq!(tempdir.read_to_string("etc/fstab")?, modified);
994+
Ok(())
995+
}
990996
}

lib/src/install.rs

Lines changed: 52 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1882,54 +1882,58 @@ pub(crate) async fn install_to_existing_root(opts: InstallToExistingRootOpts) ->
18821882

18831883
install_to_filesystem(opts, true).await
18841884
}
1885+
#[cfg(test)]
1886+
mod tests {
1887+
use super::*;
1888+
1889+
#[test]
1890+
fn install_opts_serializable() {
1891+
let c: InstallToDiskOpts = serde_json::from_value(serde_json::json!({
1892+
"device": "/dev/vda"
1893+
}))
1894+
.unwrap();
1895+
assert_eq!(c.block_opts.device, "/dev/vda");
1896+
}
18851897

1886-
#[test]
1887-
fn install_opts_serializable() {
1888-
let c: InstallToDiskOpts = serde_json::from_value(serde_json::json!({
1889-
"device": "/dev/vda"
1890-
}))
1891-
.unwrap();
1892-
assert_eq!(c.block_opts.device, "/dev/vda");
1893-
}
1894-
1895-
#[test]
1896-
fn test_mountspec() {
1897-
let mut ms = MountSpec::new("/dev/vda4", "/boot");
1898-
assert_eq!(ms.to_fstab(), "/dev/vda4 /boot auto defaults 0 0");
1899-
ms.push_option("ro");
1900-
assert_eq!(ms.to_fstab(), "/dev/vda4 /boot auto ro 0 0");
1901-
ms.push_option("relatime");
1902-
assert_eq!(ms.to_fstab(), "/dev/vda4 /boot auto ro,relatime 0 0");
1903-
}
1898+
#[test]
1899+
fn test_mountspec() {
1900+
let mut ms = MountSpec::new("/dev/vda4", "/boot");
1901+
assert_eq!(ms.to_fstab(), "/dev/vda4 /boot auto defaults 0 0");
1902+
ms.push_option("ro");
1903+
assert_eq!(ms.to_fstab(), "/dev/vda4 /boot auto ro 0 0");
1904+
ms.push_option("relatime");
1905+
assert_eq!(ms.to_fstab(), "/dev/vda4 /boot auto ro,relatime 0 0");
1906+
}
19041907

1905-
#[test]
1906-
fn test_gather_root_args() {
1907-
// A basic filesystem using a UUID
1908-
let inspect = Filesystem {
1909-
source: "/dev/vda4".into(),
1910-
target: "/".into(),
1911-
fstype: "xfs".into(),
1912-
maj_min: "252:4".into(),
1913-
options: "rw".into(),
1914-
uuid: Some("965eb3c7-5a3f-470d-aaa2-1bcf04334bc6".into()),
1915-
children: None,
1916-
};
1917-
let r = find_root_args_to_inherit(&[], &inspect).unwrap();
1918-
assert_eq!(r.mount_spec, "UUID=965eb3c7-5a3f-470d-aaa2-1bcf04334bc6");
1919-
1920-
// In this case we take the root= from the kernel cmdline
1921-
let r = find_root_args_to_inherit(
1922-
&[
1923-
"root=/dev/mapper/root",
1924-
"rw",
1925-
"someother=karg",
1926-
"rd.lvm.lv=root",
1927-
"systemd.debug=1",
1928-
],
1929-
&inspect,
1930-
)
1931-
.unwrap();
1932-
assert_eq!(r.mount_spec, "/dev/mapper/root");
1933-
assert_eq!(r.kargs.len(), 1);
1934-
assert_eq!(r.kargs[0], "rd.lvm.lv=root");
1908+
#[test]
1909+
fn test_gather_root_args() {
1910+
// A basic filesystem using a UUID
1911+
let inspect = Filesystem {
1912+
source: "/dev/vda4".into(),
1913+
target: "/".into(),
1914+
fstype: "xfs".into(),
1915+
maj_min: "252:4".into(),
1916+
options: "rw".into(),
1917+
uuid: Some("965eb3c7-5a3f-470d-aaa2-1bcf04334bc6".into()),
1918+
children: None,
1919+
};
1920+
let r = find_root_args_to_inherit(&[], &inspect).unwrap();
1921+
assert_eq!(r.mount_spec, "UUID=965eb3c7-5a3f-470d-aaa2-1bcf04334bc6");
1922+
1923+
// In this case we take the root= from the kernel cmdline
1924+
let r = find_root_args_to_inherit(
1925+
&[
1926+
"root=/dev/mapper/root",
1927+
"rw",
1928+
"someother=karg",
1929+
"rd.lvm.lv=root",
1930+
"systemd.debug=1",
1931+
],
1932+
&inspect,
1933+
)
1934+
.unwrap();
1935+
assert_eq!(r.mount_spec, "/dev/mapper/root");
1936+
assert_eq!(r.kargs.len(), 1);
1937+
assert_eq!(r.kargs[0], "rd.lvm.lv=root");
1938+
}
19351939
}

lib/src/install/osconfig.rs

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,37 +50,42 @@ pub(crate) fn inject_root_ssh_authorized_keys(
5050
Ok(())
5151
}
5252

53-
#[test]
54-
fn test_inject_root_ssh_symlinked() -> Result<()> {
55-
let root = &cap_std_ext::cap_tempfile::TempDir::new(cap_std::ambient_authority())?;
53+
#[cfg(test)]
54+
mod tests {
55+
use super::*;
5656

57-
// The code expects this to exist, reasonably so
58-
root.create_dir("etc")?;
59-
// Test with a symlink
60-
root.symlink("var/roothome", "root")?;
61-
inject_root_ssh_authorized_keys(root, None, "ssh-ed25519 ABCDE example@demo\n").unwrap();
57+
#[test]
58+
fn test_inject_root_ssh_symlinked() -> Result<()> {
59+
let root = &cap_std_ext::cap_tempfile::TempDir::new(cap_std::ambient_authority())?;
6260

63-
let content = root.read_to_string(format!("etc/tmpfiles.d/{ROOT_SSH_TMPFILE}"))?;
64-
assert_eq!(
61+
// The code expects this to exist, reasonably so
62+
root.create_dir("etc")?;
63+
// Test with a symlink
64+
root.symlink("var/roothome", "root")?;
65+
inject_root_ssh_authorized_keys(root, None, "ssh-ed25519 ABCDE example@demo\n").unwrap();
66+
67+
let content = root.read_to_string(format!("etc/tmpfiles.d/{ROOT_SSH_TMPFILE}"))?;
68+
assert_eq!(
6569
content,
6670
"f~ /var/roothome/.ssh/authorized_keys 600 root root - c3NoLWVkMjU1MTkgQUJDREUgZXhhbXBsZUBkZW1vCg==\n"
6771
);
6872

69-
Ok(())
70-
}
73+
Ok(())
74+
}
7175

72-
#[test]
73-
fn test_inject_root_ssh_dir() -> Result<()> {
74-
let root = &cap_std_ext::cap_tempfile::TempDir::new(cap_std::ambient_authority())?;
76+
#[test]
77+
fn test_inject_root_ssh_dir() -> Result<()> {
78+
let root = &cap_std_ext::cap_tempfile::TempDir::new(cap_std::ambient_authority())?;
7579

76-
root.create_dir("etc")?;
77-
root.create_dir("root")?;
78-
inject_root_ssh_authorized_keys(root, None, "ssh-ed25519 ABCDE example@demo\n").unwrap();
80+
root.create_dir("etc")?;
81+
root.create_dir("root")?;
82+
inject_root_ssh_authorized_keys(root, None, "ssh-ed25519 ABCDE example@demo\n").unwrap();
7983

80-
let content = root.read_to_string(format!("etc/tmpfiles.d/{ROOT_SSH_TMPFILE}"))?;
81-
assert_eq!(
84+
let content = root.read_to_string(format!("etc/tmpfiles.d/{ROOT_SSH_TMPFILE}"))?;
85+
assert_eq!(
8286
content,
8387
"f~ /root/.ssh/authorized_keys 600 root root - c3NoLWVkMjU1MTkgQUJDREUgZXhhbXBsZUBkZW1vCg==\n"
8488
);
85-
Ok(())
89+
Ok(())
90+
}
8691
}

ostree-ext/src/container/encapsulate.rs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -416,15 +416,20 @@ pub async fn encapsulate<S: AsRef<str>>(
416416
build_impl(repo, ostree_ref.as_ref(), config, opts, dest).await
417417
}
418418

419-
#[test]
420-
fn test_parse_ocipath() {
421-
let default = "/foo/bar";
422-
let untagged = "/foo/bar:baz";
423-
let tagged = "/foo/bar:baz:latest";
424-
assert_eq!(parse_oci_path_and_tag(default), ("/foo/bar", None));
425-
assert_eq!(
426-
parse_oci_path_and_tag(tagged),
427-
("/foo/bar", Some("baz:latest"))
428-
);
429-
assert_eq!(parse_oci_path_and_tag(untagged), ("/foo/bar", Some("baz")));
419+
#[cfg(test)]
420+
mod tests {
421+
use super::*;
422+
423+
#[test]
424+
fn test_parse_ocipath() {
425+
let default = "/foo/bar";
426+
let untagged = "/foo/bar:baz";
427+
let tagged = "/foo/bar:baz:latest";
428+
assert_eq!(parse_oci_path_and_tag(default), ("/foo/bar", None));
429+
assert_eq!(
430+
parse_oci_path_and_tag(tagged),
431+
("/foo/bar", Some("baz:latest"))
432+
);
433+
assert_eq!(parse_oci_path_and_tag(untagged), ("/foo/bar", Some("baz")));
434+
}
430435
}

0 commit comments

Comments
 (0)