diff options
Diffstat (limited to 'java/testing.go')
| -rw-r--r-- | java/testing.go | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/java/testing.go b/java/testing.go index 6c49bc866..82aa29b61 100644 --- a/java/testing.go +++ b/java/testing.go @@ -146,6 +146,10 @@ var PrepareForTestWithPrebuiltsOfCurrentApi = FixtureWithPrebuiltApis(map[string // This defines a file in the mock file system in a predefined location (prebuilts/sdk/Android.bp) // and so only one instance of this can be used in each fixture. func FixtureWithPrebuiltApis(release2Modules map[string][]string) android.FixturePreparer { + return FixtureWithPrebuiltApisAndExtensions(release2Modules, nil) +} + +func FixtureWithPrebuiltApisAndExtensions(apiLevel2Modules map[string][]string, extensionLevel2Modules map[string][]string) android.FixturePreparer { mockFS := android.MockFS{} path := "prebuilts/sdk/Android.bp" @@ -153,14 +157,20 @@ func FixtureWithPrebuiltApis(release2Modules map[string][]string) android.Fixtur prebuilt_apis { name: "sdk", api_dirs: ["%s"], + extensions_dir: "extensions", imports_sdk_version: "none", imports_compile_dex: true, } - `, strings.Join(android.SortedStringKeys(release2Modules), `", "`)) + `, strings.Join(android.SortedStringKeys(apiLevel2Modules), `", "`)) - for release, modules := range release2Modules { + for release, modules := range apiLevel2Modules { mockFS.Merge(prebuiltApisFilesForModules([]string{release}, modules)) } + if extensionLevel2Modules != nil { + for release, modules := range extensionLevel2Modules { + mockFS.Merge(prebuiltExtensionApiFiles([]string{release}, modules)) + } + } return android.GroupFixturePreparers( android.FixtureAddTextFile(path, bp), android.FixtureMergeMockFs(mockFS), @@ -198,6 +208,19 @@ func prebuiltApisFilesForModules(apiLevels []string, modules []string) map[strin return fs } +func prebuiltExtensionApiFiles(extensionLevels []string, modules []string) map[string][]byte { + fs := make(map[string][]byte) + for _, level := range extensionLevels { + for _, sdkKind := range []android.SdkKind{android.SdkPublic, android.SdkSystem, android.SdkModule, android.SdkSystemServer} { + for _, lib := range modules { + fs[fmt.Sprintf("prebuilts/sdk/extensions/%s/%s/api/%s.txt", level, sdkKind, lib)] = nil + fs[fmt.Sprintf("prebuilts/sdk/extensions/%s/%s/api/%s-removed.txt", level, sdkKind, lib)] = nil + } + } + } + return fs +} + // FixtureConfigureBootJars configures the boot jars in both the dexpreopt.GlobalConfig and // Config.productVariables structs. As a side effect that enables dexpreopt. func FixtureConfigureBootJars(bootJars ...string) android.FixturePreparer { |