Support testing Rules in Modules and Rules and Builds in Singletons
Add support for TestingModule to return RuleParams for rules created
by the module.
Refactor TestingModule to use helpers, and use the helpers to
implement a similar TestingSingleton.
Use the new functionality to test RuleBuilder's module and singleton
rules.
Test: none
Change-Id: I8348c56ff5086d0c49401f5a00faf7c864e6b6f3
diff --git a/android/module.go b/android/module.go
index 516fa78..d1a779d 100644
--- a/android/module.go
+++ b/android/module.go
@@ -193,6 +193,7 @@
GetProperties() []interface{}
BuildParamsForTests() []BuildParams
+ RuleParamsForTests() map[blueprint.Rule]blueprint.RuleParams
VariablesForTests() map[string]string
}
@@ -477,6 +478,7 @@
// For tests
buildParams []BuildParams
+ ruleParams map[blueprint.Rule]blueprint.RuleParams
variables map[string]string
prefer32 func(ctx BaseModuleContext, base *ModuleBase, class OsClass) bool
@@ -496,6 +498,10 @@
return a.buildParams
}
+func (a *ModuleBase) RuleParamsForTests() map[blueprint.Rule]blueprint.RuleParams {
+ return a.ruleParams
+}
+
func (a *ModuleBase) VariablesForTests() map[string]string {
return a.variables
}
@@ -795,6 +801,10 @@
variables: make(map[string]string),
}
+ if ctx.config.captureBuild {
+ ctx.ruleParams = make(map[blueprint.Rule]blueprint.RuleParams)
+ }
+
desc := "//" + ctx.ModuleDir() + ":" + ctx.ModuleName() + " "
var suffix []string
if ctx.Os().Class != Device && ctx.Os().Class != Generic {
@@ -854,6 +864,7 @@
}
a.buildParams = ctx.buildParams
+ a.ruleParams = ctx.ruleParams
a.variables = ctx.variables
}
@@ -877,6 +888,7 @@
// For tests
buildParams []BuildParams
+ ruleParams map[blueprint.Rule]blueprint.RuleParams
variables map[string]string
}
@@ -952,7 +964,13 @@
func (a *androidModuleContext) Rule(pctx PackageContext, name string, params blueprint.RuleParams,
argNames ...string) blueprint.Rule {
- return a.ModuleContext.Rule(pctx.PackageContext, name, params, argNames...)
+ rule := a.ModuleContext.Rule(pctx.PackageContext, name, params, argNames...)
+
+ if a.config.captureBuild {
+ a.ruleParams[rule] = params
+ }
+
+ return rule
}
func (a *androidModuleContext) Build(pctx PackageContext, params BuildParams) {