Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dfce8ad4 authored by Sebastien Hertz's avatar Sebastien Hertz
Browse files

Support code coverage with Jack

Building an app with Jack and with the environment variable
EMMA_INSTRUMENT_STATIC set to true will apply code coverage
onto the app targeting Jacoco.

Bug: 20115492
Change-Id: Ief3640fa3faa466f7f6aaa9739e06d3db24110a0
parent 3e2f5d83
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1943,6 +1943,7 @@ else \
fi; \
$(call call-jack) \
    $(strip $(PRIVATE_JACK_FLAGS)) \
    $(strip $(PRIVATE_JACK_COVERAGE_OPTIONS)) \
    $(if $(NO_OPTIMIZE_DX), \
        -D jack.dex.optimize="false") \
    $(if $(PRIVATE_RMTYPEDEFS), \
+13 −0
Original line number Diff line number Diff line
@@ -495,7 +495,11 @@ common_proguard_flags := \
ifeq ($(filter nosystem,$(LOCAL_PROGUARD_ENABLED)),)
common_proguard_flags += -include $(BUILD_SYSTEM)/proguard.flags
ifeq ($(LOCAL_EMMA_INSTRUMENT),true)
ifdef LOCAL_JACK_ENABLED
common_proguard_flags += -include $(BUILD_SYSTEM)/proguard.jacoco.flags
else
common_proguard_flags += -include $(BUILD_SYSTEM)/proguard.emma.flags
endif # LOCAL_JACK_ENABLED
endif
# If this is a test package, add proguard keep flags for tests.
ifneq ($(LOCAL_INSTRUMENTATION_FOR)$(filter tests,$(LOCAL_MODULE_TAGS)),)
@@ -666,6 +670,15 @@ $(built_dex).toc: $(full_classes_jack)
else #LOCAL_IS_STATIC_JAVA_LIBRARY
$(built_dex_intermediate): PRIVATE_CLASSES_JACK := $(full_classes_jack)

ifeq ($(LOCAL_EMMA_INSTRUMENT),true)
$(built_dex_intermediate): PRIVATE_JACK_COVERAGE_OPTIONS := \
    -D jack.coverage="true" \
    -D jack.coverage.metadata.file=$(intermediates.COMMON)/coverage.em \
    -D jack.coverage.jacoco.package=$(JACOCO_PACKAGE_NAME)
else
$(built_dex_intermediate): PRIVATE_JACK_COVERAGE_OPTIONS :=
endif

$(built_dex_intermediate): $(jack_all_deps) | setup-jack-server
	@echo Building with Jack: $@
	$(jack-java-to-dex)
+5 −0
Original line number Diff line number Diff line
@@ -47,7 +47,12 @@ endif
ifeq (true,$(EMMA_INSTRUMENT))
ifeq (true,$(LOCAL_EMMA_INSTRUMENT))
ifeq (true,$(EMMA_INSTRUMENT_STATIC))
ifdef LOCAL_JACK_ENABLED
# Jack supports coverage with Jacoco
LOCAL_STATIC_JAVA_LIBRARIES += jacocoagent
else
LOCAL_STATIC_JAVA_LIBRARIES += emma
endif # LOCAL_JACK_ENABLED
endif # LOCAL_EMMA_INSTRUMENT
endif # EMMA_INSTRUMENT_STATIC
else
+5 −0
Original line number Diff line number Diff line
@@ -329,6 +329,11 @@ include build/core/pdk_config.mk
# Install and start Jack server
-include $(TOPDIR)prebuilts/sdk/tools/jack_server_setup.mk

#
# -----------------------------------------------------------------
# Jacoco package name for Jack
-include $(TOPDIR)external/jacoco/config.mk

# -----------------------------------------------------------------
###
### In this section we set up the things that are different
+10 −0
Original line number Diff line number Diff line
@@ -186,12 +186,22 @@ endif # EMMA_INSTRUMENT is true

ifeq (true,$(LOCAL_EMMA_INSTRUMENT))
ifeq (true,$(EMMA_INSTRUMENT_STATIC))
ifdef LOCAL_JACK_ENABLED
# Jack supports coverage with Jacoco
LOCAL_STATIC_JAVA_LIBRARIES += jacocoagent
else
LOCAL_STATIC_JAVA_LIBRARIES += emma
endif # LOCAL_JACK_ENABLED
else
ifdef LOCAL_SDK_VERSION
ifdef TARGET_BUILD_APPS
# In unbundled build merge the emma library into the apk.
ifdef LOCAL_JACK_ENABLED
# Jack supports coverage with Jacoco
LOCAL_STATIC_JAVA_LIBRARIES += jacocoagent
else
LOCAL_STATIC_JAVA_LIBRARIES += emma
endif # LOCAL_JACK_ENABLED
else
# If build against the SDK in full build, core.jar is not used,
# we have to use prebiult emma.jar to make Proguard happy;
Loading