diff options
| author | Colin Cross <ccross@android.com> | 2018-08-07 16:49:25 -0700 |
|---|---|---|
| committer | Colin Cross <ccross@android.com> | 2018-08-14 15:44:08 -0700 |
| commit | 303e21f695a7f162727aad8e6229a44dfaed9dfe (patch) | |
| tree | f2b87fc81c418c3f88291451a216acb1ca93a11a /tradefed | |
| parent | bd1cef56181f3d5a7f60144fe770b11fed6114ed (diff) | |
| download | build_soong-303e21f695a7f162727aad8e6229a44dfaed9dfe.tar.gz build_soong-303e21f695a7f162727aad8e6229a44dfaed9dfe.tar.bz2 build_soong-303e21f695a7f162727aad8e6229a44dfaed9dfe.zip | |
Move autogenerated test config into Soong
Move autogenerating the test config for Soong modules into Soong
for java_test and android_test modules.
Bug: 70770641
Test: m checkbuild
Test: atest CtsUiRenderingTestCases
Change-Id: I02593add0407ef694b91c14cf27411a4f3cc4745
Diffstat (limited to 'tradefed')
| -rw-r--r-- | tradefed/autogen.go | 121 | ||||
| -rw-r--r-- | tradefed/config.go | 35 | ||||
| -rw-r--r-- | tradefed/makevars.go | 35 |
3 files changed, 191 insertions, 0 deletions
diff --git a/tradefed/autogen.go b/tradefed/autogen.go new file mode 100644 index 00000000..dd2e355f --- /dev/null +++ b/tradefed/autogen.go @@ -0,0 +1,121 @@ +// Copyright 2018 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 tradefed + +import ( + "strings" + + "github.com/google/blueprint" + + "android/soong/android" +) + +func getTestConfig(ctx android.ModuleContext, prop *string) android.Path { + if p := ctx.ExpandOptionalSource(prop, "test_config"); p.Valid() { + return p.Path() + } else if p := android.ExistentPathForSource(ctx, ctx.ModuleDir(), "AndroidTest.xml"); p.Valid() { + return p.Path() + } + return nil +} + +var autogenTestConfig = pctx.StaticRule("autogenTestConfig", blueprint.RuleParams{ + Command: "sed 's&{MODULE}&${name}&g' $template > $out", + CommandDeps: []string{"$template"}, +}, "name", "template") + +func testConfigPath(ctx android.ModuleContext, prop *string) (path android.Path, autogenPath android.WritablePath) { + if p := getTestConfig(ctx, prop); p != nil { + return p, nil + } else if !strings.HasPrefix(ctx.ModuleDir(), "cts/") { + outputFile := android.PathForModuleOut(ctx, ctx.ModuleName()+".config") + + return outputFile, outputFile + } else { + // CTS modules can be used for test data, so test config files must be + // explicitly created using AndroidTest.xml + // TODO(b/112602712): remove the path check + return nil, nil + } +} + +func autogenTemplate(ctx android.ModuleContext, output android.WritablePath, template string) { + ctx.Build(pctx, android.BuildParams{ + Rule: autogenTestConfig, + Description: "test config", + Output: output, + Args: map[string]string{ + "name": ctx.ModuleName(), + "template": template, + }, + }) +} + +func AutoGenNativeTestConfig(ctx android.ModuleContext, prop *string) android.Path { + path, autogenPath := testConfigPath(ctx, prop) + if autogenPath != nil { + if ctx.Device() { + autogenTemplate(ctx, autogenPath, "${NativeTestConfigTemplate}") + } else { + autogenTemplate(ctx, autogenPath, "${NativeHostTestConfigTemplate}") + } + } + return path +} + +func AutoGenNativeBenchmarkTestConfig(ctx android.ModuleContext, prop *string) android.Path { + path, autogenPath := testConfigPath(ctx, prop) + if autogenPath != nil { + autogenTemplate(ctx, autogenPath, "${NativeTestConfigTemplate}") + } + return path +} + +func AutoGenJavaTestConfig(ctx android.ModuleContext, prop *string) android.Path { + path, autogenPath := testConfigPath(ctx, prop) + if autogenPath != nil { + if ctx.Device() { + autogenTemplate(ctx, autogenPath, "${JavaTestConfigTemplate}") + } else { + autogenTemplate(ctx, autogenPath, "${JavaHostTestConfigTemplate}") + } + } + return path +} + +var autogenInstrumentationTest = pctx.StaticRule("autogenInstrumentationTest", blueprint.RuleParams{ + Command: "${AutoGenTestConfigScript} $out $in ${EmptyTestConfig} ${InstrumentationTestConfigTemplate}", + CommandDeps: []string{ + "${AutoGenTestConfigScript}", + "${EmptyTestConfig}", + "${InstrumentationTestConfigTemplate}", + }, +}, "name") + +func AutoGenInstrumentationTestConfig(ctx android.ModuleContext, prop *string, manifest android.Path) android.Path { + path, autogenPath := testConfigPath(ctx, prop) + if autogenPath != nil { + ctx.Build(pctx, android.BuildParams{ + Rule: autogenInstrumentationTest, + Description: "test config", + Input: manifest, + Output: autogenPath, + Args: map[string]string{ + "name": ctx.ModuleName(), + }, + }) + } + return path +} diff --git a/tradefed/config.go b/tradefed/config.go new file mode 100644 index 00000000..2c432d09 --- /dev/null +++ b/tradefed/config.go @@ -0,0 +1,35 @@ +// Copyright 2018 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 tradefed + +import ( + "android/soong/android" +) + +var ( + pctx = android.NewPackageContext("android/soong/tradefed") +) + +func init() { + pctx.SourcePathVariable("AutoGenTestConfigScript", "build/make/tools/auto_gen_test_config.py") + pctx.SourcePathVariable("InstrumentationTestConfigTemplate", "build/make/core/instrumentation_test_config_template.xml") + pctx.SourcePathVariable("JavaTestConfigTemplate", "build/make/core/java_test_config_template.xml") + pctx.SourcePathVariable("JavaHostTestConfigTemplate", "build/make/core/java_host_test_config_template.xml") + pctx.SourcePathVariable("NativeBenchmarkTestConfigTemplate", "build/make/core/native_benchmark_test_config_template.xml") + pctx.SourcePathVariable("NativeHostTestConfigTemplate", "build/make/core/native_host_test_config_template.xml") + pctx.SourcePathVariable("NativeTestConfigTemplate", "build/make/core/native_test_config_template.xml") + + pctx.SourcePathVariable("EmptyTestConfig", "build/make/core/empty_test_config.xml") +} diff --git a/tradefed/makevars.go b/tradefed/makevars.go new file mode 100644 index 00000000..3ec79979 --- /dev/null +++ b/tradefed/makevars.go @@ -0,0 +1,35 @@ +// Copyright 2018 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 tradefed + +import ( + "android/soong/android" +) + +func init() { + android.RegisterMakeVarsProvider(pctx, makeVarsProvider) +} + +func makeVarsProvider(ctx android.MakeVarsContext) { + ctx.Strict("AUTOGEN_TEST_CONFIG_SCRIPT", "${AutoGenTestConfigScript}") + ctx.Strict("INSTRUMENTATION_TEST_CONFIG_TEMPLATE", "${InstrumentationTestConfigTemplate}") + ctx.Strict("JAVA_HOST_TEST_CONFIG_TEMPLATE", "${JavaHostTestConfigTemplate}") + ctx.Strict("JAVA_TEST_CONFIG_TEMPLATE", "${JavaTestConfigTemplate}") + ctx.Strict("NATIVE_BENCHMARK_TEST_CONFIG_TEMPLATE", "${NativeBenchmarkTestConfigTemplate}") + ctx.Strict("NATIVE_HOST_TEST_CONFIG_TEMPLATE", "${NativeHostTestConfigTemplate}") + ctx.Strict("NATIVE_TEST_CONFIG_TEMPLATE", "${NativeTestConfigTemplate}") + + ctx.Strict("EMPTY_TEST_CONFIG", "${EmptyTestConfig}") +} |
