1822a0a371
The sdk produces snapshots that are expected to be unpacked in one of the Android repos. Often that can lead to issues due to conflicts between the source and prebuilts. This change attempts to avoid those conflicts by testing the different ways that those files can be used. With the existing test to cover adding the snapshot This change will cause the sdk tests to check the following: 1) Snapshot on its own (already done). 2) Snapshot plus original source where the original source is preferred. 3) Snapshot plus original source where the snapshot is preferred. It also adds the ability for tests to provide their own custom checkers to verify the result of each of the previous tests. This change reveals a number of bugs already present. Rather than attempt to fix them this change adds the ability to specify error handlers for the two cases that mix source and snapshot to allow those errors to be temporarily ignored while allowing the majority of the tests to benefit from this improvement. Each of those failures has a TODO and bug associated with it. Bug: 183184375 Test: m nothing Change-Id: I105233195074dbe7a6422b6dfc5486e74398ea15
95 lines
3.2 KiB
Go
95 lines
3.2 KiB
Go
// Copyright 2021 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 sdk
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"android/soong/android"
|
|
"android/soong/java"
|
|
)
|
|
|
|
func TestSnapshotWithCompatConfig(t *testing.T) {
|
|
result := android.GroupFixturePreparers(
|
|
prepareForSdkTestWithJava,
|
|
java.PrepareForTestWithPlatformCompatConfig,
|
|
).RunTestWithBp(t, `
|
|
sdk {
|
|
name: "mysdk",
|
|
compat_configs: ["myconfig"],
|
|
}
|
|
|
|
platform_compat_config {
|
|
name: "myconfig",
|
|
}
|
|
`)
|
|
|
|
CheckSnapshot(t, result, "mysdk", "",
|
|
checkVersionedAndroidBpContents(`
|
|
// This is auto-generated. DO NOT EDIT.
|
|
|
|
prebuilt_platform_compat_config {
|
|
name: "mysdk_myconfig@current",
|
|
sdk_member_name: "myconfig",
|
|
visibility: ["//visibility:public"],
|
|
metadata: "compat_configs/myconfig/myconfig_meta.xml",
|
|
}
|
|
|
|
sdk_snapshot {
|
|
name: "mysdk@current",
|
|
visibility: ["//visibility:public"],
|
|
compat_configs: ["mysdk_myconfig@current"],
|
|
}
|
|
`),
|
|
checkUnversionedAndroidBpContents(`
|
|
// This is auto-generated. DO NOT EDIT.
|
|
|
|
prebuilt_platform_compat_config {
|
|
name: "myconfig",
|
|
prefer: false,
|
|
visibility: ["//visibility:public"],
|
|
metadata: "compat_configs/myconfig/myconfig_meta.xml",
|
|
}
|
|
`),
|
|
checkAllCopyRules(`
|
|
.intermediates/myconfig/android_common/myconfig_meta.xml -> compat_configs/myconfig/myconfig_meta.xml
|
|
`),
|
|
snapshotTestChecker(checkSnapshotWithoutSource,
|
|
func(t *testing.T, result *android.TestResult) {
|
|
// Make sure that the snapshot metadata is collated by the platform compat config singleton.
|
|
java.CheckMergedCompatConfigInputs(t, result, "snapshot module", "snapshot/compat_configs/myconfig/myconfig_meta.xml")
|
|
}),
|
|
|
|
snapshotTestChecker(checkSnapshotWithSourcePreferred,
|
|
func(t *testing.T, result *android.TestResult) {
|
|
// Make sure that the snapshot metadata is collated by the platform compat config singleton.
|
|
java.CheckMergedCompatConfigInputs(t, result, "snapshot module",
|
|
"out/soong/.intermediates/myconfig/android_common/myconfig_meta.xml",
|
|
// TODO(b/182402754): Remove this as only the config file from the preferred module should be used.
|
|
"snapshot/compat_configs/myconfig/myconfig_meta.xml",
|
|
)
|
|
}),
|
|
|
|
snapshotTestChecker(checkSnapshotPreferredWithSource,
|
|
func(t *testing.T, result *android.TestResult) {
|
|
// Make sure that the snapshot metadata is collated by the platform compat config singleton.
|
|
java.CheckMergedCompatConfigInputs(t, result, "snapshot module",
|
|
"out/soong/.intermediates/myconfig/android_common/myconfig_meta.xml",
|
|
// TODO(b/182402754): Remove this as only the config file from the preferred module should be used.
|
|
"snapshot/compat_configs/myconfig/myconfig_meta.xml",
|
|
)
|
|
}),
|
|
)
|
|
}
|