aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2018-01-04 08:02:43 +0000
committerandroid-build-merger <android-build-merger@google.com>2018-01-04 08:02:43 +0000
commit327288f9de98ff08187093000724f0d2ad383d26 (patch)
treefe28e97899a8dcf9ce7fee9616c15c4726254226 /java
parent1146c6cdfa6a739e0f190951248a136e549098fa (diff)
parent18209122c57f462409af8c3004c2969489e97d11 (diff)
downloadbuild_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
Diffstat (limited to 'java')
-rw-r--r--java/jacoco.go31
-rw-r--r--java/java.go2
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)