Merge "Convert android/arch_test.go to test fixtures"

This commit is contained in:
Paul Duffin
2021-03-18 08:55:29 +00:00
committed by Gerrit Code Review
2 changed files with 36 additions and 48 deletions

View File

@@ -273,6 +273,13 @@ func archTestModuleFactory() Module {
return m return m
} }
var prepareForArchTest = GroupFixturePreparers(
PrepareForTestWithArchMutator,
FixtureRegisterWithContext(func(ctx RegistrationContext) {
ctx.RegisterModuleType("module", archTestModuleFactory)
}),
)
func TestArchMutator(t *testing.T) { func TestArchMutator(t *testing.T) {
var buildOSVariants []string var buildOSVariants []string
var buildOS32Variants []string var buildOS32Variants []string
@@ -309,7 +316,7 @@ func TestArchMutator(t *testing.T) {
testCases := []struct { testCases := []struct {
name string name string
config func(Config) preparer FixturePreparer
fooVariants []string fooVariants []string
barVariants []string barVariants []string
bazVariants []string bazVariants []string
@@ -317,7 +324,7 @@ func TestArchMutator(t *testing.T) {
}{ }{
{ {
name: "normal", name: "normal",
config: nil, preparer: nil,
fooVariants: []string{"android_arm64_armv8-a", "android_arm_armv7-a-neon"}, fooVariants: []string{"android_arm64_armv8-a", "android_arm_armv7-a-neon"},
barVariants: append(buildOSVariants, "android_arm64_armv8-a", "android_arm_armv7-a-neon"), barVariants: append(buildOSVariants, "android_arm64_armv8-a", "android_arm_armv7-a-neon"),
bazVariants: nil, bazVariants: nil,
@@ -325,11 +332,11 @@ func TestArchMutator(t *testing.T) {
}, },
{ {
name: "host-only", name: "host-only",
config: func(config Config) { preparer: FixtureModifyConfig(func(config Config) {
config.BuildOSTarget = Target{} config.BuildOSTarget = Target{}
config.BuildOSCommonTarget = Target{} config.BuildOSCommonTarget = Target{}
config.Targets[Android] = nil config.Targets[Android] = nil
}, }),
fooVariants: nil, fooVariants: nil,
barVariants: buildOSVariants, barVariants: buildOSVariants,
bazVariants: nil, bazVariants: nil,
@@ -351,19 +358,13 @@ func TestArchMutator(t *testing.T) {
for _, tt := range testCases { for _, tt := range testCases {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
config := TestArchConfig(buildDir, nil, bp, nil) result := emptyTestFixtureFactory.RunTest(t,
prepareForArchTest,
ctx := NewTestArchContext(config) // Test specific preparer
ctx.RegisterModuleType("module", archTestModuleFactory) OptionalFixturePreparer(tt.preparer),
ctx.Register() FixtureWithRootAndroidBp(bp),
if tt.config != nil { )
tt.config(config) ctx := result.TestContext
}
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
FailIfErrored(t, errs)
_, errs = ctx.PrepareBuildActions(config)
FailIfErrored(t, errs)
if g, w := enabledVariants(ctx, "foo"), tt.fooVariants; !reflect.DeepEqual(w, g) { if g, w := enabledVariants(ctx, "foo"), tt.fooVariants; !reflect.DeepEqual(w, g) {
t.Errorf("want foo variants:\n%q\ngot:\n%q\n", w, g) t.Errorf("want foo variants:\n%q\ngot:\n%q\n", w, g)
@@ -412,14 +413,14 @@ func TestArchMutatorNativeBridge(t *testing.T) {
testCases := []struct { testCases := []struct {
name string name string
config func(Config) preparer FixturePreparer
fooVariants []string fooVariants []string
barVariants []string barVariants []string
bazVariants []string bazVariants []string
}{ }{
{ {
name: "normal", name: "normal",
config: nil, preparer: nil,
fooVariants: []string{"android_x86_64_silvermont", "android_x86_silvermont"}, fooVariants: []string{"android_x86_64_silvermont", "android_x86_silvermont"},
barVariants: []string{"android_x86_64_silvermont", "android_native_bridge_arm64_armv8-a", "android_x86_silvermont", "android_native_bridge_arm_armv7-a-neon"}, barVariants: []string{"android_x86_64_silvermont", "android_native_bridge_arm64_armv8-a", "android_x86_silvermont", "android_native_bridge_arm_armv7-a-neon"},
bazVariants: []string{"android_native_bridge_arm64_armv8-a", "android_native_bridge_arm_armv7-a-neon"}, bazVariants: []string{"android_native_bridge_arm64_armv8-a", "android_native_bridge_arm_armv7-a-neon"},
@@ -440,19 +441,23 @@ func TestArchMutatorNativeBridge(t *testing.T) {
for _, tt := range testCases { for _, tt := range testCases {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
config := TestArchConfigNativeBridge(buildDir, nil, bp, nil) result := emptyTestFixtureFactory.RunTest(t,
prepareForArchTest,
// Test specific preparer
OptionalFixturePreparer(tt.preparer),
// Prepare for native bridge test
FixtureModifyConfig(func(config Config) {
config.Targets[Android] = []Target{
{Android, Arch{ArchType: X86_64, ArchVariant: "silvermont", Abi: []string{"arm64-v8a"}}, NativeBridgeDisabled, "", "", false},
{Android, Arch{ArchType: X86, ArchVariant: "silvermont", Abi: []string{"armeabi-v7a"}}, NativeBridgeDisabled, "", "", false},
{Android, Arch{ArchType: Arm64, ArchVariant: "armv8-a", Abi: []string{"arm64-v8a"}}, NativeBridgeEnabled, "x86_64", "arm64", false},
{Android, Arch{ArchType: Arm, ArchVariant: "armv7-a-neon", Abi: []string{"armeabi-v7a"}}, NativeBridgeEnabled, "x86", "arm", false},
}
}),
FixtureWithRootAndroidBp(bp),
)
ctx := NewTestArchContext(config) ctx := result.TestContext
ctx.RegisterModuleType("module", archTestModuleFactory)
ctx.Register()
if tt.config != nil {
tt.config(config)
}
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
FailIfErrored(t, errs)
_, errs = ctx.PrepareBuildActions(config)
FailIfErrored(t, errs)
if g, w := enabledVariants(ctx, "foo"), tt.fooVariants; !reflect.DeepEqual(w, g) { if g, w := enabledVariants(ctx, "foo"), tt.fooVariants; !reflect.DeepEqual(w, g) {
t.Errorf("want foo variants:\n%q\ngot:\n%q\n", w, g) t.Errorf("want foo variants:\n%q\ngot:\n%q\n", w, g)

View File

@@ -279,23 +279,6 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string
return Config{config} return Config{config}
} }
// TestArchConfigNativeBridge returns a Config object suitable for using
// for tests that need to run the arch mutator for native bridge supported
// archs.
func TestArchConfigNativeBridge(buildDir string, env map[string]string, bp string, fs map[string][]byte) Config {
testConfig := TestArchConfig(buildDir, env, bp, fs)
config := testConfig.config
config.Targets[Android] = []Target{
{Android, Arch{ArchType: X86_64, ArchVariant: "silvermont", Abi: []string{"arm64-v8a"}}, NativeBridgeDisabled, "", "", false},
{Android, Arch{ArchType: X86, ArchVariant: "silvermont", Abi: []string{"armeabi-v7a"}}, NativeBridgeDisabled, "", "", false},
{Android, Arch{ArchType: Arm64, ArchVariant: "armv8-a", Abi: []string{"arm64-v8a"}}, NativeBridgeEnabled, "x86_64", "arm64", false},
{Android, Arch{ArchType: Arm, ArchVariant: "armv7-a-neon", Abi: []string{"armeabi-v7a"}}, NativeBridgeEnabled, "x86", "arm", false},
}
return testConfig
}
func fuchsiaTargets() map[OsType][]Target { func fuchsiaTargets() map[OsType][]Target {
return map[OsType][]Target{ return map[OsType][]Target{
Fuchsia: { Fuchsia: {