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

am: a9caf47ea2

Change-Id: I201c11b499650c96c3d52b53eda72f163364681e
This commit is contained in:
Jooyung Han 2019-08-28 17:24:44 -07:00 committed by android-build-merger
commit 7e035187e9
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() {
// 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")
if module := SrcIsModule(notice); module != "" {
m.noticeFile = ctx.ExpandOptionalSource(&notice, "notice")

View file

@ -14,7 +14,9 @@
package android
import "testing"
import (
"testing"
)
func TestSrcIsModule(t *testing.T) {
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) {
run := func() int {
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
// correctly.
func TestFuzzTarget(t *testing.T) {