Capture missing dependency error rules

Allow missing dependency errors to be tested by capturing the
missing dependency error rule instead of the originally requested
rule.

Test: all soong tests
Change-Id: Id2b23b9ee354cdafc44fb9adfaf8fe7bab973478
This commit is contained in:
Colin Cross
2019-06-10 15:15:17 -07:00
parent 2ffb9a8d7d
commit b88b3c5e77
2 changed files with 17 additions and 22 deletions

View File

@@ -945,17 +945,16 @@ type moduleContext struct {
variables map[string]string
}
func (m *moduleContext) ninjaError(desc string, outputs []string, err error) {
m.ModuleContext.Build(pctx.PackageContext, blueprint.BuildParams{
func (m *moduleContext) ninjaError(params BuildParams, err error) (PackageContext, BuildParams) {
return pctx, BuildParams{
Rule: ErrorRule,
Description: desc,
Outputs: outputs,
Optional: true,
Description: params.Description,
Output: params.Output,
Outputs: params.Outputs,
Args: map[string]string{
"error": err.Error(),
},
})
return
}
}
func (m *moduleContext) Config() Config {
@@ -1027,24 +1026,20 @@ func (m *moduleContext) Rule(pctx PackageContext, name string, params blueprint.
}
func (m *moduleContext) Build(pctx PackageContext, params BuildParams) {
if params.Description != "" {
params.Description = "${moduleDesc}" + params.Description + "${moduleDescSuffix}"
}
if missingDeps := m.GetMissingDependencies(); len(missingDeps) > 0 {
pctx, params = m.ninjaError(params, fmt.Errorf("module %s missing dependencies: %s\n",
m.ModuleName(), strings.Join(missingDeps, ", ")))
}
if m.config.captureBuild {
m.buildParams = append(m.buildParams, params)
}
bparams := convertBuildParams(params)
if bparams.Description != "" {
bparams.Description = "${moduleDesc}" + params.Description + "${moduleDescSuffix}"
}
if missingDeps := m.GetMissingDependencies(); len(missingDeps) > 0 {
m.ninjaError(bparams.Description, bparams.Outputs,
fmt.Errorf("module %s missing dependencies: %s\n",
m.ModuleName(), strings.Join(missingDeps, ", ")))
return
}
m.ModuleContext.Build(pctx.PackageContext, bparams)
m.ModuleContext.Build(pctx.PackageContext, convertBuildParams(params))
}
func (m *moduleContext) Module() Module {