aboutsummaryrefslogtreecommitdiffstats
path: root/tradefed
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2018-08-07 16:49:25 -0700
committerColin Cross <ccross@android.com>2018-08-14 15:44:08 -0700
commit303e21f695a7f162727aad8e6229a44dfaed9dfe (patch)
treef2b87fc81c418c3f88291451a216acb1ca93a11a /tradefed
parentbd1cef56181f3d5a7f60144fe770b11fed6114ed (diff)
downloadbuild_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.go121
-rw-r--r--tradefed/config.go35
-rw-r--r--tradefed/makevars.go35
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}")
+}