• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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	t.Parallel()
80	testSnapshotWithCompatConfig(t, `
81		sdk {
82			name: "mysdk",
83			compat_configs: ["myconfig"],
84		}
85`)
86}
87
88func TestSnapshotWithCompatConfig_Apex(t *testing.T) {
89	t.Parallel()
90	testSnapshotWithCompatConfig(t, `
91		apex {
92			name: "myapex",
93			key: "myapex.key",
94			min_sdk_version: "2",
95			compat_configs: ["myconfig"],
96		}
97
98		sdk {
99			name: "mysdk",
100			apexes: ["myapex"],
101		}
102`)
103}
104