Add TestContext parameter to ContentFromFileRuleForTests
The next CL will need a TestContext parameter in ContentFromFileRuleForTests in order to retrieve the file rule contents from the Config. Add it and update all the tests that use it in order to simply review of the next CL. Bug: 306029038 Test: go test ./... Change-Id: Ia4b4c9854017ea3472fa2f8ba42cf7f72720496e
This commit is contained in:
parent
5c1d5fb21b
commit
f61d03d241
13 changed files with 53 additions and 45 deletions
|
@ -232,7 +232,7 @@ func shellUnescape(s string) string {
|
||||||
|
|
||||||
// ContentFromFileRuleForTests returns the content that was passed to a WriteFileRule for use
|
// ContentFromFileRuleForTests returns the content that was passed to a WriteFileRule for use
|
||||||
// in tests.
|
// in tests.
|
||||||
func ContentFromFileRuleForTests(t *testing.T, params TestingBuildParams) string {
|
func ContentFromFileRuleForTests(t *testing.T, ctx *TestContext, params TestingBuildParams) string {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if g, w := params.Rule, writeFile; g != w {
|
if g, w := params.Rule, writeFile; g != w {
|
||||||
t.Errorf("expected params.Rule to be %q, was %q", w, g)
|
t.Errorf("expected params.Rule to be %q, was %q", w, g)
|
||||||
|
|
|
@ -1341,9 +1341,9 @@ func (c *RuleBuilderCommand) String() string {
|
||||||
|
|
||||||
// RuleBuilderSboxProtoForTests takes the BuildParams for the manifest passed to RuleBuilder.Sbox()
|
// RuleBuilderSboxProtoForTests takes the BuildParams for the manifest passed to RuleBuilder.Sbox()
|
||||||
// and returns sbox testproto generated by the RuleBuilder.
|
// and returns sbox testproto generated by the RuleBuilder.
|
||||||
func RuleBuilderSboxProtoForTests(t *testing.T, params TestingBuildParams) *sbox_proto.Manifest {
|
func RuleBuilderSboxProtoForTests(t *testing.T, ctx *TestContext, params TestingBuildParams) *sbox_proto.Manifest {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
content := ContentFromFileRuleForTests(t, params)
|
content := ContentFromFileRuleForTests(t, ctx, params)
|
||||||
manifest := sbox_proto.Manifest{}
|
manifest := sbox_proto.Manifest{}
|
||||||
err := prototext.Unmarshal([]byte(content), &manifest)
|
err := prototext.Unmarshal([]byte(content), &manifest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -683,7 +683,7 @@ func TestRuleBuilder_Build(t *testing.T) {
|
||||||
t.Errorf("want Deps = %q, got %q", blueprint.DepsGCC, params.Deps)
|
t.Errorf("want Deps = %q, got %q", blueprint.DepsGCC, params.Deps)
|
||||||
}
|
}
|
||||||
|
|
||||||
rspFile2Content := ContentFromFileRuleForTests(t, rspFile2Params)
|
rspFile2Content := ContentFromFileRuleForTests(t, result.TestContext, rspFile2Params)
|
||||||
AssertStringEquals(t, "rspFile2 content", "rsp_in2\n", rspFile2Content)
|
AssertStringEquals(t, "rspFile2 content", "rsp_in2\n", rspFile2Content)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -797,7 +797,7 @@ func TestRuleBuilderHashInputs(t *testing.T) {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
t.Run("sbox", func(t *testing.T) {
|
t.Run("sbox", func(t *testing.T) {
|
||||||
gen := result.ModuleForTests(test.name+"_sbox", "")
|
gen := result.ModuleForTests(test.name+"_sbox", "")
|
||||||
manifest := RuleBuilderSboxProtoForTests(t, gen.Output("sbox.textproto"))
|
manifest := RuleBuilderSboxProtoForTests(t, result.TestContext, gen.Output("sbox.textproto"))
|
||||||
hash := manifest.Commands[0].GetInputHash()
|
hash := manifest.Commands[0].GetInputHash()
|
||||||
|
|
||||||
AssertStringEquals(t, "hash", test.expectedHash, hash)
|
AssertStringEquals(t, "hash", test.expectedHash, hash)
|
||||||
|
|
|
@ -595,13 +595,15 @@ func TestBasicApex(t *testing.T) {
|
||||||
t.Errorf("Could not find all expected symlinks! foo: %t, foo_link_64: %t. Command was %s", found_foo, found_foo_link_64, copyCmds)
|
t.Errorf("Could not find all expected symlinks! foo: %t, foo_link_64: %t. Command was %s", found_foo, found_foo_link_64, copyCmds)
|
||||||
}
|
}
|
||||||
|
|
||||||
fullDepsInfo := strings.Split(ctx.ModuleForTests("myapex", "android_common_myapex").Output("depsinfo/fulllist.txt").Args["content"], "\\n")
|
fullDepsInfo := strings.Split(android.ContentFromFileRuleForTests(t, ctx,
|
||||||
|
ctx.ModuleForTests("myapex", "android_common_myapex").Output("depsinfo/fulllist.txt")), "\n")
|
||||||
ensureListContains(t, fullDepsInfo, " myjar(minSdkVersion:(no version)) <- myapex")
|
ensureListContains(t, fullDepsInfo, " myjar(minSdkVersion:(no version)) <- myapex")
|
||||||
ensureListContains(t, fullDepsInfo, " mylib2(minSdkVersion:(no version)) <- mylib")
|
ensureListContains(t, fullDepsInfo, " mylib2(minSdkVersion:(no version)) <- mylib")
|
||||||
ensureListContains(t, fullDepsInfo, " myotherjar(minSdkVersion:(no version)) <- myjar")
|
ensureListContains(t, fullDepsInfo, " myotherjar(minSdkVersion:(no version)) <- myjar")
|
||||||
ensureListContains(t, fullDepsInfo, " mysharedjar(minSdkVersion:(no version)) (external) <- myjar")
|
ensureListContains(t, fullDepsInfo, " mysharedjar(minSdkVersion:(no version)) (external) <- myjar")
|
||||||
|
|
||||||
flatDepsInfo := strings.Split(ctx.ModuleForTests("myapex", "android_common_myapex").Output("depsinfo/flatlist.txt").Args["content"], "\\n")
|
flatDepsInfo := strings.Split(android.ContentFromFileRuleForTests(t, ctx,
|
||||||
|
ctx.ModuleForTests("myapex", "android_common_myapex").Output("depsinfo/flatlist.txt")), "\n")
|
||||||
ensureListContains(t, flatDepsInfo, "myjar(minSdkVersion:(no version))")
|
ensureListContains(t, flatDepsInfo, "myjar(minSdkVersion:(no version))")
|
||||||
ensureListContains(t, flatDepsInfo, "mylib2(minSdkVersion:(no version))")
|
ensureListContains(t, flatDepsInfo, "mylib2(minSdkVersion:(no version))")
|
||||||
ensureListContains(t, flatDepsInfo, "myotherjar(minSdkVersion:(no version))")
|
ensureListContains(t, flatDepsInfo, "myotherjar(minSdkVersion:(no version))")
|
||||||
|
@ -1281,10 +1283,12 @@ func TestApexWithExplicitStubsDependency(t *testing.T) {
|
||||||
// Ensure that libfoo stubs is not linking to libbar (since it is a stubs)
|
// Ensure that libfoo stubs is not linking to libbar (since it is a stubs)
|
||||||
ensureNotContains(t, libFooStubsLdFlags, "libbar.so")
|
ensureNotContains(t, libFooStubsLdFlags, "libbar.so")
|
||||||
|
|
||||||
fullDepsInfo := strings.Split(ctx.ModuleForTests("myapex2", "android_common_myapex2").Output("depsinfo/fulllist.txt").Args["content"], "\\n")
|
fullDepsInfo := strings.Split(android.ContentFromFileRuleForTests(t, ctx,
|
||||||
|
ctx.ModuleForTests("myapex2", "android_common_myapex2").Output("depsinfo/fulllist.txt")), "\n")
|
||||||
ensureListContains(t, fullDepsInfo, " libfoo(minSdkVersion:(no version)) (external) <- mylib")
|
ensureListContains(t, fullDepsInfo, " libfoo(minSdkVersion:(no version)) (external) <- mylib")
|
||||||
|
|
||||||
flatDepsInfo := strings.Split(ctx.ModuleForTests("myapex2", "android_common_myapex2").Output("depsinfo/flatlist.txt").Args["content"], "\\n")
|
flatDepsInfo := strings.Split(android.ContentFromFileRuleForTests(t, ctx,
|
||||||
|
ctx.ModuleForTests("myapex2", "android_common_myapex2").Output("depsinfo/flatlist.txt")), "\n")
|
||||||
ensureListContains(t, flatDepsInfo, "libfoo(minSdkVersion:(no version)) (external)")
|
ensureListContains(t, flatDepsInfo, "libfoo(minSdkVersion:(no version)) (external)")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2030,7 +2034,8 @@ func TestTrackAllowedDeps(t *testing.T) {
|
||||||
"out/soong/.intermediates/myapex2/android_common_myapex2/depsinfo/flatlist.txt")
|
"out/soong/.intermediates/myapex2/android_common_myapex2/depsinfo/flatlist.txt")
|
||||||
|
|
||||||
myapex := ctx.ModuleForTests("myapex", "android_common_myapex")
|
myapex := ctx.ModuleForTests("myapex", "android_common_myapex")
|
||||||
flatlist := strings.Split(myapex.Output("depsinfo/flatlist.txt").BuildParams.Args["content"], "\\n")
|
flatlist := strings.Split(android.ContentFromFileRuleForTests(t, ctx,
|
||||||
|
myapex.Output("depsinfo/flatlist.txt")), "\n")
|
||||||
android.AssertStringListContains(t, "deps with stubs should be tracked in depsinfo as external dep",
|
android.AssertStringListContains(t, "deps with stubs should be tracked in depsinfo as external dep",
|
||||||
flatlist, "libbar(minSdkVersion:(no version)) (external)")
|
flatlist, "libbar(minSdkVersion:(no version)) (external)")
|
||||||
android.AssertStringListDoesNotContain(t, "do not track if not available for platform",
|
android.AssertStringListDoesNotContain(t, "do not track if not available for platform",
|
||||||
|
@ -8154,7 +8159,7 @@ func TestAppBundle(t *testing.T) {
|
||||||
`, withManifestPackageNameOverrides([]string{"AppFoo:com.android.foo"}))
|
`, withManifestPackageNameOverrides([]string{"AppFoo:com.android.foo"}))
|
||||||
|
|
||||||
bundleConfigRule := ctx.ModuleForTests("myapex", "android_common_myapex").Output("bundle_config.json")
|
bundleConfigRule := ctx.ModuleForTests("myapex", "android_common_myapex").Output("bundle_config.json")
|
||||||
content := bundleConfigRule.Args["content"]
|
content := android.ContentFromFileRuleForTests(t, ctx, bundleConfigRule)
|
||||||
|
|
||||||
ensureContains(t, content, `"compression":{"uncompressed_glob":["apex_payload.img","apex_manifest.*"]}`)
|
ensureContains(t, content, `"compression":{"uncompressed_glob":["apex_payload.img","apex_manifest.*"]}`)
|
||||||
ensureContains(t, content, `"apex_config":{"apex_embedded_apk_config":[{"package_name":"com.android.foo","path":"app/AppFoo@TEST.BUILD_ID/AppFoo.apk"}]}`)
|
ensureContains(t, content, `"apex_config":{"apex_embedded_apk_config":[{"package_name":"com.android.foo","path":"app/AppFoo@TEST.BUILD_ID/AppFoo.apk"}]}`)
|
||||||
|
@ -8181,7 +8186,7 @@ func TestAppSetBundle(t *testing.T) {
|
||||||
}`)
|
}`)
|
||||||
mod := ctx.ModuleForTests("myapex", "android_common_myapex")
|
mod := ctx.ModuleForTests("myapex", "android_common_myapex")
|
||||||
bundleConfigRule := mod.Output("bundle_config.json")
|
bundleConfigRule := mod.Output("bundle_config.json")
|
||||||
content := bundleConfigRule.Args["content"]
|
content := android.ContentFromFileRuleForTests(t, ctx, bundleConfigRule)
|
||||||
ensureContains(t, content, `"compression":{"uncompressed_glob":["apex_payload.img","apex_manifest.*"]}`)
|
ensureContains(t, content, `"compression":{"uncompressed_glob":["apex_payload.img","apex_manifest.*"]}`)
|
||||||
s := mod.Rule("apexRule").Args["copy_commands"]
|
s := mod.Rule("apexRule").Args["copy_commands"]
|
||||||
copyCmds := regexp.MustCompile(" *&& *").Split(s, -1)
|
copyCmds := regexp.MustCompile(" *&& *").Split(s, -1)
|
||||||
|
@ -9126,7 +9131,7 @@ func TestApexKeysTxt(t *testing.T) {
|
||||||
`)
|
`)
|
||||||
|
|
||||||
myapex := ctx.ModuleForTests("myapex", "android_common_myapex")
|
myapex := ctx.ModuleForTests("myapex", "android_common_myapex")
|
||||||
content := myapex.Output("apexkeys.txt").BuildParams.Args["content"]
|
content := android.ContentFromFileRuleForTests(t, ctx, myapex.Output("apexkeys.txt"))
|
||||||
ensureContains(t, content, `name="myapex.apex" public_key="vendor/foo/devkeys/testkey.avbpubkey" private_key="vendor/foo/devkeys/testkey.pem" container_certificate="vendor/foo/devkeys/test.x509.pem" container_private_key="vendor/foo/devkeys/test.pk8" partition="system" sign_tool="sign_myapex"`)
|
ensureContains(t, content, `name="myapex.apex" public_key="vendor/foo/devkeys/testkey.avbpubkey" private_key="vendor/foo/devkeys/testkey.pem" container_certificate="vendor/foo/devkeys/test.x509.pem" container_private_key="vendor/foo/devkeys/test.pk8" partition="system" sign_tool="sign_myapex"`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9166,9 +9171,11 @@ func TestApexKeysTxtOverrides(t *testing.T) {
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
content := ctx.ModuleForTests("myapex", "android_common_myapex").Output("apexkeys.txt").BuildParams.Args["content"]
|
content := android.ContentFromFileRuleForTests(t, ctx,
|
||||||
|
ctx.ModuleForTests("myapex", "android_common_myapex").Output("apexkeys.txt"))
|
||||||
ensureContains(t, content, `name="myapex.apex" public_key="vendor/foo/devkeys/testkey.avbpubkey" private_key="vendor/foo/devkeys/testkey.pem" container_certificate="vendor/foo/devkeys/test.x509.pem" container_private_key="vendor/foo/devkeys/test.pk8" partition="system" sign_tool="sign_myapex"`)
|
ensureContains(t, content, `name="myapex.apex" public_key="vendor/foo/devkeys/testkey.avbpubkey" private_key="vendor/foo/devkeys/testkey.pem" container_certificate="vendor/foo/devkeys/test.x509.pem" container_private_key="vendor/foo/devkeys/test.pk8" partition="system" sign_tool="sign_myapex"`)
|
||||||
content = ctx.ModuleForTests("myapex_set", "android_common_myapex_set").Output("apexkeys.txt").BuildParams.Args["content"]
|
content = android.ContentFromFileRuleForTests(t, ctx,
|
||||||
|
ctx.ModuleForTests("myapex_set", "android_common_myapex_set").Output("apexkeys.txt"))
|
||||||
ensureContains(t, content, `name="myapex_set.apex" public_key="PRESIGNED" private_key="PRESIGNED" container_certificate="PRESIGNED" container_private_key="PRESIGNED" partition="system"`)
|
ensureContains(t, content, `name="myapex_set.apex" public_key="PRESIGNED" private_key="PRESIGNED" container_certificate="PRESIGNED" container_private_key="PRESIGNED" partition="system"`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -341,9 +341,9 @@ func checkVndkModule(t *testing.T, ctx *android.TestContext, name, subDir string
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkWriteFileOutput(t *testing.T, params android.TestingBuildParams, expected []string) {
|
func checkWriteFileOutput(t *testing.T, ctx *android.TestContext, params android.TestingBuildParams, expected []string) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
content := android.ContentFromFileRuleForTests(t, params)
|
content := android.ContentFromFileRuleForTests(t, ctx, params)
|
||||||
actual := strings.FieldsFunc(content, func(r rune) bool { return r == '\n' })
|
actual := strings.FieldsFunc(content, func(r rune) bool { return r == '\n' })
|
||||||
assertArrayString(t, actual, expected)
|
assertArrayString(t, actual, expected)
|
||||||
}
|
}
|
||||||
|
@ -351,7 +351,7 @@ func checkWriteFileOutput(t *testing.T, params android.TestingBuildParams, expec
|
||||||
func checkVndkOutput(t *testing.T, ctx *android.TestContext, output string, expected []string) {
|
func checkVndkOutput(t *testing.T, ctx *android.TestContext, output string, expected []string) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
vndkSnapshot := ctx.SingletonForTests("vndk-snapshot")
|
vndkSnapshot := ctx.SingletonForTests("vndk-snapshot")
|
||||||
checkWriteFileOutput(t, vndkSnapshot.Output(output), expected)
|
checkWriteFileOutput(t, ctx, vndkSnapshot.Output(output), expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkVndkLibrariesOutput(t *testing.T, ctx *android.TestContext, module string, expected []string) {
|
func checkVndkLibrariesOutput(t *testing.T, ctx *android.TestContext, module string, expected []string) {
|
||||||
|
@ -4302,7 +4302,7 @@ func TestAidlLibraryWithHeaders(t *testing.T) {
|
||||||
libfoo.Rule("aidl_library").Implicits,
|
libfoo.Rule("aidl_library").Implicits,
|
||||||
)
|
)
|
||||||
|
|
||||||
manifest := android.RuleBuilderSboxProtoForTests(t, libfoo.Output("aidl_library.sbox.textproto"))
|
manifest := android.RuleBuilderSboxProtoForTests(t, ctx, libfoo.Output("aidl_library.sbox.textproto"))
|
||||||
aidlCommand := manifest.Commands[0].GetCommand()
|
aidlCommand := manifest.Commands[0].GetCommand()
|
||||||
|
|
||||||
expectedAidlFlags := "-Ipackage_foo/a -Ipackage_bar/x"
|
expectedAidlFlags := "-Ipackage_foo/a -Ipackage_bar/x"
|
||||||
|
@ -4337,7 +4337,7 @@ func TestAidlFlagsPassedToTheAidlCompiler(t *testing.T) {
|
||||||
`)
|
`)
|
||||||
|
|
||||||
libfoo := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_static")
|
libfoo := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_static")
|
||||||
manifest := android.RuleBuilderSboxProtoForTests(t, libfoo.Output("aidl.sbox.textproto"))
|
manifest := android.RuleBuilderSboxProtoForTests(t, ctx.TestContext, libfoo.Output("aidl.sbox.textproto"))
|
||||||
aidlCommand := manifest.Commands[0].GetCommand()
|
aidlCommand := manifest.Commands[0].GetCommand()
|
||||||
expectedAidlFlag := "-Werror"
|
expectedAidlFlag := "-Werror"
|
||||||
if !strings.Contains(aidlCommand, expectedAidlFlag) {
|
if !strings.Contains(aidlCommand, expectedAidlFlag) {
|
||||||
|
@ -4388,7 +4388,7 @@ func TestAidlFlagsWithMinSdkVersion(t *testing.T) {
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
libfoo := ctx.ModuleForTests("libfoo", tc.variant)
|
libfoo := ctx.ModuleForTests("libfoo", tc.variant)
|
||||||
manifest := android.RuleBuilderSboxProtoForTests(t, libfoo.Output("aidl.sbox.textproto"))
|
manifest := android.RuleBuilderSboxProtoForTests(t, ctx, libfoo.Output("aidl.sbox.textproto"))
|
||||||
aidlCommand := manifest.Commands[0].GetCommand()
|
aidlCommand := manifest.Commands[0].GetCommand()
|
||||||
expectedAidlFlag := "--min_sdk_version=" + tc.expected
|
expectedAidlFlag := "--min_sdk_version=" + tc.expected
|
||||||
if !strings.Contains(aidlCommand, expectedAidlFlag) {
|
if !strings.Contains(aidlCommand, expectedAidlFlag) {
|
||||||
|
|
|
@ -67,7 +67,7 @@ func TestGen(t *testing.T) {
|
||||||
t.Errorf("missing aidl includes in global flags")
|
t.Errorf("missing aidl includes in global flags")
|
||||||
}
|
}
|
||||||
|
|
||||||
aidlCommand := android.RuleBuilderSboxProtoForTests(t, aidlManifest).Commands[0].GetCommand()
|
aidlCommand := android.RuleBuilderSboxProtoForTests(t, ctx, aidlManifest).Commands[0].GetCommand()
|
||||||
if !strings.Contains(aidlCommand, "-Isub") {
|
if !strings.Contains(aidlCommand, "-Isub") {
|
||||||
t.Errorf("aidl command for c.aidl should contain \"-Isub\", but was %q", aidlCommand)
|
t.Errorf("aidl command for c.aidl should contain \"-Isub\", but was %q", aidlCommand)
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,7 +178,7 @@ func TestCmdPrefix(t *testing.T) {
|
||||||
android.OptionalFixturePreparer(tt.preparer),
|
android.OptionalFixturePreparer(tt.preparer),
|
||||||
).RunTestWithBp(t, bp)
|
).RunTestWithBp(t, bp)
|
||||||
gen := result.ModuleForTests("gen", tt.variant)
|
gen := result.ModuleForTests("gen", tt.variant)
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, gen.Output("genrule.sbox.textproto"))
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, result.TestContext, gen.Output("genrule.sbox.textproto"))
|
||||||
cmd := *sboxProto.Commands[0].Command
|
cmd := *sboxProto.Commands[0].Command
|
||||||
android.AssertStringDoesContain(t, "incorrect CC_ARCH", cmd, "CC_ARCH="+tt.arch+" ")
|
android.AssertStringDoesContain(t, "incorrect CC_ARCH", cmd, "CC_ARCH="+tt.arch+" ")
|
||||||
android.AssertStringDoesContain(t, "incorrect CC_NATIVE_BRIDGE", cmd, "CC_NATIVE_BRIDGE="+tt.nativeBridge+" ")
|
android.AssertStringDoesContain(t, "incorrect CC_NATIVE_BRIDGE", cmd, "CC_NATIVE_BRIDGE="+tt.nativeBridge+" ")
|
||||||
|
|
|
@ -797,7 +797,7 @@ func AssertExcludeFromRecoverySnapshotIs(t *testing.T, ctx *android.TestContext,
|
||||||
func checkOverrides(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, jsonPath string, expected []string) {
|
func checkOverrides(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, jsonPath string, expected []string) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
out := singleton.MaybeOutput(jsonPath)
|
out := singleton.MaybeOutput(jsonPath)
|
||||||
content := android.ContentFromFileRuleForTests(t, out)
|
content := android.ContentFromFileRuleForTests(t, ctx, out)
|
||||||
|
|
||||||
var flags snapshotJsonFlags
|
var flags snapshotJsonFlags
|
||||||
if err := json.Unmarshal([]byte(content), &flags); err != nil {
|
if err := json.Unmarshal([]byte(content), &flags); err != nil {
|
||||||
|
|
|
@ -23,13 +23,14 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func checkJsonContents(t *testing.T, ctx android.TestingSingleton, jsonPath string, key string, value string) {
|
func checkJsonContents(t *testing.T, ctx *android.TestContext, snapshotSingleton android.TestingSingleton, jsonPath string, key string, value string) {
|
||||||
jsonOut := ctx.MaybeOutput(jsonPath)
|
jsonOut := snapshotSingleton.MaybeOutput(jsonPath)
|
||||||
if jsonOut.Rule == nil {
|
if jsonOut.Rule == nil {
|
||||||
t.Errorf("%q expected but not found", jsonPath)
|
t.Errorf("%q expected but not found", jsonPath)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !strings.Contains(jsonOut.Args["content"], fmt.Sprintf("%q:%q", key, value)) {
|
content := android.ContentFromFileRuleForTests(t, ctx, jsonOut)
|
||||||
|
if !strings.Contains(content, fmt.Sprintf("%q:%q", key, value)) {
|
||||||
t.Errorf("%q must include %q:%q but it only has %v", jsonPath, key, value, jsonOut.Args["content"])
|
t.Errorf("%q must include %q:%q but it only has %v", jsonPath, key, value, jsonOut.Args["content"])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -167,8 +168,8 @@ func TestVendorSnapshotCapture(t *testing.T) {
|
||||||
filepath.Join(staticDir, "libvendor_available.a.json"),
|
filepath.Join(staticDir, "libvendor_available.a.json"),
|
||||||
filepath.Join(staticDir, "libvendor_available.cfi.a.json"))
|
filepath.Join(staticDir, "libvendor_available.cfi.a.json"))
|
||||||
|
|
||||||
checkJsonContents(t, snapshotSingleton, filepath.Join(staticDir, "libb.a.json"), "MinSdkVersion", "apex_inherit")
|
checkJsonContents(t, ctx, snapshotSingleton, filepath.Join(staticDir, "libb.a.json"), "MinSdkVersion", "apex_inherit")
|
||||||
checkJsonContents(t, snapshotSingleton, filepath.Join(staticDir, "libvendor_available.a.json"), "MinSdkVersion", "29")
|
checkJsonContents(t, ctx, snapshotSingleton, filepath.Join(staticDir, "libvendor_available.a.json"), "MinSdkVersion", "29")
|
||||||
|
|
||||||
// For binary executables, all vendor:true and vendor_available modules are captured.
|
// For binary executables, all vendor:true and vendor_available modules are captured.
|
||||||
if archType == "arm64" {
|
if archType == "arm64" {
|
||||||
|
|
|
@ -543,7 +543,7 @@ func TestGenruleHashInputs(t *testing.T) {
|
||||||
for _, test := range testcases {
|
for _, test := range testcases {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
gen := result.ModuleForTests(test.name, "")
|
gen := result.ModuleForTests(test.name, "")
|
||||||
manifest := android.RuleBuilderSboxProtoForTests(t, gen.Output("genrule.sbox.textproto"))
|
manifest := android.RuleBuilderSboxProtoForTests(t, result.TestContext, gen.Output("genrule.sbox.textproto"))
|
||||||
hash := manifest.Commands[0].GetInputHash()
|
hash := manifest.Commands[0].GetInputHash()
|
||||||
|
|
||||||
android.AssertStringEquals(t, "hash", test.expectedHash, hash)
|
android.AssertStringEquals(t, "hash", test.expectedHash, hash)
|
||||||
|
|
|
@ -84,7 +84,7 @@ func TestDroidstubs(t *testing.T) {
|
||||||
for _, c := range testcases {
|
for _, c := range testcases {
|
||||||
m := ctx.ModuleForTests(c.moduleName, "android_common")
|
m := ctx.ModuleForTests(c.moduleName, "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest)
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx, manifest)
|
||||||
cmdline := String(sboxProto.Commands[0].Command)
|
cmdline := String(sboxProto.Commands[0].Command)
|
||||||
android.AssertStringContainsEquals(t, "api-versions generation flag", cmdline, "--generate-api-levels", c.generate_xml)
|
android.AssertStringContainsEquals(t, "api-versions generation flag", cmdline, "--generate-api-levels", c.generate_xml)
|
||||||
if c.expectedJarFilename != "" {
|
if c.expectedJarFilename != "" {
|
||||||
|
@ -133,7 +133,7 @@ func getAndroidJarPatternsForDroidstubs(t *testing.T, sdkType string) []string {
|
||||||
|
|
||||||
m := ctx.ModuleForTests("foo-stubs", "android_common")
|
m := ctx.ModuleForTests("foo-stubs", "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
cmd := String(android.RuleBuilderSboxProtoForTests(t, manifest).Commands[0].Command)
|
cmd := String(android.RuleBuilderSboxProtoForTests(t, ctx, manifest).Commands[0].Command)
|
||||||
r := regexp.MustCompile(`--android-jar-pattern [^ ]+/android.jar`)
|
r := regexp.MustCompile(`--android-jar-pattern [^ ]+/android.jar`)
|
||||||
return r.FindAllString(cmd, -1)
|
return r.FindAllString(cmd, -1)
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ func TestDroidstubsSandbox(t *testing.T) {
|
||||||
t.Errorf("Expected inputs %q, got %q", w, g)
|
t.Errorf("Expected inputs %q, got %q", w, g)
|
||||||
}
|
}
|
||||||
|
|
||||||
manifest := android.RuleBuilderSboxProtoForTests(t, m.Output("metalava.sbox.textproto"))
|
manifest := android.RuleBuilderSboxProtoForTests(t, ctx, m.Output("metalava.sbox.textproto"))
|
||||||
if g, w := manifest.Commands[0].GetCommand(), "reference __SBOX_SANDBOX_DIR__/out/.intermediates/foo/gen/foo.txt"; !strings.Contains(g, w) {
|
if g, w := manifest.Commands[0].GetCommand(), "reference __SBOX_SANDBOX_DIR__/out/.intermediates/foo/gen/foo.txt"; !strings.Contains(g, w) {
|
||||||
t.Errorf("Expected command to contain %q, got %q", w, g)
|
t.Errorf("Expected command to contain %q, got %q", w, g)
|
||||||
}
|
}
|
||||||
|
@ -302,7 +302,7 @@ func TestDroidstubsWithSdkExtensions(t *testing.T) {
|
||||||
})
|
})
|
||||||
m := ctx.ModuleForTests("baz-stubs", "android_common")
|
m := ctx.ModuleForTests("baz-stubs", "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
cmdline := String(android.RuleBuilderSboxProtoForTests(t, manifest).Commands[0].Command)
|
cmdline := String(android.RuleBuilderSboxProtoForTests(t, ctx, manifest).Commands[0].Command)
|
||||||
android.AssertStringDoesContain(t, "sdk-extensions-root present", cmdline, "--sdk-extensions-root sdk/extensions")
|
android.AssertStringDoesContain(t, "sdk-extensions-root present", cmdline, "--sdk-extensions-root sdk/extensions")
|
||||||
android.AssertStringDoesContain(t, "sdk-extensions-info present", cmdline, "--sdk-extensions-info sdk/extensions/info.txt")
|
android.AssertStringDoesContain(t, "sdk-extensions-info present", cmdline, "--sdk-extensions-info sdk/extensions/info.txt")
|
||||||
}
|
}
|
||||||
|
@ -434,6 +434,6 @@ func TestDroidstubsHideFlaggedApi(t *testing.T) {
|
||||||
|
|
||||||
m := result.ModuleForTests("foo", "android_common")
|
m := result.ModuleForTests("foo", "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
cmdline := String(android.RuleBuilderSboxProtoForTests(t, manifest).Commands[0].Command)
|
cmdline := String(android.RuleBuilderSboxProtoForTests(t, result.TestContext, manifest).Commands[0].Command)
|
||||||
android.AssertStringDoesContain(t, "flagged api hide command not included", cmdline, "--hide-annotation android.annotation.FlaggedApi")
|
android.AssertStringDoesContain(t, "flagged api hide command not included", cmdline, "--hide-annotation android.annotation.FlaggedApi")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1921,7 +1921,7 @@ func TestJavaApiLibraryAndProviderLink(t *testing.T) {
|
||||||
for _, c := range testcases {
|
for _, c := range testcases {
|
||||||
m := ctx.ModuleForTests(c.moduleName, "android_common")
|
m := ctx.ModuleForTests(c.moduleName, "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest)
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx.TestContext, manifest)
|
||||||
manifestCommand := sboxProto.Commands[0].GetCommand()
|
manifestCommand := sboxProto.Commands[0].GetCommand()
|
||||||
sourceFilesFlag := "--source-files " + strings.Join(c.sourceTextFileDirs, " ")
|
sourceFilesFlag := "--source-files " + strings.Join(c.sourceTextFileDirs, " ")
|
||||||
android.AssertStringDoesContain(t, "source text files not present", manifestCommand, sourceFilesFlag)
|
android.AssertStringDoesContain(t, "source text files not present", manifestCommand, sourceFilesFlag)
|
||||||
|
@ -2026,7 +2026,7 @@ func TestJavaApiLibraryAndDefaultsLink(t *testing.T) {
|
||||||
for _, c := range testcases {
|
for _, c := range testcases {
|
||||||
m := ctx.ModuleForTests(c.moduleName, "android_common")
|
m := ctx.ModuleForTests(c.moduleName, "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest)
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx.TestContext, manifest)
|
||||||
manifestCommand := sboxProto.Commands[0].GetCommand()
|
manifestCommand := sboxProto.Commands[0].GetCommand()
|
||||||
sourceFilesFlag := "--source-files " + strings.Join(c.sourceTextFileDirs, " ")
|
sourceFilesFlag := "--source-files " + strings.Join(c.sourceTextFileDirs, " ")
|
||||||
android.AssertStringDoesContain(t, "source text files not present", manifestCommand, sourceFilesFlag)
|
android.AssertStringDoesContain(t, "source text files not present", manifestCommand, sourceFilesFlag)
|
||||||
|
@ -2316,7 +2316,7 @@ func TestJavaApiLibraryFullApiSurfaceStub(t *testing.T) {
|
||||||
|
|
||||||
m := ctx.ModuleForTests("bar1", "android_common")
|
m := ctx.ModuleForTests("bar1", "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest)
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx.TestContext, manifest)
|
||||||
manifestCommand := sboxProto.Commands[0].GetCommand()
|
manifestCommand := sboxProto.Commands[0].GetCommand()
|
||||||
android.AssertStringDoesContain(t, "Command expected to contain full_api_surface_stub output jar", manifestCommand, "lib1.jar")
|
android.AssertStringDoesContain(t, "Command expected to contain full_api_surface_stub output jar", manifestCommand, "lib1.jar")
|
||||||
}
|
}
|
||||||
|
@ -2480,7 +2480,7 @@ func TestJavaApiContributionImport(t *testing.T) {
|
||||||
`)
|
`)
|
||||||
m := ctx.ModuleForTests("foo", "android_common")
|
m := ctx.ModuleForTests("foo", "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest)
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx.TestContext, manifest)
|
||||||
manifestCommand := sboxProto.Commands[0].GetCommand()
|
manifestCommand := sboxProto.Commands[0].GetCommand()
|
||||||
sourceFilesFlag := "--source-files current.txt"
|
sourceFilesFlag := "--source-files current.txt"
|
||||||
android.AssertStringDoesContain(t, "source text files not present", manifestCommand, sourceFilesFlag)
|
android.AssertStringDoesContain(t, "source text files not present", manifestCommand, sourceFilesFlag)
|
||||||
|
@ -2501,7 +2501,7 @@ func TestJavaApiLibraryApiFilesSorting(t *testing.T) {
|
||||||
`)
|
`)
|
||||||
m := ctx.ModuleForTests("foo", "android_common")
|
m := ctx.ModuleForTests("foo", "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest)
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx, manifest)
|
||||||
manifestCommand := sboxProto.Commands[0].GetCommand()
|
manifestCommand := sboxProto.Commands[0].GetCommand()
|
||||||
|
|
||||||
// Api files are sorted from the narrowest api scope to the widest api scope.
|
// Api files are sorted from the narrowest api scope to the widest api scope.
|
||||||
|
@ -2543,7 +2543,7 @@ func TestSdkLibraryProvidesSystemModulesToApiLibrary(t *testing.T) {
|
||||||
`)
|
`)
|
||||||
m := result.ModuleForTests(apiScopePublic.apiLibraryModuleName("foo"), "android_common")
|
m := result.ModuleForTests(apiScopePublic.apiLibraryModuleName("foo"), "android_common")
|
||||||
manifest := m.Output("metalava.sbox.textproto")
|
manifest := m.Output("metalava.sbox.textproto")
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, manifest)
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, result.TestContext, manifest)
|
||||||
manifestCommand := sboxProto.Commands[0].GetCommand()
|
manifestCommand := sboxProto.Commands[0].GetCommand()
|
||||||
classPathFlag := "--classpath __SBOX_SANDBOX_DIR__/out/.intermediates/bar/android_common/turbine-combined/bar.jar"
|
classPathFlag := "--classpath __SBOX_SANDBOX_DIR__/out/.intermediates/bar/android_common/turbine-combined/bar.jar"
|
||||||
android.AssertStringDoesContain(t, "command expected to contain classpath flag", manifestCommand, classPathFlag)
|
android.AssertStringDoesContain(t, "command expected to contain classpath flag", manifestCommand, classPathFlag)
|
||||||
|
|
|
@ -39,7 +39,7 @@ func TestJavaLint(t *testing.T) {
|
||||||
|
|
||||||
foo := ctx.ModuleForTests("foo", "android_common")
|
foo := ctx.ModuleForTests("foo", "android_common")
|
||||||
|
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, foo.Output("lint.sbox.textproto"))
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx, foo.Output("lint.sbox.textproto"))
|
||||||
if !strings.Contains(*sboxProto.Commands[0].Command, "--baseline lint-baseline.xml") {
|
if !strings.Contains(*sboxProto.Commands[0].Command, "--baseline lint-baseline.xml") {
|
||||||
t.Error("did not pass --baseline flag")
|
t.Error("did not pass --baseline flag")
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ func TestJavaLintWithoutBaseline(t *testing.T) {
|
||||||
|
|
||||||
foo := ctx.ModuleForTests("foo", "android_common")
|
foo := ctx.ModuleForTests("foo", "android_common")
|
||||||
|
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, foo.Output("lint.sbox.textproto"))
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx, foo.Output("lint.sbox.textproto"))
|
||||||
if strings.Contains(*sboxProto.Commands[0].Command, "--baseline") {
|
if strings.Contains(*sboxProto.Commands[0].Command, "--baseline") {
|
||||||
t.Error("passed --baseline flag for non existent file")
|
t.Error("passed --baseline flag for non existent file")
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ func TestJavaLintUsesCorrectBpConfig(t *testing.T) {
|
||||||
|
|
||||||
foo := ctx.ModuleForTests("foo", "android_common")
|
foo := ctx.ModuleForTests("foo", "android_common")
|
||||||
|
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, foo.Output("lint.sbox.textproto"))
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, ctx, foo.Output("lint.sbox.textproto"))
|
||||||
if !strings.Contains(*sboxProto.Commands[0].Command, "--baseline mybaseline.xml") {
|
if !strings.Contains(*sboxProto.Commands[0].Command, "--baseline mybaseline.xml") {
|
||||||
t.Error("did not use the correct file for baseline")
|
t.Error("did not use the correct file for baseline")
|
||||||
}
|
}
|
||||||
|
@ -276,7 +276,7 @@ func TestJavaLintDatabaseSelectionFull(t *testing.T) {
|
||||||
RunTestWithBp(t, thisBp)
|
RunTestWithBp(t, thisBp)
|
||||||
|
|
||||||
foo := result.ModuleForTests("foo", "android_common")
|
foo := result.ModuleForTests("foo", "android_common")
|
||||||
sboxProto := android.RuleBuilderSboxProtoForTests(t, foo.Output("lint.sbox.textproto"))
|
sboxProto := android.RuleBuilderSboxProtoForTests(t, result.TestContext, foo.Output("lint.sbox.textproto"))
|
||||||
if !strings.Contains(*sboxProto.Commands[0].Command, "/"+testCase.expected_file) {
|
if !strings.Contains(*sboxProto.Commands[0].Command, "/"+testCase.expected_file) {
|
||||||
t.Error("did not use full api database for case", testCase)
|
t.Error("did not use full api database for case", testCase)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue