Skip to content

Commit e95db5f

Browse files
update quick-xml to 0.25 (#880)
1 parent 87f9e9f commit e95db5f

File tree

4 files changed

+66
-65
lines changed

4 files changed

+66
-65
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ lazy_static = "1.4"
4949
log = "0.4"
5050
md-5 = "0.10"
5151
num_cpus = "1.13"
52-
quick-xml = "0.23"
52+
quick-xml = "0.25"
5353
rayon = "1.5"
5454
regex = "1.5"
5555
rustc-hash = "1.1"

src/cobertura.rs

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -342,16 +342,16 @@ pub fn output_cobertura(
342342

343343
let mut writer = Writer::new_with_indent(Cursor::new(vec![]), b' ', 4);
344344
writer
345-
.write_event(Event::Decl(BytesDecl::new(b"1.0", None, None)))
345+
.write_event(Event::Decl(BytesDecl::new("1.0", None, None)))
346346
.unwrap();
347347
writer
348-
.write_event(Event::DocType(BytesText::from_escaped_str(
348+
.write_event(Event::DocType(BytesText::from_escaped(
349349
" coverage SYSTEM 'http://cobertura.sourceforge.net/xml/coverage-04.dtd'",
350350
)))
351351
.unwrap();
352352

353-
let cov_tag = b"coverage";
354-
let mut cov = BytesStart::borrowed(cov_tag, cov_tag.len());
353+
let cov_tag = "coverage";
354+
let mut cov = BytesStart::from_content(cov_tag, cov_tag.len());
355355
let stats = coverage.get_stats();
356356
cov.push_attribute(("lines-covered", stats.lines_covered.to_string().as_ref()));
357357
cov.push_attribute(("lines-valid", stats.lines_valid.to_string().as_ref()));
@@ -374,45 +374,45 @@ pub fn output_cobertura(
374374
writer.write_event(Event::Start(cov)).unwrap();
375375

376376
// export header
377-
let sources_tag = b"sources";
378-
let source_tag = b"source";
377+
let sources_tag = "sources";
378+
let source_tag = "source";
379379
writer
380-
.write_event(Event::Start(BytesStart::borrowed(
380+
.write_event(Event::Start(BytesStart::from_content(
381381
sources_tag,
382382
sources_tag.len(),
383383
)))
384384
.unwrap();
385385
for path in &coverage.sources {
386386
writer
387-
.write_event(Event::Start(BytesStart::borrowed(
387+
.write_event(Event::Start(BytesStart::from_content(
388388
source_tag,
389389
source_tag.len(),
390390
)))
391391
.unwrap();
392392
writer
393-
.write_event(Event::Text(BytesText::from_plain_str(path)))
393+
.write_event(Event::Text(BytesText::new(path)))
394394
.unwrap();
395395
writer
396-
.write_event(Event::End(BytesEnd::borrowed(source_tag)))
396+
.write_event(Event::End(BytesEnd::new(source_tag)))
397397
.unwrap();
398398
}
399399
writer
400-
.write_event(Event::End(BytesEnd::borrowed(sources_tag)))
400+
.write_event(Event::End(BytesEnd::new(sources_tag)))
401401
.unwrap();
402402

403403
// export packages
404-
let packages_tag = b"packages";
405-
let pack_tag = b"package";
404+
let packages_tag = "packages";
405+
let pack_tag = "package";
406406

407407
writer
408-
.write_event(Event::Start(BytesStart::borrowed(
408+
.write_event(Event::Start(BytesStart::from_content(
409409
packages_tag,
410410
packages_tag.len(),
411411
)))
412412
.unwrap();
413413
// Export the package
414414
for package in &coverage.packages {
415-
let mut pack = BytesStart::borrowed(pack_tag, pack_tag.len());
415+
let mut pack = BytesStart::from_content(pack_tag, pack_tag.len());
416416
pack.push_attribute(("name", package.name.as_ref()));
417417
let stats = package.get_stats();
418418
pack.push_attribute(("line-rate", stats.line_rate().to_string().as_ref()));
@@ -422,20 +422,20 @@ pub fn output_cobertura(
422422
writer.write_event(Event::Start(pack)).unwrap();
423423

424424
// export_classes
425-
let classes_tag = b"classes";
426-
let class_tag = b"class";
427-
let methods_tag = b"methods";
428-
let method_tag = b"method";
425+
let classes_tag = "classes";
426+
let class_tag = "class";
427+
let methods_tag = "methods";
428+
let method_tag = "method";
429429

430430
writer
431-
.write_event(Event::Start(BytesStart::borrowed(
431+
.write_event(Event::Start(BytesStart::from_content(
432432
classes_tag,
433433
classes_tag.len(),
434434
)))
435435
.unwrap();
436436

437437
for class in &package.classes {
438-
let mut c = BytesStart::borrowed(class_tag, class_tag.len());
438+
let mut c = BytesStart::from_content(class_tag, class_tag.len());
439439
c.push_attribute(("name", class.name.as_ref()));
440440
c.push_attribute(("filename", class.file_name.as_ref()));
441441
let stats = class.get_stats();
@@ -445,14 +445,14 @@ pub fn output_cobertura(
445445

446446
writer.write_event(Event::Start(c)).unwrap();
447447
writer
448-
.write_event(Event::Start(BytesStart::borrowed(
448+
.write_event(Event::Start(BytesStart::from_content(
449449
methods_tag,
450450
methods_tag.len(),
451451
)))
452452
.unwrap();
453453

454454
for method in &class.methods {
455-
let mut m = BytesStart::borrowed(method_tag, method_tag.len());
455+
let mut m = BytesStart::from_content(method_tag, method_tag.len());
456456
m.push_attribute(("name", method.name.as_ref()));
457457
m.push_attribute(("signature", method.signature.as_ref()));
458458
let stats = method.get_stats();
@@ -463,31 +463,31 @@ pub fn output_cobertura(
463463

464464
write_lines(&mut writer, &method.lines);
465465
writer
466-
.write_event(Event::End(BytesEnd::borrowed(method_tag)))
466+
.write_event(Event::End(BytesEnd::new(method_tag)))
467467
.unwrap();
468468
}
469469
writer
470-
.write_event(Event::End(BytesEnd::borrowed(methods_tag)))
470+
.write_event(Event::End(BytesEnd::new(methods_tag)))
471471
.unwrap();
472472
write_lines(&mut writer, &class.lines);
473473
}
474474
writer
475-
.write_event(Event::End(BytesEnd::borrowed(class_tag)))
475+
.write_event(Event::End(BytesEnd::new(class_tag)))
476476
.unwrap();
477477
writer
478-
.write_event(Event::End(BytesEnd::borrowed(classes_tag)))
478+
.write_event(Event::End(BytesEnd::new(classes_tag)))
479479
.unwrap();
480480
writer
481-
.write_event(Event::End(BytesEnd::borrowed(pack_tag)))
481+
.write_event(Event::End(BytesEnd::new(pack_tag)))
482482
.unwrap();
483483
}
484484

485485
writer
486-
.write_event(Event::End(BytesEnd::borrowed(packages_tag)))
486+
.write_event(Event::End(BytesEnd::new(packages_tag)))
487487
.unwrap();
488488

489489
writer
490-
.write_event(Event::End(BytesEnd::borrowed(cov_tag)))
490+
.write_event(Event::End(BytesEnd::new(cov_tag)))
491491
.unwrap();
492492

493493
let result = writer.into_inner().into_inner();
@@ -496,17 +496,17 @@ pub fn output_cobertura(
496496
}
497497

498498
fn write_lines(writer: &mut Writer<Cursor<Vec<u8>>>, lines: &[Line]) {
499-
let lines_tag = b"lines";
500-
let line_tag = b"line";
499+
let lines_tag = "lines";
500+
let line_tag = "line";
501501

502502
writer
503-
.write_event(Event::Start(BytesStart::borrowed(
503+
.write_event(Event::Start(BytesStart::from_content(
504504
lines_tag,
505505
lines_tag.len(),
506506
)))
507507
.unwrap();
508508
for line in lines {
509-
let mut l = BytesStart::borrowed(line_tag, line_tag.len());
509+
let mut l = BytesStart::from_content(line_tag, line_tag.len());
510510
match line {
511511
Line::Plain {
512512
ref number,
@@ -526,33 +526,33 @@ fn write_lines(writer: &mut Writer<Cursor<Vec<u8>>>, lines: &[Line]) {
526526
l.push_attribute(("branch", "true"));
527527
writer.write_event(Event::Start(l)).unwrap();
528528

529-
let conditions_tag = b"conditions";
530-
let condition_tag = b"condition";
529+
let conditions_tag = "conditions";
530+
let condition_tag = "condition";
531531

532532
writer
533-
.write_event(Event::Start(BytesStart::borrowed(
533+
.write_event(Event::Start(BytesStart::from_content(
534534
conditions_tag,
535535
conditions_tag.len(),
536536
)))
537537
.unwrap();
538538
for condition in conditions {
539-
let mut c = BytesStart::borrowed(condition_tag, condition_tag.len());
539+
let mut c = BytesStart::from_content(condition_tag, condition_tag.len());
540540
c.push_attribute(("number", condition.number.to_string().as_ref()));
541541
c.push_attribute(("type", condition.cond_type.to_string().as_ref()));
542542
c.push_attribute(("coverage", condition.coverage.to_string().as_ref()));
543543
writer.write_event(Event::Empty(c)).unwrap();
544544
}
545545
writer
546-
.write_event(Event::End(BytesEnd::borrowed(conditions_tag)))
546+
.write_event(Event::End(BytesEnd::new(conditions_tag)))
547547
.unwrap();
548548
}
549549
}
550550
writer
551-
.write_event(Event::End(BytesEnd::borrowed(line_tag)))
551+
.write_event(Event::End(BytesEnd::new(line_tag)))
552552
.unwrap();
553553
}
554554
writer
555-
.write_event(Event::End(BytesEnd::borrowed(lines_tag)))
555+
.write_event(Event::End(BytesEnd::new(lines_tag)))
556556
.unwrap();
557557
}
558558

src/parser.rs

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use std::str;
1111

1212
use log::error;
1313

14+
use quick_xml::encoding::Decoder;
1415
use quick_xml::events::attributes::AttrError;
1516
use quick_xml::events::{BytesStart, Event};
1617
use quick_xml::Reader;
@@ -558,8 +559,8 @@ fn get_xml_attribute<R: BufRead>(
558559
) -> Result<String, ParserError> {
559560
for a in event.attributes() {
560561
let a = a?;
561-
if a.key == name.as_bytes() {
562-
return Ok(a.unescape_and_decode_value(reader)?);
562+
if a.key.into_inner() == name.as_bytes() {
563+
return Ok(a.decode_and_unescape_value(reader)?.into_owned());
563564
}
564565
}
565566
Err(ParserError::InvalidRecord(format!(
@@ -576,16 +577,16 @@ fn parse_jacoco_report_sourcefile<T: BufRead>(
576577
let mut branches: BTreeMap<u32, Vec<bool>> = BTreeMap::new();
577578

578579
loop {
579-
match parser.read_event(buf) {
580-
Ok(Event::Start(ref e)) if e.local_name() == b"line" => {
580+
match parser.read_event_into(buf) {
581+
Ok(Event::Start(ref e)) if e.local_name().into_inner() == b"line" => {
581582
let (mut ci, mut cb, mut mb, mut nr) = (None, None, None, None);
582583
for a in e.attributes() {
583584
let a = a?;
584-
match a.key {
585-
b"ci" => ci = Some(parser.decode(&a.value)?.parse::<u64>()?),
586-
b"cb" => cb = Some(parser.decode(&a.value)?.parse::<u64>()?),
587-
b"mb" => mb = Some(parser.decode(&a.value)?.parse::<u64>()?),
588-
b"nr" => nr = Some(parser.decode(&a.value)?.parse::<u32>()?),
585+
match a.key.into_inner() {
586+
b"ci" => ci = Some(Decoder {}.decode(&a.value)?.parse::<u64>()?),
587+
b"cb" => cb = Some(Decoder {}.decode(&a.value)?.parse::<u64>()?),
588+
b"mb" => mb = Some(Decoder {}.decode(&a.value)?.parse::<u64>()?),
589+
b"nr" => nr = Some(Decoder {}.decode(&a.value)?.parse::<u32>()?),
589590
_ => (),
590591
}
591592
}
@@ -614,7 +615,7 @@ fn parse_jacoco_report_sourcefile<T: BufRead>(
614615
lines.insert(nr, hit);
615616
}
616617
}
617-
Ok(Event::End(ref e)) if e.local_name() == b"sourcefile" => {
618+
Ok(Event::End(ref e)) if e.local_name().into_inner() == b"sourcefile" => {
618619
break;
619620
}
620621
Err(e) => return Err(ParserError::Parse(e.to_string())),
@@ -634,13 +635,13 @@ fn parse_jacoco_report_method<T: BufRead>(
634635
let mut executed = false;
635636

636637
loop {
637-
match parser.read_event(buf) {
638-
Ok(Event::Start(ref e)) if e.local_name() == b"counter" => {
638+
match parser.read_event_into(buf) {
639+
Ok(Event::Start(ref e)) if e.local_name().into_inner() == b"counter" => {
639640
if get_xml_attribute(parser, e, "type")? == "METHOD" {
640641
executed = get_xml_attribute(parser, e, "covered")?.parse::<u32>()? > 0;
641642
}
642643
}
643-
Ok(Event::End(ref e)) if e.local_name() == b"method" => break,
644+
Ok(Event::End(ref e)) if e.local_name().into_inner() == b"method" => break,
644645
Err(e) => return Err(ParserError::Parse(e.to_string())),
645646
_ => {}
646647
}
@@ -658,16 +659,16 @@ fn parse_jacoco_report_class<T: BufRead>(
658659
let mut functions: FunctionMap = FxHashMap::default();
659660

660661
loop {
661-
match parser.read_event(buf) {
662-
Ok(Event::Start(ref e)) if e.local_name() == b"method" => {
662+
match parser.read_event_into(buf) {
663+
Ok(Event::Start(ref e)) if e.local_name().into_inner() == b"method" => {
663664
let name = get_xml_attribute(parser, e, "name")?;
664665
let full_name = format!("{}#{}", class_name, name);
665666

666667
let start_line = get_xml_attribute(parser, e, "line")?.parse::<u32>()?;
667668
let function = parse_jacoco_report_method(parser, buf, start_line)?;
668669
functions.insert(full_name, function);
669670
}
670-
Ok(Event::End(ref e)) if e.local_name() == b"class" => break,
671+
Ok(Event::End(ref e)) if e.local_name().into_inner() == b"class" => break,
671672
Err(e) => return Err(ParserError::Parse(e.to_string())),
672673
_ => {}
673674
}
@@ -685,9 +686,9 @@ fn parse_jacoco_report_package<T: BufRead>(
685686
let mut results_map: FxHashMap<String, CovResult> = FxHashMap::default();
686687

687688
loop {
688-
match parser.read_event(buf) {
689+
match parser.read_event_into(buf) {
689690
Ok(Event::Start(ref e)) => {
690-
match e.local_name() {
691+
match e.local_name().into_inner() {
691692
b"class" => {
692693
// Fully qualified class name: "org/example/Person$Age"
693694
let fq_class = get_xml_attribute(parser, e, "name")?;
@@ -742,7 +743,7 @@ fn parse_jacoco_report_package<T: BufRead>(
742743
&_ => {}
743744
}
744745
}
745-
Ok(Event::End(ref e)) if e.local_name() == b"package" => break,
746+
Ok(Event::End(ref e)) if e.local_name().into_inner() == b"package" => break,
746747
Err(e) => return Err(ParserError::Parse(e.to_string())),
747748
_ => {}
748749
}
@@ -783,8 +784,8 @@ pub fn parse_jacoco_xml_report<T: Read>(
783784
let mut buf = Vec::new();
784785

785786
loop {
786-
match parser.read_event(&mut buf) {
787-
Ok(Event::Start(ref e)) if e.local_name() == b"package" => {
787+
match parser.read_event_into(&mut buf) {
788+
Ok(Event::Start(ref e)) if e.local_name().into_inner() == b"package" => {
788789
let package = get_xml_attribute(&parser, e, "name")?;
789790
let mut package_results =
790791
parse_jacoco_report_package(&mut parser, &mut buf, &package)?;

0 commit comments

Comments
 (0)