blob: 5909b1e6a0954b31168818eb882931ef7f6dc292 [file] [log] [blame]
Colin Cross02bccdf2023-07-14 11:19:08 -07001// Copyright 2023 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 java
16
17import (
Colin Cross02bccdf2023-07-14 11:19:08 -070018 "testing"
Alix96ea88452023-08-31 15:48:23 +000019
20 "android/soong/android"
Colin Cross02bccdf2023-07-14 11:19:08 -070021)
22
23func TestManifestMerger(t *testing.T) {
24 bp := `
25 android_app {
26 name: "app",
27 sdk_version: "current",
28 srcs: ["app/app.java"],
29 resource_dirs: ["app/res"],
30 manifest: "app/AndroidManifest.xml",
31 additional_manifests: ["app/AndroidManifest2.xml"],
32 static_libs: ["direct", "direct_import"],
33 }
34
35 android_library {
36 name: "direct",
37 sdk_version: "current",
38 srcs: ["direct/direct.java"],
39 resource_dirs: ["direct/res"],
40 manifest: "direct/AndroidManifest.xml",
41 additional_manifests: ["direct/AndroidManifest2.xml"],
42 static_libs: ["transitive", "transitive_import"],
43 }
44
45 android_library {
46 name: "transitive",
47 sdk_version: "current",
48 srcs: ["transitive/transitive.java"],
49 resource_dirs: ["transitive/res"],
50 manifest: "transitive/AndroidManifest.xml",
51 additional_manifests: ["transitive/AndroidManifest2.xml"],
52 }
53
54 android_library_import {
55 name: "direct_import",
56 sdk_version: "current",
57 aars: ["direct_import.aar"],
58 static_libs: ["direct_import_dep"],
59 }
60
61 android_library_import {
62 name: "direct_import_dep",
63 sdk_version: "current",
64 aars: ["direct_import_dep.aar"],
65 }
66
67 android_library_import {
68 name: "transitive_import",
69 sdk_version: "current",
70 aars: ["transitive_import.aar"],
71 static_libs: ["transitive_import_dep"],
72 }
73
74 android_library_import {
75 name: "transitive_import_dep",
76 sdk_version: "current",
77 aars: ["transitive_import_dep.aar"],
78 }
79 `
80
Cole Faust9bef6742023-11-01 15:29:09 -070081 result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, bp)
Colin Cross02bccdf2023-07-14 11:19:08 -070082
83 manifestMergerRule := result.ModuleForTests("app", "android_common").Rule("manifestMerger")
84 android.AssertPathRelativeToTopEquals(t, "main manifest",
85 "out/soong/.intermediates/app/android_common/manifest_fixer/AndroidManifest.xml",
86 manifestMergerRule.Input)
87 android.AssertPathsRelativeToTopEquals(t, "lib manifests",
88 []string{
89 "app/AndroidManifest2.xml",
90 "out/soong/.intermediates/direct/android_common/manifest_fixer/AndroidManifest.xml",
91 "direct/AndroidManifest2.xml",
92 "out/soong/.intermediates/transitive/android_common/manifest_fixer/AndroidManifest.xml",
93 "transitive/AndroidManifest2.xml",
94 "out/soong/.intermediates/transitive_import/android_common/aar/AndroidManifest.xml",
95 "out/soong/.intermediates/direct_import/android_common/aar/AndroidManifest.xml",
96 // TODO(b/288358614): Soong has historically not merged manifests from dependencies of
97 // android_library_import modules.
98
99 },
100 manifestMergerRule.Implicits)
101}
Alix96ea88452023-08-31 15:48:23 +0000102
103func TestManifestValuesApplicationIdSetsPackageName(t *testing.T) {
104 bp := `
105 android_test {
106 name: "test",
107 sdk_version: "current",
108 srcs: ["app/app.java"],
109 manifest: "test/AndroidManifest.xml",
110 additional_manifests: ["test/AndroidManifest2.xml"],
111 static_libs: ["direct"],
112 test_suites: ["device-tests"],
113 manifest_values: {
114 applicationId: "new_package_name"
115 },
116 }
117
118 android_library {
119 name: "direct",
120 sdk_version: "current",
121 srcs: ["direct/direct.java"],
122 resource_dirs: ["direct/res"],
123 manifest: "direct/AndroidManifest.xml",
124 additional_manifests: ["direct/AndroidManifest2.xml"],
125 }
126
127 `
128
Cole Faust9bef6742023-11-01 15:29:09 -0700129 result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, bp)
Alix96ea88452023-08-31 15:48:23 +0000130
131 manifestMergerRule := result.ModuleForTests("test", "android_common").Rule("manifestMerger")
132 android.AssertStringMatches(t,
133 "manifest merger args",
134 manifestMergerRule.Args["args"],
135 "--property PACKAGE=new_package_name")
136}