Add java_test and java_test_host

java_test is equivalent to a java_library with a default junit
dependency and marked as a test in Make for installation and
automatic AndroidTest.xml generation.

Bug: 70770641
Test: m checkbuild
Change-Id: I9ca97521e952d121db46abff6f24f274dd7a3ad7
This commit is contained in:
Colin Cross
2018-04-09 18:40:24 -07:00
parent f19b9bb981
commit 05638fc76f
2 changed files with 68 additions and 0 deletions

View File

@@ -97,6 +97,19 @@ func (library *Library) AndroidMk() android.AndroidMkData {
}
}
func (j *Test) AndroidMk() android.AndroidMkData {
data := j.Library.AndroidMk()
data.Extra = append(data.Extra, func(w io.Writer, outputFile android.Path) {
fmt.Fprintln(w, "LOCAL_MODULE_TAGS := tests")
if len(j.testProperties.Test_suites) > 0 {
fmt.Fprintln(w, "LOCAL_COMPATIBILITY_SUITE :=",
strings.Join(j.testProperties.Test_suites, " "))
}
})
return data
}
func (prebuilt *Import) AndroidMk() android.AndroidMkData {
return android.AndroidMkData{
Class: "JAVA_LIBRARIES",

View File

@@ -39,6 +39,8 @@ func init() {
android.RegisterModuleType("java_library_host", LibraryHostFactory)
android.RegisterModuleType("java_binary", BinaryFactory)
android.RegisterModuleType("java_binary_host", BinaryHostFactory)
android.RegisterModuleType("java_test", TestFactory)
android.RegisterModuleType("java_test_host", TestHostFactory)
android.RegisterModuleType("java_import", ImportFactory)
android.RegisterModuleType("java_import_host", ImportFactoryHost)
@@ -1208,6 +1210,59 @@ func LibraryHostFactory() android.Module {
return module
}
//
// Java Junit Tests
//
type testProperties struct {
// If true, add a static dependency on the platform junit library. Defaults to true.
Junit *bool
// list of compatibility suites (for example "cts", "vts") that the module should be
// installed into.
Test_suites []string `android:"arch_variant"`
}
type Test struct {
Library
testProperties testProperties
}
func (j *Test) DepsMutator(ctx android.BottomUpMutatorContext) {
j.deps(ctx)
if j.testProperties.Junit == nil || *j.testProperties.Junit == true {
ctx.AddDependency(ctx.Module(), staticLibTag, "junit")
}
}
func TestFactory() android.Module {
module := &Test{}
module.AddProperties(
&module.Module.properties,
&module.Module.deviceProperties,
&module.Module.protoProperties,
&module.testProperties)
InitJavaModule(module, android.HostAndDeviceSupported)
android.InitDefaultableModule(module)
return module
}
func TestHostFactory() android.Module {
module := &Test{}
module.AddProperties(
&module.Module.properties,
&module.Module.protoProperties,
&module.testProperties)
InitJavaModule(module, android.HostSupported)
android.InitDefaultableModule(module)
return module
}
//
// Java Binaries (.jar file plus wrapper script)
//