40 lines
1.2 KiB
Rust
40 lines
1.2 KiB
Rust
|
|
//! Common test helpers for FileBox/FileHandleBox tests
|
||
|
|
|
||
|
|
use std::fs;
|
||
|
|
use std::path::Path;
|
||
|
|
|
||
|
|
/// Setup a test file with content
|
||
|
|
pub fn setup_test_file(path: &str, content: &str) {
|
||
|
|
if let Some(parent) = Path::new(path).parent() {
|
||
|
|
if !parent.as_os_str().is_empty() {
|
||
|
|
let _ = fs::create_dir_all(parent);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
let _ = fs::write(path, content);
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Cleanup a test file
|
||
|
|
pub fn cleanup_test_file(path: &str) {
|
||
|
|
let _ = fs::remove_file(path);
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Initialize test provider (Ring0 context)
|
||
|
|
pub fn init_test_provider() {
|
||
|
|
use nyash_kernel::runtime::ring0::{default_ring0, init_global_ring0};
|
||
|
|
use nyash_kernel::providers::ring1::file::ring0_fs_fileio::Ring0FsFileIo;
|
||
|
|
use nyash_kernel::runtime::provider_lock;
|
||
|
|
use std::panic;
|
||
|
|
use std::sync::Arc;
|
||
|
|
|
||
|
|
// Try to initialize Ring0 (ignore if already initialized)
|
||
|
|
let _ = panic::catch_unwind(|| {
|
||
|
|
let ring0 = default_ring0();
|
||
|
|
init_global_ring0(ring0);
|
||
|
|
});
|
||
|
|
|
||
|
|
// Set provider if not already set (ignore errors from re-initialization)
|
||
|
|
let ring0_arc = Arc::new(default_ring0());
|
||
|
|
let provider = Arc::new(Ring0FsFileIo::new(ring0_arc));
|
||
|
|
let _ = provider_lock::set_filebox_provider(provider);
|
||
|
|
}
|