diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2022-07-11 19:02:11 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-11 19:02:11 -0400 |
commit | 82431062fa6dd82679e1903dda4e33103a0299da (patch) | |
tree | 1b0c0784bba6d7e767110b352a6616020f962d58 /cli/tools/coverage/merge.rs | |
parent | b68115db3a7c87518c59e6db7fa0ca2f1e3b4ca7 (diff) |
fix(coverage): better handling of multi-byte characters (#15159)
Diffstat (limited to 'cli/tools/coverage/merge.rs')
-rw-r--r-- | cli/tools/coverage/merge.rs | 162 |
1 files changed, 81 insertions, 81 deletions
diff --git a/cli/tools/coverage/merge.rs b/cli/tools/coverage/merge.rs index b0606e215..08a695e1d 100644 --- a/cli/tools/coverage/merge.rs +++ b/cli/tools/coverage/merge.rs @@ -54,15 +54,15 @@ pub fn merge_scripts( let first: &ScriptCoverage = &scripts[0]; (first.script_id.clone(), first.url.clone()) }; - let mut range_to_funcs: BTreeMap<Range, Vec<FunctionCoverage>> = + let mut range_to_funcs: BTreeMap<CharRange, Vec<FunctionCoverage>> = BTreeMap::new(); for script_cov in scripts { for func_cov in script_cov.functions { let root_range = { let root_range_cov: &CoverageRange = &func_cov.ranges[0]; - Range { - start: root_range_cov.start_offset, - end: root_range_cov.end_offset, + CharRange { + start: root_range_cov.start_char_offset, + end: root_range_cov.end_char_offset, } }; range_to_funcs @@ -85,12 +85,12 @@ pub fn merge_scripts( } #[derive(Eq, PartialEq, Hash, Copy, Clone, Debug)] -struct Range { +struct CharRange { start: usize, end: usize, } -impl Ord for Range { +impl Ord for CharRange { fn cmp(&self, other: &Self) -> ::std::cmp::Ordering { if self.start != other.start { self.start.cmp(&other.start) @@ -100,7 +100,7 @@ impl Ord for Range { } } -impl PartialOrd for Range { +impl PartialOrd for CharRange { fn partial_cmp(&self, other: &Self) -> Option<::std::cmp::Ordering> { if self.start != other.start { self.start.partial_cmp(&other.start) @@ -249,7 +249,7 @@ fn merge_range_tree_children<'a>( Vec::with_capacity(parent_trees.len()); let mut wrapped_children: Vec<Vec<&'a mut RangeTree<'a>>> = Vec::with_capacity(parent_trees.len()); - let mut open_range: Option<Range> = None; + let mut open_range: Option<CharRange> = None; for _parent_tree in parent_trees.iter() { flat_children.push(Vec::new()); @@ -318,7 +318,7 @@ fn merge_range_tree_children<'a>( .push(tree); } start_event_queue.set_pending_offset(open_range_end); - open_range = Some(Range { + open_range = Some(CharRange { start: event.offset, end: open_range_end, }); @@ -452,8 +452,8 @@ mod tests { function_name: String::from("lib"), is_block_coverage: true, ranges: vec![CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 1, }], }], @@ -467,8 +467,8 @@ mod tests { function_name: String::from("lib"), is_block_coverage: true, ranges: vec![CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 2, }], }], @@ -483,8 +483,8 @@ mod tests { function_name: String::from("lib"), is_block_coverage: true, ranges: vec![CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 3, }], }], @@ -506,13 +506,13 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 10, }, CoverageRange { - start_offset: 3, - end_offset: 6, + start_char_offset: 3, + end_char_offset: 6, count: 1, }, ], @@ -528,13 +528,13 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 20, }, CoverageRange { - start_offset: 3, - end_offset: 6, + start_char_offset: 3, + end_char_offset: 6, count: 2, }, ], @@ -551,13 +551,13 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 30, }, CoverageRange { - start_offset: 3, - end_offset: 6, + start_char_offset: 3, + end_char_offset: 6, count: 3, }, ], @@ -580,13 +580,13 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 10, }, CoverageRange { - start_offset: 2, - end_offset: 5, + start_char_offset: 2, + end_char_offset: 5, count: 1, }, ], @@ -602,13 +602,13 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 20, }, CoverageRange { - start_offset: 4, - end_offset: 7, + start_char_offset: 4, + end_char_offset: 7, count: 2, }, ], @@ -625,23 +625,23 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 30, }, CoverageRange { - start_offset: 2, - end_offset: 5, + start_char_offset: 2, + end_char_offset: 5, count: 21, }, CoverageRange { - start_offset: 4, - end_offset: 5, + start_char_offset: 4, + end_char_offset: 5, count: 3, }, CoverageRange { - start_offset: 5, - end_offset: 7, + start_char_offset: 5, + end_char_offset: 7, count: 12, }, ], @@ -664,23 +664,23 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 1, }, CoverageRange { - start_offset: 1, - end_offset: 8, + start_char_offset: 1, + end_char_offset: 8, count: 6, }, CoverageRange { - start_offset: 1, - end_offset: 5, + start_char_offset: 1, + end_char_offset: 5, count: 5, }, CoverageRange { - start_offset: 5, - end_offset: 8, + start_char_offset: 5, + end_char_offset: 8, count: 7, }, ], @@ -696,23 +696,23 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 4, }, CoverageRange { - start_offset: 1, - end_offset: 8, + start_char_offset: 1, + end_char_offset: 8, count: 8, }, CoverageRange { - start_offset: 1, - end_offset: 5, + start_char_offset: 1, + end_char_offset: 5, count: 9, }, CoverageRange { - start_offset: 5, - end_offset: 8, + start_char_offset: 5, + end_char_offset: 8, count: 7, }, ], @@ -729,13 +729,13 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 9, + start_char_offset: 0, + end_char_offset: 9, count: 5, }, CoverageRange { - start_offset: 1, - end_offset: 8, + start_char_offset: 1, + end_char_offset: 8, count: 14, }, ], @@ -758,13 +758,13 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 7, + start_char_offset: 0, + end_char_offset: 7, count: 10, }, CoverageRange { - start_offset: 0, - end_offset: 4, + start_char_offset: 0, + end_char_offset: 4, count: 1, }, ], @@ -780,18 +780,18 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 7, + start_char_offset: 0, + end_char_offset: 7, count: 20, }, CoverageRange { - start_offset: 1, - end_offset: 6, + start_char_offset: 1, + end_char_offset: 6, count: 11, }, CoverageRange { - start_offset: 2, - end_offset: 5, + start_char_offset: 2, + end_char_offset: 5, count: 2, }, ], @@ -808,23 +808,23 @@ mod tests { is_block_coverage: true, ranges: vec![ CoverageRange { - start_offset: 0, - end_offset: 7, + start_char_offset: 0, + end_char_offset: 7, count: 30, }, CoverageRange { - start_offset: 0, - end_offset: 6, + start_char_offset: 0, + end_char_offset: 6, count: 21, }, CoverageRange { - start_offset: 1, - end_offset: 5, + start_char_offset: 1, + end_char_offset: 5, count: 12, }, CoverageRange { - start_offset: 2, - end_offset: 4, + start_char_offset: 2, + end_char_offset: 4, count: 3, }, ], |