Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ecb4c6e4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add test mode for java config modules" into main

parents 0cc3d672 b7c294a1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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",
+12 −0
Original line number Diff line number Diff line
@@ -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.
+37 −0
Original line number Diff line number Diff line
@@ -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")
}