diff options
author | 2025-01-17 00:23:57 +0000 | |
---|---|---|
committer | 2025-01-17 00:56:29 +0000 | |
commit | 7eebf8b34c4a40fe1f374b7db290ac62ca872c10 (patch) | |
tree | 950734cd55e54300f646bab0e3bf0f98882fb19c /java/robolectric.go | |
parent | 7dce04d1f464896589362887ac0a294c37b4b2d8 (diff) |
Convert JavaFuzzTest, JavaLibrary,
generateAndroidBuildActionsWithConfig, ravenwood and robolectricTest to
use ModuleProxy.
Bug: 377723687
Test: Unit tests and compare the ninja and mk files generated.
Change-Id: Icafbef242f78e1c7b186fc7e642bb1cf514e3cc2
Diffstat (limited to 'java/robolectric.go')
-rw-r--r-- | java/robolectric.go | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/java/robolectric.go b/java/robolectric.go index 6c74d084b..ff0c850d5 100644 --- a/java/robolectric.go +++ b/java/robolectric.go @@ -29,6 +29,12 @@ func init() { RegisterRobolectricBuildComponents(android.InitRegistrationContext) } +type RobolectricRuntimesInfo struct { + Runtimes []android.InstallPath +} + +var RobolectricRuntimesInfoProvider = blueprint.NewProvider[RobolectricRuntimesInfo]() + type roboRuntimeOnlyDependencyTag struct { blueprint.BaseDependencyTag } @@ -141,7 +147,7 @@ func (r *robolectricTest) GenerateAndroidBuildActions(ctx android.ModuleContext) var options []tradefed.Option options = append(options, tradefed.Option{Name: "java-flags", Value: "-Drobolectric=true"}) if proptools.BoolDefault(r.robolectricProperties.Strict_mode, true) { - options = append(options, tradefed.Option{Name: "java-flags", Value: "-Drobolectric.strict.mode=true"}) + options = append(options, tradefed.Option{Name: "java-flags", Value: "-Drobolectric.strict.mode=true"}) } r.testConfig = tradefed.AutoGenTestConfig(ctx, tradefed.AutoGenTestConfigOptions{ @@ -159,25 +165,27 @@ func (r *robolectricTest) GenerateAndroidBuildActions(ctx android.ModuleContext) r.data = append(r.data, android.PathsForModuleSrc(ctx, r.testProperties.Device_first_prefer32_data)...) var ok bool - var instrumentedApp *AndroidApp + var instrumentedApp *JavaInfo + var appInfo *AppInfo // TODO: this inserts paths to built files into the test, it should really be inserting the contents. - instrumented := ctx.GetDirectDepsWithTag(instrumentationForTag) + instrumented := ctx.GetDirectDepsProxyWithTag(instrumentationForTag) if len(instrumented) == 1 { - instrumentedApp, ok = instrumented[0].(*AndroidApp) + appInfo, ok = android.OtherModuleProvider(ctx, instrumented[0], AppInfoProvider) if !ok { ctx.PropertyErrorf("instrumentation_for", "dependency must be an android_app") } + instrumentedApp = android.OtherModuleProviderOrDefault(ctx, instrumented[0], JavaInfoProvider) } else if !ctx.Config().AllowMissingDependencies() { panic(fmt.Errorf("expected exactly 1 instrumented dependency, got %d", len(instrumented))) } var resourceApk android.Path var manifest android.Path - if instrumentedApp != nil { - manifest = instrumentedApp.mergedManifestFile - resourceApk = instrumentedApp.outputFile + if appInfo != nil { + manifest = appInfo.MergedManifestFile + resourceApk = instrumentedApp.OutputFile } roboTestConfigJar := android.PathForModuleOut(ctx, "robolectric_samedir", "samedir_config.jar") @@ -185,7 +193,7 @@ func (r *robolectricTest) GenerateAndroidBuildActions(ctx android.ModuleContext) extraCombinedJars := android.Paths{roboTestConfigJar} - handleLibDeps := func(dep android.Module) { + handleLibDeps := func(dep android.ModuleProxy) { if !android.InList(ctx.OtherModuleName(dep), config.FrameworkLibraries) { if m, ok := android.OtherModuleProvider(ctx, dep, JavaInfoProvider); ok { extraCombinedJars = append(extraCombinedJars, m.ImplementationAndResourcesJars...) @@ -193,19 +201,19 @@ func (r *robolectricTest) GenerateAndroidBuildActions(ctx android.ModuleContext) } } - for _, dep := range ctx.GetDirectDepsWithTag(libTag) { + for _, dep := range ctx.GetDirectDepsProxyWithTag(libTag) { handleLibDeps(dep) } - for _, dep := range ctx.GetDirectDepsWithTag(sdkLibTag) { + for _, dep := range ctx.GetDirectDepsProxyWithTag(sdkLibTag) { handleLibDeps(dep) } // handle the runtimeOnly tag for strict_mode - for _, dep := range ctx.GetDirectDepsWithTag(roboRuntimeOnlyDepTag) { + for _, dep := range ctx.GetDirectDepsProxyWithTag(roboRuntimeOnlyDepTag) { handleLibDeps(dep) } - if instrumentedApp != nil { - extraCombinedJars = append(extraCombinedJars, instrumentedApp.implementationAndResourcesJar) + if appInfo != nil { + extraCombinedJars = append(extraCombinedJars, instrumentedApp.ImplementationAndResourcesJars...) } r.stem = proptools.StringDefault(r.overridableProperties.Stem, ctx.ModuleName()) @@ -233,8 +241,8 @@ func (r *robolectricTest) GenerateAndroidBuildActions(ctx android.ModuleContext) installDeps = append(installDeps, installedResourceApk) } - runtimes := ctx.GetDirectDepWithTag("robolectric-android-all-prebuilts", roboRuntimesTag) - for _, runtime := range runtimes.(*robolectricRuntimes).runtimes { + runtimes := ctx.GetDirectDepProxyWithTag("robolectric-android-all-prebuilts", roboRuntimesTag) + for _, runtime := range android.OtherModuleProviderOrDefault(ctx, runtimes, RobolectricRuntimesInfoProvider).Runtimes { installDeps = append(installDeps, runtime) } @@ -368,7 +376,7 @@ func (r *robolectricRuntimes) GenerateAndroidBuildActions(ctx android.ModuleCont } if !ctx.Config().AlwaysUsePrebuiltSdks() && r.props.Lib != nil { - runtimeFromSourceModule := ctx.GetDirectDepWithTag(String(r.props.Lib), libTag) + runtimeFromSourceModule := ctx.GetDirectDepProxyWithTag(String(r.props.Lib), libTag) if runtimeFromSourceModule == nil { if ctx.Config().AllowMissingDependencies() { ctx.AddMissingDependencies([]string{String(r.props.Lib)}) @@ -386,6 +394,10 @@ func (r *robolectricRuntimes) GenerateAndroidBuildActions(ctx android.ModuleCont installedRuntime := ctx.InstallFile(androidAllDir, runtimeName, runtimeFromSourceJar) r.runtimes = append(r.runtimes, installedRuntime) } + + android.SetProvider(ctx, RobolectricRuntimesInfoProvider, RobolectricRuntimesInfo{ + Runtimes: r.runtimes, + }) } func (r *robolectricRuntimes) InstallInTestcases() bool { return true } |