asterinas/osdk/tests/examples_in_book/test_and_run_projects.rs
2024-04-25 09:44:46 +08:00

57 lines
1.4 KiB
Rust

// SPDX-License-Identifier: MPL-2.0
use std::{fs, path::PathBuf};
use crate::util::cargo_osdk;
#[test]
fn create_and_run_kernel() {
let work_dir = "/tmp";
let os_name = "myos";
let os_dir = PathBuf::from(work_dir).join(os_name);
if os_dir.exists() {
fs::remove_dir_all(&os_dir).unwrap();
}
let mut command = cargo_osdk(&["new", "--type", "kernel", os_name]);
command.current_dir(work_dir);
command.ok().unwrap();
let mut command = cargo_osdk(&["build"]);
command.current_dir(&os_dir);
command.ok().unwrap();
let mut command = cargo_osdk(&["run"]);
command.current_dir(&os_dir);
let output = command.output().unwrap();
let stdout = String::from_utf8_lossy(&output.stdout).to_string();
assert!(stdout.contains("Hello world from guest kernel!"));
fs::remove_dir_all(&os_dir).unwrap();
}
#[test]
fn create_and_test_library() {
let work_dir = "/tmp";
let module_name = "mymodule";
let module_dir = PathBuf::from(work_dir).join(module_name);
if module_dir.exists() {
fs::remove_dir_all(&module_dir).unwrap();
}
let mut command = cargo_osdk(&["new", module_name]);
command.current_dir(work_dir);
command.ok().unwrap();
let mut command = cargo_osdk(&["test"]);
command.current_dir(&module_dir);
command.output().unwrap();
fs::remove_dir_all(&module_dir).unwrap();
}