Skip to content

Commit 4008438

Browse files
committed
Add support for ramdisks in kernel tests
1 parent 7467080 commit 4008438

File tree

7 files changed

+54
-34
lines changed

7 files changed

+54
-34
lines changed

src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ impl UefiBoot {
103103
}
104104

105105
/// Add a ramdisk file to the disk image
106-
pub fn with_ramdisk(&mut self, ramdisk_path: &Path) -> &mut Self {
106+
pub fn set_ramdisk(&mut self, ramdisk_path: &Path) -> &mut Self {
107107
self.ramdisk = Some(ramdisk_path.to_owned());
108108
self
109109
}

tests/default_settings.rs

+12-9
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,24 @@ use bootloader_test_runner::run_test_kernel;
22

33
#[test]
44
fn basic_boot() {
5-
run_test_kernel(env!(
6-
"CARGO_BIN_FILE_TEST_KERNEL_DEFAULT_SETTINGS_basic_boot"
7-
));
5+
run_test_kernel(
6+
env!("CARGO_BIN_FILE_TEST_KERNEL_DEFAULT_SETTINGS_basic_boot"),
7+
None,
8+
);
89
}
910

1011
#[test]
1112
fn should_panic() {
12-
run_test_kernel(env!(
13-
"CARGO_BIN_FILE_TEST_KERNEL_DEFAULT_SETTINGS_should_panic"
14-
));
13+
run_test_kernel(
14+
env!("CARGO_BIN_FILE_TEST_KERNEL_DEFAULT_SETTINGS_should_panic"),
15+
None,
16+
);
1517
}
1618

1719
#[test]
1820
fn check_boot_info() {
19-
run_test_kernel(env!(
20-
"CARGO_BIN_FILE_TEST_KERNEL_DEFAULT_SETTINGS_check_boot_info"
21-
));
21+
run_test_kernel(
22+
env!("CARGO_BIN_FILE_TEST_KERNEL_DEFAULT_SETTINGS_check_boot_info"),
23+
None,
24+
);
2225
}

tests/higher_half.rs

+16-8
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,32 @@ use bootloader_test_runner::run_test_kernel;
22

33
#[test]
44
fn basic_boot() {
5-
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_HIGHER_HALF_basic_boot"));
5+
run_test_kernel(
6+
env!("CARGO_BIN_FILE_TEST_KERNEL_HIGHER_HALF_basic_boot"),
7+
None,
8+
);
69
}
710

811
#[test]
912
fn should_panic() {
10-
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_HIGHER_HALF_should_panic"));
13+
run_test_kernel(
14+
env!("CARGO_BIN_FILE_TEST_KERNEL_HIGHER_HALF_should_panic"),
15+
None,
16+
);
1117
}
1218

1319
#[test]
1420
fn check_boot_info() {
15-
run_test_kernel(env!(
16-
"CARGO_BIN_FILE_TEST_KERNEL_HIGHER_HALF_check_boot_info"
17-
));
21+
run_test_kernel(
22+
env!("CARGO_BIN_FILE_TEST_KERNEL_HIGHER_HALF_check_boot_info"),
23+
None,
24+
);
1825
}
1926

2027
#[test]
2128
fn verify_higher_half() {
22-
run_test_kernel(env!(
23-
"CARGO_BIN_FILE_TEST_KERNEL_HIGHER_HALF_verify_higher_half"
24-
));
29+
run_test_kernel(
30+
env!("CARGO_BIN_FILE_TEST_KERNEL_HIGHER_HALF_verify_higher_half"),
31+
None,
32+
);
2533
}

tests/lto.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ fn basic_boot() {
2121
.join("basic_boot");
2222
assert!(kernel_path.exists());
2323

24-
run_test_kernel(kernel_path.as_path().to_str().unwrap());
24+
run_test_kernel(kernel_path.as_path().to_str().unwrap(), None);
2525
}

tests/map_phys_mem.rs

+8-6
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@ use bootloader_test_runner::run_test_kernel;
22

33
#[test]
44
fn check_boot_info() {
5-
run_test_kernel(env!(
6-
"CARGO_BIN_FILE_TEST_KERNEL_MAP_PHYS_MEM_check_boot_info"
7-
));
5+
run_test_kernel(
6+
env!("CARGO_BIN_FILE_TEST_KERNEL_MAP_PHYS_MEM_check_boot_info"),
7+
None,
8+
);
89
}
910

1011
#[test]
1112
fn access_phys_mem() {
12-
run_test_kernel(env!(
13-
"CARGO_BIN_FILE_TEST_KERNEL_MAP_PHYS_MEM_access_phys_mem"
14-
));
13+
run_test_kernel(
14+
env!("CARGO_BIN_FILE_TEST_KERNEL_MAP_PHYS_MEM_access_phys_mem"),
15+
None,
16+
);
1517
}

tests/pie.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@ use bootloader_test_runner::run_test_kernel;
22

33
#[test]
44
fn basic_boot() {
5-
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_PIE_basic_boot"));
5+
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_PIE_basic_boot"), None);
66
}
77

88
#[test]
99
fn should_panic() {
10-
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_PIE_should_panic"));
10+
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_PIE_should_panic"), None);
1111
}
1212

1313
#[test]
1414
fn check_boot_info() {
15-
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_PIE_check_boot_info"));
15+
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_PIE_check_boot_info"), None);
1616
}
1717

1818
#[test]
1919
fn global_variable() {
20-
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_PIE_global_variable"));
20+
run_test_kernel(env!("CARGO_BIN_FILE_TEST_KERNEL_PIE_global_variable"), None);
2121
}

tests/runner/src/lib.rs

+12-5
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,25 @@ const QEMU_ARGS: &[&str] = &[
1010
"--no-reboot",
1111
];
1212

13-
pub fn run_test_kernel(kernel_binary_path: &str) {
13+
pub fn run_test_kernel(kernel_binary_path: &str, ramdisk_path: Option<&Path>) {
1414
let kernel_path = Path::new(kernel_binary_path);
1515

1616
// create an MBR disk image for legacy BIOS booting
1717
let mbr_path = kernel_path.with_extension("mbr");
18-
bootloader::BiosBoot::new(kernel_path)
19-
.create_disk_image(&mbr_path)
20-
.unwrap();
18+
let mut bios_builder = bootloader::BiosBoot::new(kernel_path);
19+
2120

2221
// create a GPT disk image for UEFI booting
2322
let gpt_path = kernel_path.with_extension("gpt");
24-
let uefi_builder = bootloader::UefiBoot::new(kernel_path);
23+
let mut uefi_builder = bootloader::UefiBoot::new(kernel_path);
24+
25+
// Set ramdisk for test, if supplied.
26+
if let Some(rdp) = ramdisk_path {
27+
bios_builder.set_ramdisk(rdp);
28+
uefi_builder.set_ramdisk(rdp);
29+
}
30+
31+
bios_builder.create_disk_image(&mbr_path).unwrap();
2532
uefi_builder.create_disk_image(&gpt_path).unwrap();
2633

2734
// create a TFTP folder with the kernel executable and UEFI bootloader for

0 commit comments

Comments
 (0)