27
27
import java .util .List ;
28
28
import java .util .Locale ;
29
29
import java .util .ResourceBundle ;
30
+ import java .util .concurrent .atomic .AtomicInteger ;
30
31
31
32
import org .apache .maven .doxia .module .xhtml .decoration .render .RenderingContext ;
32
33
import org .apache .maven .doxia .siterenderer .sink .SiteRendererSink ;
45
46
46
47
import scala .Option ;
47
48
import scala .Tuple2 ;
48
- import scala .collection .JavaConverters ;
49
- import scala .collection .Seq ;
50
-
51
- import scoverage .Constants ;
52
- import scoverage .Coverage ;
53
- import scoverage .IOUtils ;
54
- import scoverage .Serializer ;
55
- import scoverage .report .CoberturaXmlWriter ;
56
- import scoverage .report .CoverageAggregator ;
57
- import scoverage .report .ScoverageHtmlWriter ;
58
- import scoverage .report .ScoverageXmlWriter ;
49
+ import scala .collection .immutable .Seq ;
50
+ import scala .jdk .javaapi .CollectionConverters ;
51
+
52
+ import scoverage .domain .Constants ;
53
+ import scoverage .domain .Coverage ;
54
+ import scoverage .domain .Statement ;
55
+ import scoverage .reporter .IOUtils ;
56
+ import scoverage .serialize .Serializer ;
57
+ import scoverage .reporter .CoberturaXmlWriter ;
58
+ import scoverage .reporter .CoverageAggregator ;
59
+ import scoverage .reporter .ScoverageHtmlWriter ;
60
+ import scoverage .reporter .ScoverageXmlWriter ;
59
61
60
62
/**
61
63
* Generates code coverage by unit tests report in forked {@code scoverage} life cycle.
@@ -418,13 +420,13 @@ private void generateReports()
418
420
419
421
File coverageFile = Serializer .coverageFile ( dataDirectory );
420
422
getLog ().info ( String .format ( "Reading scoverage instrumentation [%s]..." , coverageFile .getAbsolutePath () ) );
421
- Coverage coverage = Serializer .deserialize ( coverageFile );
423
+ Coverage coverage = Serializer .deserialize ( coverageFile , project . getBasedir () );
422
424
423
425
getLog ().info ( String .format ( "Reading scoverage measurements [%s*]..." ,
424
426
new File ( dataDirectory , Constants .MeasurementsPrefix () ).getAbsolutePath () ) );
425
427
List <File > measurementFiles = Arrays .asList ( IOUtils .findMeasurementFiles ( dataDirectory ) );
426
428
scala .collection .Set <Tuple2 <Object , String >> measurements =
427
- IOUtils .invoked ( JavaConverters . asScalaBuffer ( measurementFiles ) );
429
+ IOUtils .invoked ( CollectionConverters . asScala ( measurementFiles ). toSeq (), encoding );
428
430
coverage .apply ( measurements );
429
431
430
432
getLog ().info ( "Generating coverage reports..." );
@@ -435,6 +437,8 @@ private void generateReports()
435
437
private void generateAggregatedReports ()
436
438
throws MavenReportException
437
439
{
440
+ Coverage coverage = new Coverage ();
441
+ AtomicInteger id = new AtomicInteger ();
438
442
List <File > scoverageDataDirs = new ArrayList <File >();
439
443
List <File > sourceRoots = new ArrayList <File >();
440
444
MavenProject topLevelModule = null ;
@@ -450,6 +454,33 @@ else if ( !module.getPackaging().equals( "pom" ) )
450
454
if ( scoverageDataDir .isDirectory () )
451
455
{
452
456
scoverageDataDirs .add ( scoverageDataDir );
457
+ File coverageFile = Serializer .coverageFile (scoverageDataDir );
458
+ if (coverageFile .exists ()) {
459
+ Coverage subCoverage = Serializer .deserialize (coverageFile , module .getBasedir ());
460
+ List <File > measurementFiles = Arrays .asList ( IOUtils .findMeasurementFiles ( scoverageDataDir ) );
461
+ scala .collection .Set <Tuple2 <Object , String >> measurements =
462
+ IOUtils .invoked ( CollectionConverters .asScala ( measurementFiles ).toSeq (), encoding );
463
+ subCoverage .apply ( measurements );
464
+ subCoverage .statements ().foreach (statement -> {
465
+ int statementId = id .getAndIncrement ();
466
+ Statement copy = statement .copy (
467
+ statement .location (),
468
+ statementId ,
469
+ statement .start (),
470
+ statement .end (),
471
+ statement .line (),
472
+ statement .desc (),
473
+ statement .symbolName (),
474
+ statement .treeName (),
475
+ statement .branch (),
476
+ statement .count (),
477
+ statement .ignored (),
478
+ statement .tests ()
479
+ );
480
+ coverage .add (copy );
481
+ return null ;
482
+ });
483
+ }
453
484
454
485
File sourceRootsFile = new File ( scoverageDataDir , "source.roots" );
455
486
if ( sourceRootsFile .isFile () )
@@ -509,9 +540,6 @@ else if ( !module.getPackaging().equals( "pom" ) )
509
540
mkdirs ( topLevelModuleOutputDirectory );
510
541
mkdirs ( topLevelModuleXmlOutputDirectory );
511
542
512
- Coverage coverage =
513
- CoverageAggregator .aggregatedCoverage ( JavaConverters .asScalaBuffer ( scoverageDataDirs ).toSeq () );
514
-
515
543
getLog ().info ( "Generating coverage aggregated reports..." );
516
544
writeReports ( coverage , sourceRoots , topLevelModuleXmlOutputDirectory , topLevelModuleXmlOutputDirectory ,
517
545
topLevelModuleOutputDirectory );
@@ -521,13 +549,13 @@ else if ( !module.getPackaging().equals( "pom" ) )
521
549
private void writeReports ( Coverage coverage , List <File > sourceRoots , File coberturaXmlOutputDirectory ,
522
550
File scoverageXmlOutputDirectory , File scoverageHtmlOutputDirectory )
523
551
{
524
- Seq <File > sourceRootsAsScalaSeq = JavaConverters . asScalaBuffer ( sourceRoots );
552
+ Seq <File > sourceRootsAsScalaSeq = CollectionConverters . asScala ( sourceRoots ). toSeq ( );
525
553
526
- new CoberturaXmlWriter ( sourceRootsAsScalaSeq , coberturaXmlOutputDirectory ).write ( coverage );
554
+ new CoberturaXmlWriter ( sourceRootsAsScalaSeq , coberturaXmlOutputDirectory , Option .< String > apply ( encoding ) ).write ( coverage );
527
555
getLog ().info ( String .format ( "Written Cobertura XML report [%s]" ,
528
556
new File ( coberturaXmlOutputDirectory , "cobertura.xml" ).getAbsolutePath () ) );
529
557
530
- new ScoverageXmlWriter ( sourceRootsAsScalaSeq , scoverageXmlOutputDirectory , false ).write ( coverage );
558
+ new ScoverageXmlWriter ( sourceRootsAsScalaSeq , scoverageXmlOutputDirectory , false , Option .< String > apply ( encoding ) ).write ( coverage );
531
559
getLog ().info ( String .format ( "Written XML coverage report [%s]" ,
532
560
new File ( scoverageXmlOutputDirectory , "scoverage.xml" ).getAbsolutePath () ) );
533
561
0 commit comments