Merge "soong: Add tests for depending on disabled module"

This commit is contained in:
Jooyung Han 2019-08-28 23:58:33 +00:00 committed by Gerrit Code Review
commit a9caf47ea2
4 changed files with 125 additions and 1 deletions

View File

@ -1038,6 +1038,13 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext)
} }
if m.Enabled() { if m.Enabled() {
// ensure all direct android.Module deps are enabled
ctx.VisitDirectDepsBlueprint(func(bm blueprint.Module) {
if _, ok := bm.(Module); ok {
ctx.validateAndroidModule(bm, ctx.baseModuleContext.strictVisitDeps)
}
})
notice := proptools.StringDefault(m.commonProperties.Notice, "NOTICE") notice := proptools.StringDefault(m.commonProperties.Notice, "NOTICE")
if module := SrcIsModule(notice); module != "" { if module := SrcIsModule(notice); module != "" {
m.noticeFile = ctx.ExpandOptionalSource(&notice, "notice") m.noticeFile = ctx.ExpandOptionalSource(&notice, "notice")

View File

@ -14,7 +14,9 @@
package android package android
import "testing" import (
"testing"
)
func TestSrcIsModule(t *testing.T) { func TestSrcIsModule(t *testing.T) {
type args struct { type args struct {
@ -139,3 +141,55 @@ func TestSrcIsModuleWithTag(t *testing.T) {
}) })
} }
} }
type depsModule struct {
ModuleBase
props struct {
Deps []string
}
}
func (m *depsModule) GenerateAndroidBuildActions(ctx ModuleContext) {
}
func (m *depsModule) DepsMutator(ctx BottomUpMutatorContext) {
ctx.AddDependency(ctx.Module(), nil, m.props.Deps...)
}
func depsModuleFactory() Module {
m := &depsModule{}
m.AddProperties(&m.props)
InitAndroidModule(m)
return m
}
func TestErrorDependsOnDisabledModule(t *testing.T) {
ctx := NewTestContext()
ctx.RegisterModuleType("deps", ModuleFactoryAdaptor(depsModuleFactory))
bp := `
deps {
name: "foo",
deps: ["bar"],
}
deps {
name: "bar",
enabled: false,
}
`
mockFS := map[string][]byte{
"Android.bp": []byte(bp),
}
ctx.MockFileSystem(mockFS)
ctx.Register()
config := TestConfig(buildDir, nil)
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
FailIfErrored(t, errs)
_, errs = ctx.PrepareBuildActions(config)
FailIfNoMatchingErrors(t, `module "foo": depends on disabled module "bar"`, errs)
}

View File

@ -1932,6 +1932,51 @@ func TestApexUsesFailsIfUseNoApex(t *testing.T) {
} }
func TestErrorsIfDepsAreNotEnabled(t *testing.T) {
testApexError(t, `module "myapex" .* depends on disabled module "libfoo"`, `
apex {
name: "myapex",
key: "myapex.key",
native_shared_libs: ["libfoo"],
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}
cc_library {
name: "libfoo",
stl: "none",
system_shared_libs: [],
enabled: false,
}
`)
testApexError(t, `module "myapex" .* depends on disabled module "myjar"`, `
apex {
name: "myapex",
key: "myapex.key",
java_libs: ["myjar"],
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}
java_library {
name: "myjar",
srcs: ["foo/bar/MyClass.java"],
sdk_version: "none",
system_modules: "none",
compile_dex: true,
enabled: false,
}
`)
}
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
run := func() int { run := func() int {
setUp() setUp()

View File

@ -2264,6 +2264,24 @@ func TestStaticDepsOrderWithStubs(t *testing.T) {
} }
} }
func TestErrorsIfAModuleDependsOnDisabled(t *testing.T) {
testCcError(t, `module "libA" .* depends on disabled module "libB"`, `
cc_library {
name: "libA",
srcs: ["foo.c"],
shared_libs: ["libB"],
stl: "none",
}
cc_library {
name: "libB",
srcs: ["foo.c"],
enabled: false,
stl: "none",
}
`)
}
// Simple smoke test for the cc_fuzz target that ensures the rule compiles // Simple smoke test for the cc_fuzz target that ensures the rule compiles
// correctly. // correctly.
func TestFuzzTarget(t *testing.T) { func TestFuzzTarget(t *testing.T) {