style: clear clippy warnings from the stealth/adaptive work

- snapshot: make collect_fingerprints private (TreeNode is private, so a
  pub(super) fn leaked a more-private type)
- adaptive: if-let instead of single-arm match in attr_score
- stealth: move timezone test module to end of file (items-after-test-module)

No behavior change. Pre-release cleanup.
This commit is contained in:
leeguooooo
2026-06-04 14:26:08 +09:00
parent 8b55c553e6
commit fc2621559b
3 changed files with 47 additions and 49 deletions
+6 -8
View File
@@ -152,15 +152,13 @@ fn attr_score(base: &BTreeMap<String, String>, cand: &BTreeMap<String, String>)
for name in names {
let w = attr_weight(name);
total += w;
match (base.get(name), cand.get(name)) {
(Some(a), Some(b)) => {
if name == "class" {
got += w * token_jaccard(a, b);
} else if a == b {
got += w;
}
// present on only one side → no credit
if let (Some(a), Some(b)) = (base.get(name), cand.get(name)) {
if name == "class" {
got += w * token_jaccard(a, b);
} else if a == b {
got += w;
}
_ => {} // present on only one side → no credit
}
}
if total == 0.0 {
+1 -1
View File
@@ -226,7 +226,7 @@ fn build_ax_fingerprint(tree_nodes: &[TreeNode], idx: usize) -> ElementFingerpri
/// Collect AX fingerprints for every node that has a backend node id, used as the
/// candidate set when relocating a stale @ref. Reuses the same extraction as the
/// baseline so the two are scored in the same space.
pub(super) fn collect_fingerprints(tree_nodes: &[TreeNode]) -> Vec<(i64, ElementFingerprint)> {
fn collect_fingerprints(tree_nodes: &[TreeNode]) -> Vec<(i64, ElementFingerprint)> {
tree_nodes
.iter()
.enumerate()
+40 -40
View File
@@ -196,46 +196,6 @@ fn resolve_timezone(locale: Option<&str>) -> Option<String> {
/// Best-effort IANA timezone for a locale. Used only for
/// `AGENT_BROWSER_TIMEZONE=auto`; unknown locales return `None` so the real
/// timezone is left untouched rather than guessing a wrong one.
#[cfg(test)]
mod timezone_tests {
use super::{locale_default_timezone, resolve_timezone};
#[test]
fn maps_common_locales_case_insensitively() {
assert_eq!(locale_default_timezone("en-US"), Some("America/New_York"));
assert_eq!(locale_default_timezone("ja-JP"), Some("Asia/Tokyo"));
assert_eq!(locale_default_timezone("zh-CN"), Some("Asia/Shanghai"));
assert_eq!(locale_default_timezone("ZH-TW"), Some("Asia/Taipei"));
assert_eq!(locale_default_timezone("ja"), Some("Asia/Tokyo"));
}
#[test]
fn unknown_locale_returns_none() {
assert_eq!(locale_default_timezone("xx-YY"), None);
assert_eq!(locale_default_timezone(""), None);
}
#[test]
fn resolve_timezone_honors_env() {
// Serialized via a single test to avoid cross-test env races on this key.
std::env::remove_var("AGENT_BROWSER_TIMEZONE");
assert_eq!(resolve_timezone(Some("en-US")), None);
std::env::set_var("AGENT_BROWSER_TIMEZONE", "Europe/Berlin");
assert_eq!(resolve_timezone(None), Some("Europe/Berlin".to_string()));
std::env::set_var("AGENT_BROWSER_TIMEZONE", " ");
assert_eq!(resolve_timezone(Some("en-US")), None);
std::env::set_var("AGENT_BROWSER_TIMEZONE", "auto");
assert_eq!(resolve_timezone(Some("ja-JP")), Some("Asia/Tokyo".to_string()));
assert_eq!(resolve_timezone(Some("xx-YY")), None);
assert_eq!(resolve_timezone(None), None);
std::env::remove_var("AGENT_BROWSER_TIMEZONE");
}
}
fn locale_default_timezone(locale: &str) -> Option<&'static str> {
let tz = match locale.to_ascii_lowercase().as_str() {
"en-us" => "America/New_York",
@@ -372,3 +332,43 @@ fn build_ua_metadata(ua: &str, locale: Option<&str>) -> serde_json::Value {
"wow64": false,
})
}
#[cfg(test)]
mod timezone_tests {
use super::{locale_default_timezone, resolve_timezone};
#[test]
fn maps_common_locales_case_insensitively() {
assert_eq!(locale_default_timezone("en-US"), Some("America/New_York"));
assert_eq!(locale_default_timezone("ja-JP"), Some("Asia/Tokyo"));
assert_eq!(locale_default_timezone("zh-CN"), Some("Asia/Shanghai"));
assert_eq!(locale_default_timezone("ZH-TW"), Some("Asia/Taipei"));
assert_eq!(locale_default_timezone("ja"), Some("Asia/Tokyo"));
}
#[test]
fn unknown_locale_returns_none() {
assert_eq!(locale_default_timezone("xx-YY"), None);
assert_eq!(locale_default_timezone(""), None);
}
#[test]
fn resolve_timezone_honors_env() {
// Serialized via a single test to avoid cross-test env races on this key.
std::env::remove_var("AGENT_BROWSER_TIMEZONE");
assert_eq!(resolve_timezone(Some("en-US")), None);
std::env::set_var("AGENT_BROWSER_TIMEZONE", "Europe/Berlin");
assert_eq!(resolve_timezone(None), Some("Europe/Berlin".to_string()));
std::env::set_var("AGENT_BROWSER_TIMEZONE", " ");
assert_eq!(resolve_timezone(Some("en-US")), None);
std::env::set_var("AGENT_BROWSER_TIMEZONE", "auto");
assert_eq!(resolve_timezone(Some("ja-JP")), Some("Asia/Tokyo".to_string()));
assert_eq!(resolve_timezone(Some("xx-YY")), None);
assert_eq!(resolve_timezone(None), None);
std::env::remove_var("AGENT_BROWSER_TIMEZONE");
}
}