diff --git a/crates/core/src/platform/wallpaper/windows.rs b/crates/core/src/platform/wallpaper/windows.rs index f10ad58..041c01a 100644 --- a/crates/core/src/platform/wallpaper/windows.rs +++ b/crates/core/src/platform/wallpaper/windows.rs @@ -203,7 +203,11 @@ mod tests { use crate::platform::paths::{MapEnv, Platform}; const APP_DATA: &str = "C:/Users/u/AppData/Roaming"; - const LOCAL_APP_DATA: &str = "C:/Users/u/AppData/Local"; + // 反斜杠原样:本常量经 `%LOCALAPPDATA%` 展开后要与 `CUSTOM_THEME`(反斜杠原文)拼出**同一个 + // `PathBuf` 键**。写成 `C:/…` 会得到 `C:/Users/u/AppData/Local\Microsoft\…` 这种混合串—— + // Windows 的 `Path` 把 `/` 与 `\` 都当分隔符,Linux 只认 `/`,于是同一份夹具在 Linux 上永远 + // 查不到那个文件(M147 实测:CI 的 test(ubuntu) 就红在这条上)。 + const LOCAL_APP_DATA: &str = r"C:\Users\u\AppData\Local"; const DESKTOP_QUERY: &str = "reg.exe query HKCU\\Control Panel\\Desktop /v WallPaper"; const THEMES_QUERY: &str = "reg.exe query HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes /v CurrentTheme"; diff --git a/crates/design/src/color/palettes.rs b/crates/design/src/color/palettes.rs index e2a492e..e5b2d03 100644 --- a/crates/design/src/color/palettes.rs +++ b/crates/design/src/color/palettes.rs @@ -374,13 +374,12 @@ mod tests { #[test] fn accent_on_fixed_neutral_only_moves_the_neutral_hue() { let official = Palettes::official_baseline(); - // 中性色相 = 基线色相时,与官方的 from_seed 完全等价(不放宽算法)。 - let same = Palettes::accent_on_fixed_neutral(DEFAULT_SEED, NEUTRAL_HUE_DEG, 12.0); + // 中性色相取**种子色相的实测值**而不是 `NEUTRAL_HUE_DEG` 字面量:两者只差 `atan2()` 的末位 + // (见下一条测试),逐位比会在 glibc 与 UCRT 之间翻脸;取实测值两侧同源,断言仍是逐位相等。 let per_seed = Palettes::from_seed_with_neutral_chroma(DEFAULT_SEED, 12.0); - assert_eq!( - same, per_seed, - "中性色相取种子色相时必须与 TonalSpot 逐项相同" - ); + let seed_hue = per_seed.neutral.hue_deg(); + let same = Palettes::accent_on_fixed_neutral(DEFAULT_SEED, seed_hue, 12.0); + assert_eq!(same, per_seed, "中性色相取种子色相时须与 TonalSpot 相同"); // 换一个中性色相:只有中性两族的色相动,彩度与强调族一律不动。 let moved = Palettes::accent_on_fixed_neutral(DEFAULT_SEED, 120.0, 12.0);