Merge "Remove VNDK information from Rust, etc, and sysprop tests" into main
This commit is contained in:
commit
683d7316cd
6 changed files with 32 additions and 223 deletions
|
@ -11,7 +11,7 @@ import (
|
|||
func TestRustAconfigLibrary(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
PrepareForTestWithAconfigBuildComponents,
|
||||
rust.PrepareForTestWithRustIncludeVndk,
|
||||
rust.PrepareForIntegrationTestWithRust,
|
||||
android.PrepareForTestWithArchMutator,
|
||||
android.PrepareForTestWithDefaults,
|
||||
android.PrepareForTestWithPrebuilts,
|
||||
|
@ -100,7 +100,7 @@ func testRustCodegenModeHelper(t *testing.T, bpMode string, ruleMode string) {
|
|||
t.Helper()
|
||||
result := android.GroupFixturePreparers(
|
||||
PrepareForTestWithAconfigBuildComponents,
|
||||
rust.PrepareForTestWithRustIncludeVndk).
|
||||
rust.PrepareForIntegrationTestWithRust).
|
||||
ExtendWithErrorHandler(android.FixtureExpectsNoErrors).
|
||||
RunTestWithBp(t, fmt.Sprintf(`
|
||||
rust_library {
|
||||
|
@ -162,7 +162,7 @@ func testIncorrectRustCodegenModeHelper(t *testing.T, bpMode string, err string)
|
|||
t.Helper()
|
||||
android.GroupFixturePreparers(
|
||||
PrepareForTestWithAconfigBuildComponents,
|
||||
rust.PrepareForTestWithRustIncludeVndk).
|
||||
rust.PrepareForIntegrationTestWithRust).
|
||||
ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern(err)).
|
||||
RunTestWithBp(t, fmt.Sprintf(`
|
||||
rust_library {
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
package etc
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
@ -23,7 +22,6 @@ import (
|
|||
"github.com/google/blueprint/proptools"
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/snapshot"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
|
@ -40,18 +38,6 @@ var prepareForPrebuiltEtcTest = android.GroupFixturePreparers(
|
|||
}),
|
||||
)
|
||||
|
||||
var prepareForPrebuiltEtcSnapshotTest = android.GroupFixturePreparers(
|
||||
prepareForPrebuiltEtcTest,
|
||||
android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
|
||||
snapshot.VendorSnapshotImageSingleton.Init(ctx)
|
||||
snapshot.RecoverySnapshotImageSingleton.Init(ctx)
|
||||
}),
|
||||
android.FixtureModifyConfig(func(config android.Config) {
|
||||
config.TestProductVariables.DeviceVndkVersion = proptools.StringPtr("current")
|
||||
config.TestProductVariables.RecoverySnapshotVersion = proptools.StringPtr("current")
|
||||
}),
|
||||
)
|
||||
|
||||
func TestPrebuiltEtcVariants(t *testing.T) {
|
||||
result := prepareForPrebuiltEtcTest.RunTestWithBp(t, `
|
||||
prebuilt_etc {
|
||||
|
@ -415,110 +401,3 @@ func TestPrebuiltRFSADirPath(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func checkIfSnapshotTaken(t *testing.T, result *android.TestResult, image string, moduleName string) {
|
||||
checkIfSnapshotExistAsExpected(t, result, image, moduleName, true)
|
||||
}
|
||||
|
||||
func checkIfSnapshotNotTaken(t *testing.T, result *android.TestResult, image string, moduleName string) {
|
||||
checkIfSnapshotExistAsExpected(t, result, image, moduleName, false)
|
||||
}
|
||||
|
||||
func checkIfSnapshotExistAsExpected(t *testing.T, result *android.TestResult, image string, moduleName string, expectToExist bool) {
|
||||
snapshotSingleton := result.SingletonForTests(image + "-snapshot")
|
||||
archType := "arm64"
|
||||
archVariant := "armv8-a"
|
||||
archDir := fmt.Sprintf("arch-%s", archType)
|
||||
|
||||
snapshotDir := fmt.Sprintf("%s-snapshot", image)
|
||||
snapshotVariantPath := filepath.Join(snapshotDir, archType)
|
||||
outputDir := filepath.Join(snapshotVariantPath, archDir, "etc")
|
||||
imageVariant := ""
|
||||
if image == "recovery" {
|
||||
imageVariant = "recovery_"
|
||||
}
|
||||
mod := result.ModuleForTests(moduleName, fmt.Sprintf("android_%s%s_%s", imageVariant, archType, archVariant))
|
||||
outputFiles := mod.OutputFiles(t, "")
|
||||
if len(outputFiles) != 1 {
|
||||
t.Errorf("%q must have single output\n", moduleName)
|
||||
return
|
||||
}
|
||||
snapshotPath := filepath.Join(outputDir, moduleName)
|
||||
|
||||
if expectToExist {
|
||||
out := snapshotSingleton.Output(snapshotPath)
|
||||
|
||||
if out.Input.String() != outputFiles[0].String() {
|
||||
t.Errorf("The input of snapshot %q must be %q, but %q", "prebuilt_vendor", out.Input.String(), outputFiles[0])
|
||||
}
|
||||
|
||||
snapshotJsonPath := snapshotPath + ".json"
|
||||
|
||||
if snapshotSingleton.MaybeOutput(snapshotJsonPath).Rule == nil {
|
||||
t.Errorf("%q expected but not found", snapshotJsonPath)
|
||||
}
|
||||
} else {
|
||||
out := snapshotSingleton.MaybeOutput(snapshotPath)
|
||||
if out.Rule != nil {
|
||||
t.Errorf("There must be no rule for module %q output file %q", moduleName, outputFiles[0])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrebuiltTakeSnapshot(t *testing.T) {
|
||||
var testBp = `
|
||||
prebuilt_etc {
|
||||
name: "prebuilt_vendor",
|
||||
src: "foo.conf",
|
||||
vendor: true,
|
||||
}
|
||||
|
||||
prebuilt_etc {
|
||||
name: "prebuilt_vendor_indirect",
|
||||
src: "foo.conf",
|
||||
vendor: true,
|
||||
}
|
||||
|
||||
prebuilt_etc {
|
||||
name: "prebuilt_recovery",
|
||||
src: "bar.conf",
|
||||
recovery: true,
|
||||
}
|
||||
|
||||
prebuilt_etc {
|
||||
name: "prebuilt_recovery_indirect",
|
||||
src: "bar.conf",
|
||||
recovery: true,
|
||||
}
|
||||
`
|
||||
|
||||
t.Run("prebuilt: vendor and recovery snapshot", func(t *testing.T) {
|
||||
result := prepareForPrebuiltEtcSnapshotTest.RunTestWithBp(t, testBp)
|
||||
|
||||
checkIfSnapshotTaken(t, result, "vendor", "prebuilt_vendor")
|
||||
checkIfSnapshotTaken(t, result, "vendor", "prebuilt_vendor_indirect")
|
||||
checkIfSnapshotTaken(t, result, "recovery", "prebuilt_recovery")
|
||||
checkIfSnapshotTaken(t, result, "recovery", "prebuilt_recovery_indirect")
|
||||
})
|
||||
|
||||
t.Run("prebuilt: directed snapshot", func(t *testing.T) {
|
||||
prepareForPrebuiltEtcDirectedSnapshotTest := android.GroupFixturePreparers(
|
||||
prepareForPrebuiltEtcSnapshotTest,
|
||||
android.FixtureModifyConfig(func(config android.Config) {
|
||||
config.TestProductVariables.DirectedVendorSnapshot = true
|
||||
config.TestProductVariables.VendorSnapshotModules = make(map[string]bool)
|
||||
config.TestProductVariables.VendorSnapshotModules["prebuilt_vendor"] = true
|
||||
config.TestProductVariables.DirectedRecoverySnapshot = true
|
||||
config.TestProductVariables.RecoverySnapshotModules = make(map[string]bool)
|
||||
config.TestProductVariables.RecoverySnapshotModules["prebuilt_recovery"] = true
|
||||
}),
|
||||
)
|
||||
|
||||
result := prepareForPrebuiltEtcDirectedSnapshotTest.RunTestWithBp(t, testBp)
|
||||
|
||||
checkIfSnapshotTaken(t, result, "vendor", "prebuilt_vendor")
|
||||
checkIfSnapshotNotTaken(t, result, "vendor", "prebuilt_vendor_indirect")
|
||||
checkIfSnapshotTaken(t, result, "recovery", "prebuilt_recovery")
|
||||
checkIfSnapshotNotTaken(t, result, "recovery", "prebuilt_recovery_indirect")
|
||||
})
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ import (
|
|||
|
||||
// Test that cc modules can link against vendor_available rust_ffi_static libraries.
|
||||
func TestVendorLinkage(t *testing.T) {
|
||||
ctx := testRustVndk(t, `
|
||||
ctx := testRust(t, `
|
||||
cc_binary {
|
||||
name: "fizz_vendor",
|
||||
static_libs: ["libfoo_vendor"],
|
||||
|
@ -38,7 +38,7 @@ func TestVendorLinkage(t *testing.T) {
|
|||
}
|
||||
`)
|
||||
|
||||
vendorBinary := ctx.ModuleForTests("fizz_vendor", "android_vendor.29_arm64_armv8-a").Module().(*cc.Module)
|
||||
vendorBinary := ctx.ModuleForTests("fizz_vendor", "android_vendor_arm64_armv8-a").Module().(*cc.Module)
|
||||
|
||||
if !android.InList("libfoo_vendor.vendor", vendorBinary.Properties.AndroidMkStaticLibs) {
|
||||
t.Errorf("vendorBinary should have a dependency on libfoo_vendor: %#v", vendorBinary.Properties.AndroidMkStaticLibs)
|
||||
|
@ -46,8 +46,8 @@ func TestVendorLinkage(t *testing.T) {
|
|||
}
|
||||
|
||||
// Test that variants which use the vndk emit the appropriate cfg flag.
|
||||
func TestImageVndkCfgFlag(t *testing.T) {
|
||||
ctx := testRustVndk(t, `
|
||||
func TestImageCfgFlag(t *testing.T) {
|
||||
ctx := testRust(t, `
|
||||
rust_ffi_static {
|
||||
name: "libfoo",
|
||||
crate_name: "foo",
|
||||
|
@ -57,7 +57,7 @@ func TestImageVndkCfgFlag(t *testing.T) {
|
|||
}
|
||||
`)
|
||||
|
||||
vendor := ctx.ModuleForTests("libfoo", "android_vendor.29_arm64_armv8-a_static").Rule("rustc")
|
||||
vendor := ctx.ModuleForTests("libfoo", "android_vendor_arm64_armv8-a_static").Rule("rustc")
|
||||
|
||||
if !strings.Contains(vendor.Args["rustcFlags"], "--cfg 'android_vndk'") {
|
||||
t.Errorf("missing \"--cfg 'android_vndk'\" for libfoo vendor variant, rustcFlags: %#v", vendor.Args["rustcFlags"])
|
||||
|
@ -69,7 +69,7 @@ func TestImageVndkCfgFlag(t *testing.T) {
|
|||
t.Errorf("unexpected \"--cfg 'android_product'\" for libfoo vendor variant, rustcFlags: %#v", vendor.Args["rustcFlags"])
|
||||
}
|
||||
|
||||
product := ctx.ModuleForTests("libfoo", "android_product.29_arm64_armv8-a_static").Rule("rustc")
|
||||
product := ctx.ModuleForTests("libfoo", "android_product_arm64_armv8-a_static").Rule("rustc")
|
||||
if !strings.Contains(product.Args["rustcFlags"], "--cfg 'android_vndk'") {
|
||||
t.Errorf("missing \"--cfg 'android_vndk'\" for libfoo product variant, rustcFlags: %#v", product.Args["rustcFlags"])
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ func TestImageVndkCfgFlag(t *testing.T) {
|
|||
|
||||
// Test that cc modules can link against vendor_ramdisk_available rust_ffi_static libraries.
|
||||
func TestVendorRamdiskLinkage(t *testing.T) {
|
||||
ctx := testRustVndk(t, `
|
||||
ctx := testRust(t, `
|
||||
cc_library_static {
|
||||
name: "libcc_vendor_ramdisk",
|
||||
static_libs: ["libfoo_vendor_ramdisk"],
|
||||
|
@ -119,7 +119,7 @@ func TestVendorRamdiskLinkage(t *testing.T) {
|
|||
|
||||
// Test that prebuilt libraries cannot be made vendor available.
|
||||
func TestForbiddenVendorLinkage(t *testing.T) {
|
||||
testRustVndkError(t, "Rust prebuilt modules not supported for non-system images.", `
|
||||
testRustError(t, "Rust prebuilt modules not supported for non-system images.", `
|
||||
rust_prebuilt_library {
|
||||
name: "librust_prebuilt",
|
||||
crate_name: "rust_prebuilt",
|
||||
|
|
|
@ -37,11 +37,7 @@ var prepareForRustTest = android.GroupFixturePreparers(
|
|||
|
||||
genrule.PrepareForTestWithGenRuleBuildComponents,
|
||||
|
||||
PrepareForTestWithRustIncludeVndk,
|
||||
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
variables.DeviceVndkVersion = StringPtr("current")
|
||||
variables.Platform_vndk_version = StringPtr("29")
|
||||
}),
|
||||
PrepareForIntegrationTestWithRust,
|
||||
)
|
||||
|
||||
var rustMockedFiles = android.MockFS{
|
||||
|
@ -73,60 +69,21 @@ func testRust(t *testing.T, bp string) *android.TestContext {
|
|||
return result.TestContext
|
||||
}
|
||||
|
||||
func testRustVndk(t *testing.T, bp string) *android.TestContext {
|
||||
return testRustVndkFs(t, bp, rustMockedFiles)
|
||||
}
|
||||
|
||||
const (
|
||||
sharedVendorVariant = "android_vendor.29_arm64_armv8-a_shared"
|
||||
rlibVendorVariant = "android_vendor.29_arm64_armv8-a_rlib_rlib-std"
|
||||
rlibDylibStdVendorVariant = "android_vendor.29_arm64_armv8-a_rlib_rlib-std"
|
||||
dylibVendorVariant = "android_vendor.29_arm64_armv8-a_dylib"
|
||||
sharedVendorVariant = "android_vendor_arm64_armv8-a_shared"
|
||||
rlibVendorVariant = "android_vendor_arm64_armv8-a_rlib_rlib-std"
|
||||
rlibDylibStdVendorVariant = "android_vendor_arm64_armv8-a_rlib_rlib-std"
|
||||
dylibVendorVariant = "android_vendor_arm64_armv8-a_dylib"
|
||||
sharedRecoveryVariant = "android_recovery_arm64_armv8-a_shared"
|
||||
rlibRecoveryVariant = "android_recovery_arm64_armv8-a_rlib_dylib-std"
|
||||
rlibRlibStdRecoveryVariant = "android_recovery_arm64_armv8-a_rlib_rlib-std"
|
||||
dylibRecoveryVariant = "android_recovery_arm64_armv8-a_dylib"
|
||||
binaryCoreVariant = "android_arm64_armv8-a"
|
||||
binaryVendorVariant = "android_vendor.29_arm64_armv8-a"
|
||||
binaryProductVariant = "android_product.29_arm64_armv8-a"
|
||||
binaryVendorVariant = "android_vendor_arm64_armv8-a"
|
||||
binaryProductVariant = "android_product_arm64_armv8-a"
|
||||
binaryRecoveryVariant = "android_recovery_arm64_armv8-a"
|
||||
)
|
||||
|
||||
func testRustVndkFs(t *testing.T, bp string, fs android.MockFS) *android.TestContext {
|
||||
return testRustVndkFsVersions(t, bp, fs, "current", "current", "29")
|
||||
}
|
||||
|
||||
func testRustVndkFsVersions(t *testing.T, bp string, fs android.MockFS, device_version, product_version, vndk_version string) *android.TestContext {
|
||||
skipTestIfOsNotSupported(t)
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForRustTest,
|
||||
fs.AddToFixture(),
|
||||
android.FixtureModifyProductVariables(
|
||||
func(variables android.FixtureProductVariables) {
|
||||
variables.DeviceVndkVersion = StringPtr(device_version)
|
||||
variables.Platform_vndk_version = StringPtr(vndk_version)
|
||||
},
|
||||
),
|
||||
).RunTestWithBp(t, bp)
|
||||
return result.TestContext
|
||||
}
|
||||
|
||||
func testRustRecoveryFsVersions(t *testing.T, bp string, fs android.MockFS, device_version, vndk_version, recovery_version string) *android.TestContext {
|
||||
skipTestIfOsNotSupported(t)
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForRustTest,
|
||||
fs.AddToFixture(),
|
||||
android.FixtureModifyProductVariables(
|
||||
func(variables android.FixtureProductVariables) {
|
||||
variables.DeviceVndkVersion = StringPtr(device_version)
|
||||
variables.RecoverySnapshotVersion = StringPtr(recovery_version)
|
||||
variables.Platform_vndk_version = StringPtr(vndk_version)
|
||||
},
|
||||
),
|
||||
).RunTestWithBp(t, bp)
|
||||
return result.TestContext
|
||||
}
|
||||
|
||||
// testRustCov returns a TestContext in which a basic environment has been
|
||||
// setup. This environment explicitly enables coverage.
|
||||
func testRustCov(t *testing.T, bp string) *android.TestContext {
|
||||
|
@ -158,27 +115,6 @@ func testRustError(t *testing.T, pattern string, bp string) {
|
|||
RunTestWithBp(t, bp)
|
||||
}
|
||||
|
||||
// testRustVndkError is similar to testRustError, but can be used to test VNDK-related errors.
|
||||
func testRustVndkError(t *testing.T, pattern string, bp string) {
|
||||
testRustVndkFsError(t, pattern, bp, rustMockedFiles)
|
||||
}
|
||||
|
||||
func testRustVndkFsError(t *testing.T, pattern string, bp string, fs android.MockFS) {
|
||||
skipTestIfOsNotSupported(t)
|
||||
android.GroupFixturePreparers(
|
||||
prepareForRustTest,
|
||||
fs.AddToFixture(),
|
||||
android.FixtureModifyProductVariables(
|
||||
func(variables android.FixtureProductVariables) {
|
||||
variables.DeviceVndkVersion = StringPtr("current")
|
||||
variables.Platform_vndk_version = StringPtr("VER")
|
||||
},
|
||||
),
|
||||
).
|
||||
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(pattern)).
|
||||
RunTestWithBp(t, bp)
|
||||
}
|
||||
|
||||
// testRustCtx is used to build a particular test environment. Unless your
|
||||
// tests requires a specific setup, prefer the wrapping functions: testRust,
|
||||
// testRustCov or testRustError.
|
||||
|
|
|
@ -43,10 +43,6 @@ var PrepareForTestWithRustDefaultModules = android.GroupFixturePreparers(
|
|||
// Preparer that will allow use of all rust modules fully.
|
||||
var PrepareForIntegrationTestWithRust = android.GroupFixturePreparers(
|
||||
PrepareForTestWithRustDefaultModules,
|
||||
)
|
||||
|
||||
var PrepareForTestWithRustIncludeVndk = android.GroupFixturePreparers(
|
||||
PrepareForIntegrationTestWithRust,
|
||||
cc.PrepareForIntegrationTestWithCc,
|
||||
)
|
||||
|
||||
|
|
|
@ -134,8 +134,6 @@ func test(t *testing.T, bp string) *android.TestResult {
|
|||
PrepareForTestWithSyspropBuildComponents,
|
||||
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
variables.DeviceSystemSdkVersions = []string{"28"}
|
||||
variables.DeviceVndkVersion = proptools.StringPtr("current")
|
||||
variables.Platform_vndk_version = proptools.StringPtr("29")
|
||||
variables.DeviceCurrentApiLevelForVendorModules = proptools.StringPtr("28")
|
||||
}),
|
||||
java.FixtureWithPrebuiltApis(map[string][]string{
|
||||
|
@ -258,10 +256,10 @@ func TestSyspropLibrary(t *testing.T) {
|
|||
|
||||
// Check for generated cc_library
|
||||
for _, variant := range []string{
|
||||
"android_vendor.29_arm_armv7-a-neon_shared",
|
||||
"android_vendor.29_arm_armv7-a-neon_static",
|
||||
"android_vendor.29_arm64_armv8-a_shared",
|
||||
"android_vendor.29_arm64_armv8-a_static",
|
||||
"android_vendor_arm_armv7-a-neon_shared",
|
||||
"android_vendor_arm_armv7-a-neon_static",
|
||||
"android_vendor_arm64_armv8-a_shared",
|
||||
"android_vendor_arm64_armv8-a_static",
|
||||
} {
|
||||
result.ModuleForTests("libsysprop-platform", variant)
|
||||
result.ModuleForTests("libsysprop-vendor", variant)
|
||||
|
@ -270,10 +268,10 @@ func TestSyspropLibrary(t *testing.T) {
|
|||
|
||||
// product variant of vendor-owned sysprop_library
|
||||
for _, variant := range []string{
|
||||
"android_product.29_arm_armv7-a-neon_shared",
|
||||
"android_product.29_arm_armv7-a-neon_static",
|
||||
"android_product.29_arm64_armv8-a_shared",
|
||||
"android_product.29_arm64_armv8-a_static",
|
||||
"android_product_arm_armv7-a-neon_shared",
|
||||
"android_product_arm_armv7-a-neon_static",
|
||||
"android_product_arm64_armv8-a_shared",
|
||||
"android_product_arm64_armv8-a_static",
|
||||
} {
|
||||
result.ModuleForTests("libsysprop-vendor-on-product", variant)
|
||||
}
|
||||
|
@ -296,16 +294,16 @@ func TestSyspropLibrary(t *testing.T) {
|
|||
|
||||
// Check for exported includes
|
||||
coreVariant := "android_arm64_armv8-a_static"
|
||||
vendorVariant := "android_vendor.29_arm64_armv8-a_static"
|
||||
productVariant := "android_product.29_arm64_armv8-a_static"
|
||||
vendorVariant := "android_vendor_arm64_armv8-a_static"
|
||||
productVariant := "android_product_arm64_armv8-a_static"
|
||||
|
||||
platformInternalPath := "libsysprop-platform/android_arm64_armv8-a_static/gen/sysprop/include"
|
||||
platformPublicVendorPath := "libsysprop-platform/android_vendor.29_arm64_armv8-a_static/gen/sysprop/public/include"
|
||||
platformPublicVendorPath := "libsysprop-platform/android_vendor_arm64_armv8-a_static/gen/sysprop/public/include"
|
||||
|
||||
platformOnProductPath := "libsysprop-platform-on-product/android_product.29_arm64_armv8-a_static/gen/sysprop/public/include"
|
||||
platformOnProductPath := "libsysprop-platform-on-product/android_product_arm64_armv8-a_static/gen/sysprop/public/include"
|
||||
|
||||
vendorInternalPath := "libsysprop-vendor/android_vendor.29_arm64_armv8-a_static/gen/sysprop/include"
|
||||
vendorOnProductPath := "libsysprop-vendor-on-product/android_product.29_arm64_armv8-a_static/gen/sysprop/public/include"
|
||||
vendorInternalPath := "libsysprop-vendor/android_vendor_arm64_armv8-a_static/gen/sysprop/include"
|
||||
vendorOnProductPath := "libsysprop-vendor-on-product/android_product_arm64_armv8-a_static/gen/sysprop/public/include"
|
||||
|
||||
platformClient := result.ModuleForTests("cc-client-platform", coreVariant)
|
||||
platformFlags := platformClient.Rule("cc").Args["cFlags"]
|
||||
|
|
Loading…
Reference in a new issue