diff options
author | Colin Cross <ccross@android.com> | 2018-01-04 08:02:43 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-01-04 08:02:43 +0000 |
commit | 327288f9de98ff08187093000724f0d2ad383d26 (patch) | |
tree | fe28e97899a8dcf9ce7fee9616c15c4726254226 | |
parent | 1146c6cdfa6a739e0f190951248a136e549098fa (diff) | |
parent | 18209122c57f462409af8c3004c2969489e97d11 (diff) | |
download | build_soong-327288f9de98ff08187093000724f0d2ad383d26.tar.gz build_soong-327288f9de98ff08187093000724f0d2ad383d26.tar.bz2 build_soong-327288f9de98ff08187093000724f0d2ad383d26.zip |
Merge "Fix jacoco_cli invocation" am: 41b97b3001 am: ce010f07f2
am: 18209122c5
Change-Id: I4057f16ccaeda459b155a14192cf16735badfcd8
-rw-r--r-- | java/jacoco.go | 31 | ||||
-rw-r--r-- | java/java.go | 2 |
2 files changed, 21 insertions, 12 deletions
diff --git a/java/jacoco.go b/java/jacoco.go index e6da5a65..8f1ceb26 100644 --- a/java/jacoco.go +++ b/java/jacoco.go @@ -18,6 +18,7 @@ package java import ( "fmt" + "path/filepath" "strings" "github.com/google/blueprint" @@ -27,11 +28,12 @@ import ( var ( jacoco = pctx.AndroidStaticRule("jacoco", blueprint.RuleParams{ - Command: `${config.Zip2ZipCmd} -i $in -o $strippedJar $stripSpec && ` + + Command: `rm -rf $tmpDir && mkdir -p $tmpDir && ` + + `${config.Zip2ZipCmd} -i $in -o $strippedJar $stripSpec && ` + `${config.JavaCmd} -jar ${config.JacocoCLIJar} ` + - ` instrument --quiet --dest $instrumentedJar $strippedJar && ` + - `${config.Ziptime} $instrumentedJar && ` + - `${config.MergeZipsCmd} --ignore-duplicates -j $out $instrumentedJar $in`, + ` instrument --quiet --dest $tmpDir $strippedJar && ` + + `${config.Ziptime} $tmpJar && ` + + `${config.MergeZipsCmd} --ignore-duplicates -j $out $tmpJar $in`, CommandDeps: []string{ "${config.Zip2ZipCmd}", "${config.JavaCmd}", @@ -40,23 +42,30 @@ var ( "${config.MergeZipsCmd}", }, }, - "strippedJar", "stripSpec", "instrumentedJar") + "strippedJar", "stripSpec", "tmpDir", "tmpJar") ) -func jacocoInstrumentJar(ctx android.ModuleContext, outputJar, strippedJar android.WritablePath, +// Instruments a jar using the Jacoco command line interface. Uses stripSpec to extract a subset +// of the classes in inputJar into strippedJar, instruments strippedJar into tmpJar, and then +// combines the classes in tmpJar with inputJar (preferring the instrumented classes in tmpJar) +// to produce instrumentedJar. +func jacocoInstrumentJar(ctx android.ModuleContext, instrumentedJar, strippedJar android.WritablePath, inputJar android.Path, stripSpec string) { - instrumentedJar := android.PathForModuleOut(ctx, "jacoco/instrumented.jar") + + // The basename of tmpJar has to be the same as the basename of strippedJar + tmpJar := android.PathForModuleOut(ctx, "jacoco", "tmp", strippedJar.Base()) ctx.Build(pctx, android.BuildParams{ Rule: jacoco, Description: "jacoco", - Output: outputJar, + Output: instrumentedJar, ImplicitOutput: strippedJar, Input: inputJar, Args: map[string]string{ - "strippedJar": strippedJar.String(), - "stripSpec": stripSpec, - "instrumentedJar": instrumentedJar.String(), + "strippedJar": strippedJar.String(), + "stripSpec": stripSpec, + "tmpDir": filepath.Dir(tmpJar.String()), + "tmpJar": tmpJar.String(), }, }) } diff --git a/java/java.go b/java/java.go index 106284e0..24debacd 100644 --- a/java/java.go +++ b/java/java.go @@ -929,7 +929,7 @@ func (j *Module) instrument(ctx android.ModuleContext, flags javaBuilderFlags, specs := j.jacocoModuleToZipCommand(ctx) - jacocoReportClassesFile := android.PathForModuleOut(ctx, "jacoco", "jacoco-report-classes.jar") + jacocoReportClassesFile := android.PathForModuleOut(ctx, "jacoco-report-classes", jarName) instrumentedJar := android.PathForModuleOut(ctx, "jacoco", jarName) jacocoInstrumentJar(ctx, instrumentedJar, jacocoReportClassesFile, classesJar, specs) |