Group all the preparations needed for testing dexpreopt
Make it easier to test dexpreopt functionality by grouping all the fixture preparations together. Bug: 177892522 Test: m nothing Change-Id: I94f66e3ec82efc4fd791f4fdab678d298565e452
This commit is contained in:
parent
3c84eaaa98
commit
9fc9f53423
|
@ -15,6 +15,8 @@
|
|||
package dexpreopt
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"android/soong/android"
|
||||
)
|
||||
|
||||
|
@ -46,8 +48,45 @@ func BpToolModulesForTest() string {
|
|||
`
|
||||
}
|
||||
|
||||
// Prepares a test fixture by enabling dexpreopt.
|
||||
var PrepareForTestWithDexpreopt = FixtureModifyGlobalConfig(func(*GlobalConfig) {})
|
||||
func CompatLibDefinitionsForTest() string {
|
||||
bp := ""
|
||||
|
||||
// For class loader context and <uses-library> tests.
|
||||
dexpreoptModules := []string{"android.test.runner"}
|
||||
dexpreoptModules = append(dexpreoptModules, CompatUsesLibs...)
|
||||
dexpreoptModules = append(dexpreoptModules, OptionalCompatUsesLibs...)
|
||||
|
||||
for _, extra := range dexpreoptModules {
|
||||
bp += fmt.Sprintf(`
|
||||
java_library {
|
||||
name: "%s",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "none",
|
||||
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||
compile_dex: true,
|
||||
installable: true,
|
||||
}
|
||||
`, extra)
|
||||
}
|
||||
|
||||
return bp
|
||||
}
|
||||
|
||||
var PrepareForTestWithDexpreoptCompatLibs = android.GroupFixturePreparers(
|
||||
android.FixtureAddFile("defaults/dexpreopt/compat/a.java", nil),
|
||||
android.FixtureAddTextFile("defaults/dexpreopt/compat/Android.bp", CompatLibDefinitionsForTest()),
|
||||
)
|
||||
|
||||
var PrepareForTestWithFakeDex2oatd = android.GroupFixturePreparers(
|
||||
android.FixtureRegisterWithContext(RegisterToolModulesForTest),
|
||||
android.FixtureAddTextFile("defaults/dexpreopt/Android.bp", BpToolModulesForTest()),
|
||||
)
|
||||
|
||||
// Prepares a test fixture by enabling dexpreopt, registering the fake_tool_binary module type and
|
||||
// using that to define the `dex2oatd` module.
|
||||
var PrepareForTestByEnablingDexpreopt = android.GroupFixturePreparers(
|
||||
FixtureModifyGlobalConfig(func(*GlobalConfig) {}),
|
||||
)
|
||||
|
||||
// FixtureModifyGlobalConfig enables dexpreopt (unless modified by the mutator) and modifies the
|
||||
// configuration.
|
||||
|
|
|
@ -53,7 +53,7 @@ var prepareForJavaTest = android.GroupFixturePreparers(
|
|||
android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
|
||||
ctx.RegisterPreSingletonType("sdk_versions", sdkPreSingletonFactory)
|
||||
}),
|
||||
dexpreopt.PrepareForTestWithDexpreopt,
|
||||
PrepareForTestWithDexpreopt,
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
|
@ -68,7 +68,7 @@ func TestMain(m *testing.M) {
|
|||
func testJavaError(t *testing.T, pattern string, bp string) (*android.TestContext, android.Config) {
|
||||
t.Helper()
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForJavaTest, dexpreopt.PrepareForTestWithDexpreopt).
|
||||
prepareForJavaTest, dexpreopt.PrepareForTestByEnablingDexpreopt).
|
||||
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(pattern)).
|
||||
RunTestWithBp(t, bp)
|
||||
return result.TestContext, result.Config
|
||||
|
|
|
@ -53,6 +53,15 @@ var PrepareForTestWithJavaDefaultModules = android.GroupFixturePreparers(
|
|||
PrepareForTestWithJavaBuildComponents,
|
||||
// The java default module definitions.
|
||||
android.FixtureAddTextFile(defaultJavaDir+"/Android.bp", gatherRequiredDepsForTest()),
|
||||
// Add dexpreopt compat libs (android.test.base, etc.) and a fake dex2oatd module.
|
||||
dexpreopt.PrepareForTestWithDexpreoptCompatLibs,
|
||||
dexpreopt.PrepareForTestWithFakeDex2oatd,
|
||||
)
|
||||
|
||||
// Provides everything needed by dexpreopt.
|
||||
var PrepareForTestWithDexpreopt = android.GroupFixturePreparers(
|
||||
PrepareForTestWithJavaDefaultModules,
|
||||
dexpreopt.PrepareForTestByEnablingDexpreopt,
|
||||
)
|
||||
|
||||
var PrepareForTestWithOverlayBuildComponents = android.FixtureRegisterWithContext(registerOverlayBuildComponents)
|
||||
|
@ -182,6 +191,9 @@ func prebuiltApisFilesForLibs(apiLevels []string, sdkLibs []string) map[string][
|
|||
// deprecated: Use test fixtures instead, e.g. PrepareForTestWithJavaBuildComponents
|
||||
func RegisterRequiredBuildComponentsForTest(ctx android.RegistrationContext) {
|
||||
registerRequiredBuildComponentsForTest(ctx)
|
||||
|
||||
// Make sure that any tool related module types needed by dexpreopt have been registered.
|
||||
dexpreopt.RegisterToolModulesForTest(ctx)
|
||||
}
|
||||
|
||||
// registerRequiredBuildComponentsForTest registers the build components used by
|
||||
|
@ -205,9 +217,6 @@ func registerRequiredBuildComponentsForTest(ctx android.RegistrationContext) {
|
|||
RegisterSdkLibraryBuildComponents(ctx)
|
||||
RegisterStubsBuildComponents(ctx)
|
||||
RegisterSystemModulesBuildComponents(ctx)
|
||||
|
||||
// Make sure that any tool related module types needed by dexpreopt have been registered.
|
||||
dexpreopt.RegisterToolModulesForTest(ctx)
|
||||
}
|
||||
|
||||
// Gather the module definitions needed by tests that depend upon code from this package.
|
||||
|
@ -216,7 +225,15 @@ func registerRequiredBuildComponentsForTest(ctx android.RegistrationContext) {
|
|||
//
|
||||
// deprecated: Use test fixtures instead, e.g. PrepareForTestWithJavaDefaultModules
|
||||
func GatherRequiredDepsForTest() string {
|
||||
return gatherRequiredDepsForTest()
|
||||
bp := gatherRequiredDepsForTest()
|
||||
|
||||
// For class loader context and <uses-library> tests.
|
||||
bp += dexpreopt.CompatLibDefinitionsForTest()
|
||||
|
||||
// Make sure that any tools needed for dexpreopting are defined.
|
||||
bp += dexpreopt.BpToolModulesForTest()
|
||||
|
||||
return bp
|
||||
}
|
||||
|
||||
// gatherRequiredDepsForTest gathers the module definitions used by
|
||||
|
@ -257,24 +274,6 @@ func gatherRequiredDepsForTest() string {
|
|||
`, extra)
|
||||
}
|
||||
|
||||
// For class loader context and <uses-library> tests.
|
||||
dexpreoptModules := []string{"android.test.runner"}
|
||||
dexpreoptModules = append(dexpreoptModules, dexpreopt.CompatUsesLibs...)
|
||||
dexpreoptModules = append(dexpreoptModules, dexpreopt.OptionalCompatUsesLibs...)
|
||||
|
||||
for _, extra := range dexpreoptModules {
|
||||
bp += fmt.Sprintf(`
|
||||
java_library {
|
||||
name: "%s",
|
||||
srcs: ["a.java"],
|
||||
sdk_version: "none",
|
||||
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||
compile_dex: true,
|
||||
installable: true,
|
||||
}
|
||||
`, extra)
|
||||
}
|
||||
|
||||
bp += `
|
||||
java_library {
|
||||
name: "framework",
|
||||
|
@ -311,9 +310,6 @@ func gatherRequiredDepsForTest() string {
|
|||
`, extra)
|
||||
}
|
||||
|
||||
// Make sure that any tools needed for dexpreopting are defined.
|
||||
bp += dexpreopt.BpToolModulesForTest()
|
||||
|
||||
// Make sure that the dex_bootjars singleton module is instantiated for the tests.
|
||||
bp += `
|
||||
dex_bootjars {
|
||||
|
|
Loading…
Reference in New Issue