Phase 33 NORM canon test: enforce normalized dev route for P1/P2/JP mini

This commit is contained in:
nyash-codex
2025-12-11 20:54:33 +09:00
parent 59a985b7fa
commit af6f95cd4b
170 changed files with 4423 additions and 1897 deletions

View File

@ -7,7 +7,7 @@ mod std_impls;
mod traits;
pub use errors::{IoError, TimeError};
pub use std_impls::{NoopMem, NoFsApi, StdFs, StdIo, StdLog, StdMem, StdThread, StdTime};
pub use std_impls::{NoFsApi, NoopMem, StdFs, StdIo, StdLog, StdMem, StdThread, StdTime};
pub use traits::{
FsApi, FsMetadata, IoApi, LogApi, LogLevel, MemApi, MemStats, ThreadApi, TimeApi,
};
@ -23,7 +23,7 @@ pub struct Ring0Context {
pub io: Arc<dyn IoApi>,
pub time: Arc<dyn TimeApi>,
pub log: Arc<dyn LogApi>,
pub fs: Arc<dyn FsApi>, // Phase 90-A
pub fs: Arc<dyn FsApi>, // Phase 90-A
pub thread: Arc<dyn ThreadApi>, // Phase 90-D
}
@ -123,12 +123,7 @@ mod tests {
use super::*;
fn unsafe_dealloc(ptr: *mut u8, size: usize) {
unsafe {
std::alloc::dealloc(
ptr,
std::alloc::Layout::from_size_align_unchecked(size, 1),
)
}
unsafe { std::alloc::dealloc(ptr, std::alloc::Layout::from_size_align_unchecked(size, 1)) }
}
#[test]
@ -228,13 +223,17 @@ mod tests {
#[test]
fn test_nofs_api_write_all() {
let api = NoFsApi;
assert!(api.write_all(std::path::Path::new("/tmp/test.txt"), b"data").is_err());
assert!(api
.write_all(std::path::Path::new("/tmp/test.txt"), b"data")
.is_err());
}
#[test]
fn test_nofs_api_append_all() {
let api = NoFsApi;
assert!(api.append_all(std::path::Path::new("/tmp/test.txt"), b"data").is_err());
assert!(api
.append_all(std::path::Path::new("/tmp/test.txt"), b"data")
.is_err());
}
#[test]
@ -252,6 +251,8 @@ mod tests {
#[test]
fn test_nofs_api_canonicalize() {
let api = NoFsApi;
assert!(api.canonicalize(std::path::Path::new("/tmp/test.txt")).is_err());
assert!(api
.canonicalize(std::path::Path::new("/tmp/test.txt"))
.is_err());
}
}

View File

@ -125,8 +125,8 @@ pub struct StdLog;
impl StdLog {
fn should_log(&self, level: LogLevel) -> bool {
let min_level_str = std::env::var("NYASH_RING0_LOG_LEVEL")
.unwrap_or_else(|_| "INFO".to_string());
let min_level_str =
std::env::var("NYASH_RING0_LOG_LEVEL").unwrap_or_else(|_| "INFO".to_string());
let min_level = match min_level_str.to_uppercase().as_str() {
"DEBUG" => LogLevel::Debug,
@ -139,10 +139,13 @@ impl StdLog {
// level の優先度が min_level 以上なら true
matches!(
(level, min_level),
(LogLevel::Error, _) |
(LogLevel::Warn, LogLevel::Debug | LogLevel::Info | LogLevel::Warn) |
(LogLevel::Info, LogLevel::Debug | LogLevel::Info) |
(LogLevel::Debug, LogLevel::Debug)
(LogLevel::Error, _)
| (
LogLevel::Warn,
LogLevel::Debug | LogLevel::Info | LogLevel::Warn
)
| (LogLevel::Info, LogLevel::Debug | LogLevel::Info)
| (LogLevel::Debug, LogLevel::Debug)
)
}
}
@ -167,9 +170,8 @@ pub struct StdFs;
impl FsApi for StdFs {
fn read_to_string(&self, path: &Path) -> Result<String, IoError> {
std::fs::read_to_string(path).map_err(|e| {
IoError::ReadFailed(format!("read_to_string({}): {}", path.display(), e))
})
std::fs::read_to_string(path)
.map_err(|e| IoError::ReadFailed(format!("read_to_string({}): {}", path.display(), e)))
}
fn read(&self, path: &Path) -> Result<Vec<u8>, IoError> {
@ -187,8 +189,8 @@ impl FsApi for StdFs {
use std::io::Write;
let mut file = OpenOptions::new()
.create(true) // 存在しなければ作成
.append(true) // append モードで開く
.create(true) // 存在しなければ作成
.append(true) // append モードで開く
.open(path)
.map_err(|e| IoError::WriteFailed(format!("append_all({}): {}", path.display(), e)))?;
@ -201,9 +203,8 @@ impl FsApi for StdFs {
}
fn metadata(&self, path: &Path) -> Result<FsMetadata, IoError> {
let meta = std::fs::metadata(path).map_err(|e| {
IoError::MetadataFailed(format!("metadata({}): {}", path.display(), e))
})?;
let meta = std::fs::metadata(path)
.map_err(|e| IoError::MetadataFailed(format!("metadata({}): {}", path.display(), e)))?;
Ok(FsMetadata {
is_file: meta.is_file(),
is_dir: meta.is_dir(),
@ -273,12 +274,7 @@ mod stdmem_tests {
use super::*;
fn unsafe_dealloc(ptr: *mut u8, size: usize) {
unsafe {
std::alloc::dealloc(
ptr,
std::alloc::Layout::from_size_align_unchecked(size, 1),
)
}
unsafe { std::alloc::dealloc(ptr, std::alloc::Layout::from_size_align_unchecked(size, 1)) }
}
#[test]
@ -320,6 +316,9 @@ mod stdmem_tests {
fn test_noopmem_compatibility() {
let mem = NoopMem;
let ptr = mem.alloc(1024);
assert!(ptr.is_null(), "NoopMem should still return null for compatibility");
assert!(
ptr.is_null(),
"NoopMem should still return null for compatibility"
);
}
}