2022-12-04 12:16:42 +01:00
|
|
|
// 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 {
|
2023-08-21 23:23:04 +02:00
|
|
|
Test_config *bazel.Label
|
|
|
|
Dynamic_config *bazel.Label
|
2022-12-04 12:16:42 +01:00
|
|
|
|
|
|
|
Auto_generate_test_config *bool
|
|
|
|
Template_test_config *bazel.Label
|
|
|
|
Template_configs []string
|
|
|
|
Template_install_base *string
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetTestConfigAttributes(
|
2023-09-19 22:09:00 +02:00
|
|
|
ctx android.Bp2buildMutatorContext,
|
2022-12-04 12:16:42 +01:00
|
|
|
testConfig *string,
|
|
|
|
extraTestConfigs []string,
|
|
|
|
autoGenConfig *bool,
|
|
|
|
testSuites []string,
|
|
|
|
template *string,
|
|
|
|
templateConfigs []Config,
|
|
|
|
templateInstallBase *string) TestConfigAttributes {
|
|
|
|
|
|
|
|
attrs := TestConfigAttributes{}
|
2023-08-21 23:23:04 +02:00
|
|
|
|
|
|
|
dynamicConfig := "DynamicConfig.xml"
|
|
|
|
c, _ := android.BazelStringOrLabelFromProp(ctx, &dynamicConfig)
|
|
|
|
attrs.Dynamic_config = c.Value
|
|
|
|
|
2022-12-04 12:16:42 +01:00
|
|
|
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(
|
2023-09-19 22:09:00 +02:00
|
|
|
ctx android.Bp2buildMutatorContext,
|
2022-12-04 12:16:42 +01:00
|
|
|
testConfig *string,
|
|
|
|
) *bazel.Label {
|
|
|
|
|
|
|
|
if testConfig != nil {
|
|
|
|
c, _ := android.BazelStringOrLabelFromProp(ctx, testConfig)
|
|
|
|
if c.Value != nil {
|
|
|
|
return c.Value
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// check for default AndroidTest.xml
|
2023-08-19 02:38:15 +02:00
|
|
|
defaultTestConfigPath := "AndroidTest.xml"
|
2022-12-04 12:16:42 +01:00
|
|
|
c, _ := android.BazelStringOrLabelFromProp(ctx, &defaultTestConfigPath)
|
|
|
|
return c.Value
|
|
|
|
}
|