Merge "Convert kernel package to use test fixtures" am: acde8e7fed am: 2711096f42 am: 6a2a7888bd

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1655211

Change-Id: Id9369a1ff68ef30303107f0813978f60ff861bec
This commit is contained in:
Paul Duffin 2021-03-29 10:52:31 +00:00 committed by Automerger Merge Worker
commit 12e3c95308
2 changed files with 17 additions and 80 deletions

View File

@ -27,8 +27,12 @@ import (
)
func init() {
android.RegisterModuleType("prebuilt_kernel_modules", prebuiltKernelModulesFactory)
pctx.Import("android/soong/cc/config")
registerKernelBuildComponents(android.InitRegistrationContext)
}
func registerKernelBuildComponents(ctx android.RegistrationContext) {
ctx.RegisterModuleType("prebuilt_kernel_modules", prebuiltKernelModulesFactory)
}
type prebuiltKernelModules struct {

View File

@ -15,73 +15,29 @@
package kernel
import (
"io/ioutil"
"os"
"reflect"
"strings"
"testing"
"android/soong/android"
"android/soong/cc"
)
func testKernelModules(t *testing.T, bp string, fs map[string][]byte) (*android.TestContext, android.Config) {
bp = bp + `
cc_binary_host {
name: "depmod",
srcs: ["depmod.cpp"],
stl: "none",
static_executable: true,
system_shared_libs: [],
}
`
bp = bp + cc.GatherRequiredDepsForTest(android.Android)
fs["depmod.cpp"] = nil
cc.GatherRequiredFilesForTest(fs)
config := android.TestArchConfig(buildDir, nil, bp, fs)
ctx := android.NewTestArchContext(config)
ctx.RegisterModuleType("prebuilt_kernel_modules", prebuiltKernelModulesFactory)
ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
cc.RegisterRequiredBuildComponentsForTest(ctx)
ctx.Register()
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
android.FailIfErrored(t, errs)
_, errs = ctx.PrepareBuildActions(config)
android.FailIfErrored(t, errs)
return ctx, config
}
func ensureListContains(t *testing.T, result []string, expected string) {
t.Helper()
if !android.InList(expected, result) {
t.Errorf("%q is not found in %v", expected, result)
}
}
func ensureContains(t *testing.T, result string, expected string) {
t.Helper()
if !strings.Contains(result, expected) {
t.Errorf("%q is not found in %q", expected, result)
}
}
func TestKernelModulesFilelist(t *testing.T) {
ctx, _ := testKernelModules(t, `
ctx := android.GroupFixturePreparers(
cc.PrepareForTestWithCcDefaultModules,
android.FixtureRegisterWithContext(registerKernelBuildComponents),
android.MockFS{
"depmod.cpp": nil,
"mod1.ko": nil,
"mod2.ko": nil,
}.AddToFixture(),
).RunTestWithBp(t, `
prebuilt_kernel_modules {
name: "foo",
srcs: ["*.ko"],
kernel_version: "5.10",
}
`,
map[string][]byte{
"mod1.ko": nil,
"mod2.ko": nil,
})
`)
expected := []string{
"lib/modules/5.10/mod1.ko",
@ -98,32 +54,9 @@ func TestKernelModulesFilelist(t *testing.T) {
}
actual = android.SortedUniqueStrings(actual)
expected = android.SortedUniqueStrings(expected)
if !reflect.DeepEqual(actual, expected) {
t.Errorf("\ngot: %v\nexpected: %v\n", actual, expected)
}
}
var buildDir string
func setUp() {
var err error
buildDir, err = ioutil.TempDir("", "soong_kernel_test")
if err != nil {
panic(err)
}
}
func tearDown() {
os.RemoveAll(buildDir)
android.AssertDeepEquals(t, "foo packaging specs", expected, actual)
}
func TestMain(m *testing.M) {
run := func() int {
setUp()
defer tearDown()
return m.Run()
}
os.Exit(run())
os.Exit(m.Run())
}