123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // Copyright 2020 Google Inc. All rights reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package android
- func init() {
- RegisterParallelSingletonType("testsuites", testSuiteFilesFactory)
- }
- func testSuiteFilesFactory() Singleton {
- return &testSuiteFiles{}
- }
- type testSuiteFiles struct {
- robolectric WritablePath
- }
- type TestSuiteModule interface {
- Module
- TestSuites() []string
- }
- func (t *testSuiteFiles) GenerateBuildActions(ctx SingletonContext) {
- files := make(map[string]map[string]InstallPaths)
- ctx.VisitAllModules(func(m Module) {
- if tsm, ok := m.(TestSuiteModule); ok {
- for _, testSuite := range tsm.TestSuites() {
- if files[testSuite] == nil {
- files[testSuite] = make(map[string]InstallPaths)
- }
- name := ctx.ModuleName(m)
- files[testSuite][name] = append(files[testSuite][name], tsm.FilesToInstall()...)
- }
- }
- })
- t.robolectric = robolectricTestSuite(ctx, files["robolectric-tests"])
- ctx.Phony("robolectric-tests", t.robolectric)
- }
- func (t *testSuiteFiles) MakeVars(ctx MakeVarsContext) {
- ctx.DistForGoal("robolectric-tests", t.robolectric)
- }
- func robolectricTestSuite(ctx SingletonContext, files map[string]InstallPaths) WritablePath {
- var installedPaths InstallPaths
- for _, module := range SortedKeys(files) {
- installedPaths = append(installedPaths, files[module]...)
- }
- testCasesDir := pathForInstall(ctx, ctx.Config().BuildOS, X86, "testcases", false)
- outputFile := PathForOutput(ctx, "packaging", "robolectric-tests.zip")
- rule := NewRuleBuilder(pctx, ctx)
- rule.Command().BuiltTool("soong_zip").
- FlagWithOutput("-o ", outputFile).
- FlagWithArg("-P ", "host/testcases").
- FlagWithArg("-C ", testCasesDir.String()).
- FlagWithRspFileInputList("-r ", outputFile.ReplaceExtension(ctx, "rsp"), installedPaths.Paths())
- rule.Build("robolectric_tests_zip", "robolectric-tests.zip")
- return outputFile
- }
|