/
githubmirror
/
deno
Обзор
Документация
Войти
/
githubmirror
/
deno
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
cli/tools/coverage/util.rs
103 строки
3 KB
Kenta Moriuchi
chore: Happy New Year 2026 (#31748)
08 янв 2026, 18:28
Не верифицирован
08 янв 2026, 18:28
8193cf9
Код
Авторство
О чём код?
// Copyright 2018-2026 the Deno authors. MIT license. use deno_core::url::Url; pub fn find_root(urls: Vec<&Url>) -> Option<Url> { if urls.is_empty() { return None; } // Gets the common first part of all the urls. let root = urls[0] .as_ref() .chars() .enumerate() .take_while(|(i, c)| { urls.iter().all(|u| u.as_ref().chars().nth(*i) == Some(*c)) }) .map(|(_, c)| c) .collect::<String>(); if let Some(index) = root.rfind('/') { // Removes the basename part if exists. Url::parse(&root[..index + 1]).ok() } else { Url::parse(&root).ok() } } pub fn percent_to_class(percent: f32) -> &'static str { match percent { x if x < 50.0 => "low", x if x < 80.0 => "medium", _ => "high", } } pub fn calc_coverage_display_info( hit: usize, miss: usize, ) -> (usize, f32, &'static str) { let total = hit + miss; let percent = if total == 0 { 100.0 } else { (hit as f32 / total as f32) * 100.0 }; let class = percent_to_class(percent); (total, percent, class) } #[cfg(test)] mod tests { use super::*; #[test] fn test_find_root() { let urls = [ Url::parse("file:///a/b/c/d/e.ts").unwrap(), Url::parse("file:///a/b/c/d/f.ts").unwrap(), Url::parse("file:///a/b/c/d/g.ts").unwrap(), ]; let urls = urls.iter().collect(); assert_eq!(find_root(urls), Url::parse("file:///a/b/c/d/").ok()); } #[test] fn test_find_root_empty() { let urls = vec![]; assert_eq!(find_root(urls), None); } #[test] fn test_find_root_with_similar_filenames() { let urls = [ Url::parse("file:///a/b/c/d/foo0.ts").unwrap(), Url::parse("file:///a/b/c/d/foo1.ts").unwrap(), Url::parse("file:///a/b/c/d/foo2.ts").unwrap(), ]; let urls = urls.iter().collect(); assert_eq!(find_root(urls), Url::parse("file:///a/b/c/d/").ok()); } #[test] fn test_find_root_with_similar_dirnames() { let urls = [ Url::parse("file:///a/b/c/foo0/mod.ts").unwrap(), Url::parse("file:///a/b/c/foo1/mod.ts").unwrap(), Url::parse("file:///a/b/c/foo2/mod.ts").unwrap(), ]; let urls = urls.iter().collect(); assert_eq!(find_root(urls), Url::parse("file:///a/b/c/").ok()); } #[test] fn test_percent_to_class() { assert_eq!(percent_to_class(0.0), "low"); assert_eq!(percent_to_class(49.9), "low"); assert_eq!(percent_to_class(50.0), "medium"); assert_eq!(percent_to_class(79.9), "medium"); assert_eq!(percent_to_class(80.0), "high"); assert_eq!(percent_to_class(100.0), "high"); } }