xref: /aosp_15_r20/build/soong/sdk/compat_config_sdk_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1// Copyright 2021 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package sdk
16
17import (
18	"testing"
19
20	"android/soong/android"
21	"android/soong/java"
22)
23
24func testSnapshotWithCompatConfig(t *testing.T, sdk string) {
25	result := android.GroupFixturePreparers(
26		prepareForSdkTestWithJava,
27		java.PrepareForTestWithPlatformCompatConfig,
28		prepareForSdkTestWithApex,
29	).RunTestWithBp(t, sdk+`
30		platform_compat_config {
31			name: "myconfig",
32		}
33	`)
34
35	CheckSnapshot(t, result, "mysdk", "",
36		checkAndroidBpContents(`
37// This is auto-generated. DO NOT EDIT.
38
39apex_contributions_defaults {
40    name: "mysdk.contributions",
41    contents: ["prebuilt_myconfig"],
42}
43
44prebuilt_platform_compat_config {
45    name: "myconfig",
46    prefer: false,
47    visibility: ["//visibility:public"],
48    metadata: "compat_configs/myconfig/myconfig_meta.xml",
49}
50`),
51		checkAllCopyRules(`
52.intermediates/myconfig/android_common/myconfig_meta.xml -> compat_configs/myconfig/myconfig_meta.xml
53`),
54		snapshotTestChecker(checkSnapshotWithoutSource,
55			func(t *testing.T, result *android.TestResult) {
56				// Make sure that the snapshot metadata is collated by the platform compat config singleton.
57				java.CheckMergedCompatConfigInputs(t, result, "snapshot module", "snapshot/compat_configs/myconfig/myconfig_meta.xml")
58			}),
59
60		snapshotTestChecker(checkSnapshotWithSourcePreferred,
61			func(t *testing.T, result *android.TestResult) {
62				// Make sure that the snapshot metadata is collated by the platform compat config singleton.
63				java.CheckMergedCompatConfigInputs(t, result, "snapshot module",
64					"out/soong/.intermediates/myconfig/android_common/myconfig_meta.xml",
65				)
66			}),
67
68		snapshotTestChecker(checkSnapshotPreferredWithSource,
69			func(t *testing.T, result *android.TestResult) {
70				// Make sure that the snapshot metadata is collated by the platform compat config singleton.
71				java.CheckMergedCompatConfigInputs(t, result, "snapshot module",
72					"snapshot/compat_configs/myconfig/myconfig_meta.xml",
73				)
74			}),
75	)
76}
77
78func TestSnapshotWithCompatConfig(t *testing.T) {
79	testSnapshotWithCompatConfig(t, `
80		sdk {
81			name: "mysdk",
82			compat_configs: ["myconfig"],
83		}
84`)
85}
86
87func TestSnapshotWithCompatConfig_Apex(t *testing.T) {
88	testSnapshotWithCompatConfig(t, `
89		apex {
90			name: "myapex",
91			key: "myapex.key",
92			min_sdk_version: "2",
93			compat_configs: ["myconfig"],
94		}
95
96		sdk {
97			name: "mysdk",
98			apexes: ["myapex"],
99		}
100`)
101}
102