diff options
Diffstat (limited to 'tradefed')
-rw-r--r-- | tradefed/Android.bp | 1 | ||||
-rw-r--r-- | tradefed/autogen_bazel.go | 105 |
2 files changed, 106 insertions, 0 deletions
diff --git a/tradefed/Android.bp b/tradefed/Android.bp index f0336a34f..a1611084c 100644 --- a/tradefed/Android.bp +++ b/tradefed/Android.bp @@ -11,6 +11,7 @@ bootstrap_go_package { ], srcs: [ "autogen.go", + "autogen_bazel.go", "config.go", "makevars.go", ], diff --git a/tradefed/autogen_bazel.go b/tradefed/autogen_bazel.go new file mode 100644 index 000000000..d3109d934 --- /dev/null +++ b/tradefed/autogen_bazel.go @@ -0,0 +1,105 @@ +// Copyright 2022 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" + "android/soong/bazel" + + "github.com/google/blueprint/proptools" +) + +const ( + InstrumentationTestConfigTemplate = "build/make/core/instrumentation_test_config_template.xml" + JavaTestConfigTemplate = "build/make/core/java_test_config_template.xml" + JavaHostTestConfigTemplate = "build/make/core/java_host_test_config_template.xml" + JavaHostUnitTestConfigTemplate = "build/make/core/java_host_unit_test_config_template.xml" + NativeBenchmarkTestConfigTemplate = "build/make/core/native_benchmark_test_config_template.xml" + NativeHostTestConfigTemplate = "build/make/core/native_host_test_config_template.xml" + NativeTestConfigTemplate = "build/make/core/native_test_config_template.xml" + PythonBinaryHostTestConfigTemplate = "build/make/core/python_binary_host_test_config_template.xml" + RustDeviceTestConfigTemplate = "build/make/core/rust_device_test_config_template.xml" + RustHostTestConfigTemplate = "build/make/core/rust_host_test_config_template.xml" + RustDeviceBenchmarkConfigTemplate = "build/make/core/rust_device_benchmark_config_template.xml" + RustHostBenchmarkConfigTemplate = "build/make/core/rust_host_benchmark_config_template.xml" + RobolectricTestConfigTemplate = "build/make/core/robolectric_test_config_template.xml" + ShellTestConfigTemplate = "build/make/core/shell_test_config_template.xml" +) + +type TestConfigAttributes struct { + Test_config *bazel.Label + + Auto_generate_test_config *bool + Template_test_config *bazel.Label + Template_configs []string + Template_install_base *string +} + +func GetTestConfigAttributes( + ctx android.TopDownMutatorContext, + testConfig *string, + extraTestConfigs []string, + autoGenConfig *bool, + testSuites []string, + template *string, + templateConfigs []Config, + templateInstallBase *string) TestConfigAttributes { + + attrs := TestConfigAttributes{} + attrs.Test_config = GetTestConfig(ctx, testConfig) + // do not generate a test config if + // 1) test config already found + // 2) autoGenConfig == false + // 3) CTS tests and no template specified. + // CTS Modules can be used for test data, so test config files must be explicitly specified. + if (attrs.Template_test_config != nil) || + proptools.Bool(autoGenConfig) == false || + (template == nil && !android.InList("cts", testSuites)) { + + return attrs + } + + // Add properties for the bazel rule to generate a test config + // since a test config was not specified. + templateLabel := android.BazelLabelForModuleSrcSingle(ctx, *template) + attrs.Template_test_config = &templateLabel + attrs.Auto_generate_test_config = autoGenConfig + var configStrings []string + for _, c := range templateConfigs { + configString := proptools.NinjaAndShellEscape(c.Config()) + configStrings = append(configStrings, configString) + } + attrs.Template_configs = configStrings + attrs.Template_install_base = templateInstallBase + return attrs +} + +func GetTestConfig( + ctx android.TopDownMutatorContext, + testConfig *string, +) *bazel.Label { + + if testConfig != nil { + c, _ := android.BazelStringOrLabelFromProp(ctx, testConfig) + if c.Value != nil { + return c.Value + } + } + + // check for default AndroidTest.xml + defaultTestConfigPath := ctx.ModuleDir() + "/AndroidTest.xml" + c, _ := android.BazelStringOrLabelFromProp(ctx, &defaultTestConfigPath) + return c.Value +} |