diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go index 2f6bce20f..4b75e3b80 100644 --- a/bp2build/java_library_conversion_test.go +++ b/bp2build/java_library_conversion_test.go @@ -30,6 +30,7 @@ func runJavaLibraryTestCaseWithRegistrationCtxFunc(t *testing.T, tc bp2buildTest } func runJavaLibraryTestCase(t *testing.T, tc bp2buildTestCase) { + t.Helper() runJavaLibraryTestCaseWithRegistrationCtxFunc(t, tc, func(ctx android.RegistrationContext) {}) } @@ -156,3 +157,65 @@ java_plugin { ctx.RegisterModuleType("java_plugin", java.PluginFactory) }) } + +func TestJavaLibraryErrorproneJavacflagsEnabledManually(t *testing.T) { + runJavaLibraryTestCase(t, bp2buildTestCase{ + blueprint: `java_library { + name: "java-lib-1", + srcs: ["a.java"], + javacflags: ["-Xsuper-fast"], + errorprone: { + enabled: true, + javacflags: ["-Xep:SpeedLimit:OFF"], + }, +}`, + expectedBazelTargets: []string{ + makeBazelTarget("java_library", "java-lib-1", attrNameToString{ + "javacopts": `[ + "-Xsuper-fast", + "-Xep:SpeedLimit:OFF", + ]`, + "srcs": `["a.java"]`, + }), + }, + }) +} + +func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledByDefault(t *testing.T) { + runJavaLibraryTestCase(t, bp2buildTestCase{ + blueprint: `java_library { + name: "java-lib-1", + srcs: ["a.java"], + javacflags: ["-Xsuper-fast"], + errorprone: { + javacflags: ["-Xep:SpeedLimit:OFF"], + }, +}`, + expectedBazelTargets: []string{ + makeBazelTarget("java_library", "java-lib-1", attrNameToString{ + "javacopts": `["-Xsuper-fast"]`, + "srcs": `["a.java"]`, + }), + }, + }) +} + +func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledManually(t *testing.T) { + runJavaLibraryTestCase(t, bp2buildTestCase{ + blueprint: `java_library { + name: "java-lib-1", + srcs: ["a.java"], + javacflags: ["-Xsuper-fast"], + errorprone: { + enabled: false, + javacflags: ["-Xep:SpeedLimit:OFF"], + }, +}`, + expectedBazelTargets: []string{ + makeBazelTarget("java_library", "java-lib-1", attrNameToString{ + "javacopts": `["-Xsuper-fast"]`, + "srcs": `["a.java"]`, + }), + }, + }) +} diff --git a/java/java.go b/java/java.go index ecbbc329c..713fe9492 100644 --- a/java/java.go +++ b/java/java.go @@ -2060,15 +2060,22 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) protoSrcPartition: android.ProtoSrcLabelPartition, }) + var javacopts []string + if m.properties.Javacflags != nil { + javacopts = append(javacopts, m.properties.Javacflags...) + } + epEnabled := m.properties.Errorprone.Enabled + //TODO(b/227504307) add configuration that depends on RUN_ERROR_PRONE environment variable + if Bool(epEnabled) { + javacopts = append(javacopts, m.properties.Errorprone.Javacflags...) + } + commonAttrs := &javaCommonAttributes{ Srcs: srcPartitions[javaSrcPartition], Plugins: bazel.MakeLabelListAttribute( android.BazelLabelForModuleDeps(ctx, m.properties.Plugins), ), - } - - if m.properties.Javacflags != nil { - commonAttrs.Javacopts = bazel.MakeStringListAttribute(m.properties.Javacflags) + Javacopts: bazel.MakeStringListAttribute(javacopts), } depLabels := &javaDependencyLabels{}