Add test mode for java config modules

Test: soong unit tests, verify output files are correct
Bug: 288632682
Change-Id: If5a6c916104e60e3688f5614b7420138e1a6323e
This commit is contained in:
Joe Onorato 2023-07-28 05:30:25 -07:00
parent 460fb2d6d5
commit b7c294a17e
3 changed files with 51 additions and 1 deletions

View file

@ -44,6 +44,7 @@ var (
Command: `rm -rf ${out}.tmp` +
` && mkdir -p ${out}.tmp` +
` && ${aconfig} create-java-lib` +
` --mode ${mode}` +
` --cache ${in}` +
` --out ${out}.tmp` +
` && $soong_zip -write_if_changed -jar -o ${out} -C ${out}.tmp -D ${out}.tmp` +
@ -53,7 +54,7 @@ var (
"$soong_zip",
},
Restat: true,
})
}, "mode")
// For java_aconfig_library: Generate java file
cppRule = pctx.AndroidStaticRule("cc_aconfig_library",

View file

@ -30,6 +30,9 @@ var declarationsTag = declarationsTagType{}
type JavaAconfigDeclarationsLibraryProperties struct {
// name of the aconfig_declarations module to generate a library for
Aconfig_declarations string
// whether to generate test mode version of the library
Test bool
}
type JavaAconfigDeclarationsLibraryCallbacks struct {
@ -61,11 +64,20 @@ func (callbacks *JavaAconfigDeclarationsLibraryCallbacks) GenerateSourceJarBuild
// Generate the action to build the srcjar
srcJarPath := android.PathForModuleGen(ctx, ctx.ModuleName()+".srcjar")
var mode string
if callbacks.properties.Test {
mode = "test"
} else {
mode = "production"
}
ctx.Build(pctx, android.BuildParams{
Rule: javaRule,
Input: declarations.IntermediatePath,
Output: srcJarPath,
Description: "aconfig.srcjar",
Args: map[string]string{
"mode": mode,
},
})
// Tell the java module about the .aconfig files, so they can be propagated up the dependency chain.

View file

@ -15,6 +15,7 @@
package aconfig
import (
"fmt"
"strings"
"testing"
@ -152,3 +153,39 @@ func TestAndroidMkBinaryThatLinksAgainstAar(t *testing.T) {
runJavaAndroidMkTest(t, bp)
}
func testCodegenMode(t *testing.T, bpMode string, ruleMode string) {
result := android.GroupFixturePreparers(
PrepareForTestWithAconfigBuildComponents,
java.PrepareForTestWithJavaDefaultModules).
ExtendWithErrorHandler(android.FixtureExpectsNoErrors).
RunTestWithBp(t, fmt.Sprintf(`
aconfig_declarations {
name: "my_aconfig_declarations",
package: "com.example.package",
srcs: ["foo.aconfig"],
}
java_aconfig_library {
name: "my_java_aconfig_library",
aconfig_declarations: "my_aconfig_declarations",
%s
}
`, bpMode))
module := result.ModuleForTests("my_java_aconfig_library", "android_common")
rule := module.Rule("java_aconfig_library")
android.AssertStringEquals(t, "rule must contain test mode", rule.Args["mode"], ruleMode)
}
func TestDefaultProdMode(t *testing.T) {
testCodegenMode(t, "", "production")
}
func TestProdMode(t *testing.T) {
testCodegenMode(t, "test: false,", "production")
}
func TestTestMode(t *testing.T) {
testCodegenMode(t, "test: true,", "test")
}