diff --git a/kernel/prebuilt_kernel_modules.go b/kernel/prebuilt_kernel_modules.go index 14ac02148..5bcca047e 100644 --- a/kernel/prebuilt_kernel_modules.go +++ b/kernel/prebuilt_kernel_modules.go @@ -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 { diff --git a/kernel/prebuilt_kernel_modules_test.go b/kernel/prebuilt_kernel_modules_test.go index 433548bc0..90b98868e 100644 --- a/kernel/prebuilt_kernel_modules_test.go +++ b/kernel/prebuilt_kernel_modules_test.go @@ -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()) }