Merge "Add TestContext parameter to ContentFromFileRuleForTests" into main
This commit is contained in:
@@ -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)
|
||||||
|
@@ -597,13 +597,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))")
|
||||||
@@ -1283,10 +1285,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)")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2032,7 +2036,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",
|
||||||
@@ -8156,7 +8161,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"}]}`)
|
||||||
@@ -8183,7 +8188,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)
|
||||||
@@ -9128,7 +9133,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"`)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -9168,9 +9173,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)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user