Merge "Support apex_test." am: 2ff53da9f8
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2265965 Change-Id: I13c1017e5c91f83c649933c0cdf33a38c0f225ec Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
99416d29a6
3 changed files with 49 additions and 6 deletions
|
@ -928,6 +928,8 @@ type CommonAttributes struct {
|
||||||
Tags bazel.StringListAttribute
|
Tags bazel.StringListAttribute
|
||||||
|
|
||||||
Applicable_licenses bazel.LabelListAttribute
|
Applicable_licenses bazel.LabelListAttribute
|
||||||
|
|
||||||
|
Testonly *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// constraintAttributes represents Bazel attributes pertaining to build constraints,
|
// constraintAttributes represents Bazel attributes pertaining to build constraints,
|
||||||
|
|
27
apex/apex.go
27
apex/apex.go
|
@ -17,13 +17,14 @@
|
||||||
package apex
|
package apex
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"android/soong/bazel/cquery"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"android/soong/bazel/cquery"
|
||||||
|
|
||||||
"github.com/google/blueprint"
|
"github.com/google/blueprint"
|
||||||
"github.com/google/blueprint/bootstrap"
|
"github.com/google/blueprint/bootstrap"
|
||||||
"github.com/google/blueprint/proptools"
|
"github.com/google/blueprint/proptools"
|
||||||
|
@ -47,7 +48,7 @@ func init() {
|
||||||
|
|
||||||
func registerApexBuildComponents(ctx android.RegistrationContext) {
|
func registerApexBuildComponents(ctx android.RegistrationContext) {
|
||||||
ctx.RegisterModuleType("apex", BundleFactory)
|
ctx.RegisterModuleType("apex", BundleFactory)
|
||||||
ctx.RegisterModuleType("apex_test", testApexBundleFactory)
|
ctx.RegisterModuleType("apex_test", TestApexBundleFactory)
|
||||||
ctx.RegisterModuleType("apex_vndk", vndkApexBundleFactory)
|
ctx.RegisterModuleType("apex_vndk", vndkApexBundleFactory)
|
||||||
ctx.RegisterModuleType("apex_defaults", defaultsFactory)
|
ctx.RegisterModuleType("apex_defaults", defaultsFactory)
|
||||||
ctx.RegisterModuleType("prebuilt_apex", PrebuiltFactory)
|
ctx.RegisterModuleType("prebuilt_apex", PrebuiltFactory)
|
||||||
|
@ -2563,7 +2564,7 @@ func ApexBundleFactory(testApex bool) android.Module {
|
||||||
|
|
||||||
// apex_test is an APEX for testing. The difference from the ordinary apex module type is that
|
// apex_test is an APEX for testing. The difference from the ordinary apex module type is that
|
||||||
// certain compatibility checks such as apex_available are not done for apex_test.
|
// certain compatibility checks such as apex_available are not done for apex_test.
|
||||||
func testApexBundleFactory() android.Module {
|
func TestApexBundleFactory() android.Module {
|
||||||
bundle := newApexBundle()
|
bundle := newApexBundle()
|
||||||
bundle.testApex = true
|
bundle.testApex = true
|
||||||
return bundle
|
return bundle
|
||||||
|
@ -3335,6 +3336,7 @@ type bazelApexBundleAttributes struct {
|
||||||
Compressible bazel.BoolAttribute
|
Compressible bazel.BoolAttribute
|
||||||
Package_name *string
|
Package_name *string
|
||||||
Logging_parent *string
|
Logging_parent *string
|
||||||
|
Tests bazel.LabelListAttribute
|
||||||
}
|
}
|
||||||
|
|
||||||
type convertedNativeSharedLibs struct {
|
type convertedNativeSharedLibs struct {
|
||||||
|
@ -3344,13 +3346,19 @@ type convertedNativeSharedLibs struct {
|
||||||
|
|
||||||
// ConvertWithBp2build performs bp2build conversion of an apex
|
// ConvertWithBp2build performs bp2build conversion of an apex
|
||||||
func (a *apexBundle) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
|
func (a *apexBundle) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
|
||||||
// We do not convert apex_test modules at this time
|
// We only convert apex and apex_test modules at this time
|
||||||
if ctx.ModuleType() != "apex" {
|
if ctx.ModuleType() != "apex" && ctx.ModuleType() != "apex_test" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
attrs, props := convertWithBp2build(a, ctx)
|
attrs, props := convertWithBp2build(a, ctx)
|
||||||
ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: a.Name()}, &attrs)
|
commonAttrs := android.CommonAttributes{
|
||||||
|
Name: a.Name(),
|
||||||
|
}
|
||||||
|
if a.testApex {
|
||||||
|
commonAttrs.Testonly = proptools.BoolPtr(a.testApex)
|
||||||
|
}
|
||||||
|
ctx.CreateBazelTargetModule(props, commonAttrs, &attrs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (bazelApexBundleAttributes, bazel.BazelTargetModuleProperties) {
|
func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (bazelApexBundleAttributes, bazel.BazelTargetModuleProperties) {
|
||||||
|
@ -3417,6 +3425,12 @@ func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (baze
|
||||||
binaries := android.BazelLabelForModuleDeps(ctx, a.properties.ApexNativeDependencies.Binaries)
|
binaries := android.BazelLabelForModuleDeps(ctx, a.properties.ApexNativeDependencies.Binaries)
|
||||||
binariesLabelListAttribute := bazel.MakeLabelListAttribute(binaries)
|
binariesLabelListAttribute := bazel.MakeLabelListAttribute(binaries)
|
||||||
|
|
||||||
|
var testsAttrs bazel.LabelListAttribute
|
||||||
|
if a.testApex && len(a.properties.ApexNativeDependencies.Tests) > 0 {
|
||||||
|
tests := android.BazelLabelForModuleDeps(ctx, a.properties.ApexNativeDependencies.Tests)
|
||||||
|
testsAttrs = bazel.MakeLabelListAttribute(tests)
|
||||||
|
}
|
||||||
|
|
||||||
var updatableAttribute bazel.BoolAttribute
|
var updatableAttribute bazel.BoolAttribute
|
||||||
if a.properties.Updatable != nil {
|
if a.properties.Updatable != nil {
|
||||||
updatableAttribute.Value = a.properties.Updatable
|
updatableAttribute.Value = a.properties.Updatable
|
||||||
|
@ -3459,6 +3473,7 @@ func convertWithBp2build(a *apexBundle, ctx android.TopDownMutatorContext) (baze
|
||||||
Compressible: compressibleAttribute,
|
Compressible: compressibleAttribute,
|
||||||
Package_name: packageName,
|
Package_name: packageName,
|
||||||
Logging_parent: loggingParent,
|
Logging_parent: loggingParent,
|
||||||
|
Tests: testsAttrs,
|
||||||
}
|
}
|
||||||
|
|
||||||
props := bazel.BazelTargetModuleProperties{
|
props := bazel.BazelTargetModuleProperties{
|
||||||
|
|
|
@ -42,6 +42,7 @@ func registerApexModuleTypes(ctx android.RegistrationContext) {
|
||||||
ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory)
|
ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory)
|
||||||
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
|
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
|
||||||
ctx.RegisterModuleType("prebuilt_etc", etc.PrebuiltEtcFactory)
|
ctx.RegisterModuleType("prebuilt_etc", etc.PrebuiltEtcFactory)
|
||||||
|
ctx.RegisterModuleType("cc_test", cc.TestFactory)
|
||||||
}
|
}
|
||||||
|
|
||||||
func runOverrideApexTestCase(t *testing.T, tc Bp2buildTestCase) {
|
func runOverrideApexTestCase(t *testing.T, tc Bp2buildTestCase) {
|
||||||
|
@ -1249,3 +1250,28 @@ override_apex {
|
||||||
}),
|
}),
|
||||||
}})
|
}})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestApexTestBundleSimple(t *testing.T) {
|
||||||
|
runApexTestCase(t, Bp2buildTestCase{
|
||||||
|
Description: "apex_test - simple",
|
||||||
|
ModuleTypeUnderTest: "apex_test",
|
||||||
|
ModuleTypeUnderTestFactory: apex.TestApexBundleFactory,
|
||||||
|
Filesystem: map[string]string{},
|
||||||
|
Blueprint: `
|
||||||
|
cc_test { name: "cc_test_1", bazel_module: { bp2build_available: false } }
|
||||||
|
|
||||||
|
apex_test {
|
||||||
|
name: "test_com.android.apogee",
|
||||||
|
file_contexts: "file_contexts_file",
|
||||||
|
tests: ["cc_test_1"],
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
ExpectedBazelTargets: []string{
|
||||||
|
MakeBazelTarget("apex", "test_com.android.apogee", AttrNameToString{
|
||||||
|
"file_contexts": `"file_contexts_file"`,
|
||||||
|
"manifest": `"apex_manifest.json"`,
|
||||||
|
"testonly": `True`,
|
||||||
|
"tests": `[":cc_test_1"]`,
|
||||||
|
}),
|
||||||
|
}})
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue