code complexity & repetition analysis tool
at main 60 lines 1.5 kB view raw
1pub mod lcov; 2pub mod misses; 3pub mod model; 4pub mod paths; 5 6pub use lcov::parse_lcov_content; 7pub use lcov::parse_lcov_file; 8pub use model::{CoverageReport, CoverageSummary, FileCoverage}; 9 10use crate::Result; 11 12pub fn parse_coverage_from_file(path: &std::path::Path, repo_root: Option<&std::path::Path>) -> Result<CoverageReport> { 13 let files = lcov::parse_lcov_file(path, repo_root)?; 14 Ok(CoverageReport::new(files)) 15} 16 17pub fn parse_coverage_from_content(content: &str, repo_root: Option<&std::path::Path>) -> Result<CoverageReport> { 18 let files = lcov::parse_lcov_content(content, repo_root)?; 19 Ok(CoverageReport::new(files)) 20} 21 22#[cfg(test)] 23mod tests { 24 use super::*; 25 26 #[test] 27 fn test_parse_coverage_from_content() { 28 let lcov = r#"SF:test.rs 29DA:1,10 30DA:2,0 31DA:3,5 32end_of_record 33"#; 34 35 let report = parse_coverage_from_content(lcov, None).unwrap(); 36 assert_eq!(report.files.len(), 1); 37 assert_eq!(report.totals.total, 3); 38 assert_eq!(report.totals.hit, 2); 39 assert_eq!(report.totals.miss, 1); 40 } 41 42 #[test] 43 fn test_parse_coverage_multiple_files() { 44 let lcov = r#"SF:test1.rs 45DA:1,10 46DA:2,0 47end_of_record 48SF:test2.rs 49DA:1,5 50DA:2,5 51end_of_record 52"#; 53 54 let report = parse_coverage_from_content(lcov, None).unwrap(); 55 assert_eq!(report.files.len(), 2); 56 assert_eq!(report.totals.total, 4); 57 assert_eq!(report.totals.hit, 3); 58 assert_eq!(report.totals.miss, 1); 59 } 60}