Files
build_soong/testing/all_test_specs.go
Yu Liu 663e4508dc Merge SingletonProviderContext with OtherModuleProviderContext
Bug: 358425833
Test: CI
Change-Id: I8e3f40dc3cfc5337008b419801f8e6bf2d48e8b2
2024-08-12 22:50:19 +00:00

45 lines
1.4 KiB
Go

package testing
import (
"android/soong/android"
)
const ownershipDirectory = "ownership"
const fileContainingFilePaths = "all_test_spec_paths.rsp"
const allTestSpecsFile = "all_test_specs.pb"
func AllTestSpecsFactory() android.Singleton {
return &allTestSpecsSingleton{}
}
type allTestSpecsSingleton struct {
// Path where the collected metadata is stored after successful validation.
outputPath android.OutputPath
}
func (this *allTestSpecsSingleton) GenerateBuildActions(ctx android.SingletonContext) {
var intermediateMetadataPaths android.Paths
ctx.VisitAllModules(func(module android.Module) {
if metadata, ok := android.OtherModuleProvider(ctx, module, TestSpecProviderKey); ok {
intermediateMetadataPaths = append(intermediateMetadataPaths, metadata.IntermediatePath)
}
})
rspFile := android.PathForOutput(ctx, fileContainingFilePaths)
this.outputPath = android.PathForOutput(ctx, ownershipDirectory, allTestSpecsFile)
rule := android.NewRuleBuilder(pctx, ctx)
cmd := rule.Command().
BuiltTool("metadata").
FlagWithArg("-rule ", "test_spec").
FlagWithRspFileInputList("-inputFile ", rspFile, intermediateMetadataPaths)
cmd.FlagWithOutput("-outputFile ", this.outputPath)
rule.Build("all_test_specs_rule", "Generate all test specifications")
ctx.Phony("all_test_specs", this.outputPath)
}
func (this *allTestSpecsSingleton) MakeVars(ctx android.MakeVarsContext) {
ctx.DistForGoal("test_specs", this.outputPath)
}