blob: ce227b9c8c715c6ddd83898214e42b961a7e73e7 [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) {
Colin Cross844cb6a2025-01-29 15:53:21 -080024 t.Parallel()
Colin Cross02bccdf2023-07-14 11:19:08 -070025 bp := `
26 android_app {
27 name: "app",
28 sdk_version: "current",
29 srcs: ["app/app.java"],
30 resource_dirs: ["app/res"],
31 manifest: "app/AndroidManifest.xml",
32 additional_manifests: ["app/AndroidManifest2.xml"],
33 static_libs: ["direct", "direct_import"],
34 }
35
36 android_library {
37 name: "direct",
38 sdk_version: "current",
39 srcs: ["direct/direct.java"],
40 resource_dirs: ["direct/res"],
41 manifest: "direct/AndroidManifest.xml",
42 additional_manifests: ["direct/AndroidManifest2.xml"],
43 static_libs: ["transitive", "transitive_import"],
44 }
45
46 android_library {
47 name: "transitive",
48 sdk_version: "current",
49 srcs: ["transitive/transitive.java"],
50 resource_dirs: ["transitive/res"],
51 manifest: "transitive/AndroidManifest.xml",
52 additional_manifests: ["transitive/AndroidManifest2.xml"],
53 }
54
55 android_library_import {
56 name: "direct_import",
57 sdk_version: "current",
58 aars: ["direct_import.aar"],
59 static_libs: ["direct_import_dep"],
60 }
61
62 android_library_import {
63 name: "direct_import_dep",
64 sdk_version: "current",
65 aars: ["direct_import_dep.aar"],
66 }
67
68 android_library_import {
69 name: "transitive_import",
70 sdk_version: "current",
71 aars: ["transitive_import.aar"],
72 static_libs: ["transitive_import_dep"],
73 }
74
75 android_library_import {
76 name: "transitive_import_dep",
77 sdk_version: "current",
78 aars: ["transitive_import_dep.aar"],
79 }
80 `
81
Cole Faust9bef6742023-11-01 15:29:09 -070082 result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, bp)
Colin Cross02bccdf2023-07-14 11:19:08 -070083
Colin Cross90607e92025-02-11 14:58:07 -080084 manifestMergerRule := result.ModuleForTests(t, "app", "android_common").Rule("manifestMerger")
Colin Cross02bccdf2023-07-14 11:19:08 -070085 android.AssertPathRelativeToTopEquals(t, "main manifest",
86 "out/soong/.intermediates/app/android_common/manifest_fixer/AndroidManifest.xml",
87 manifestMergerRule.Input)
88 android.AssertPathsRelativeToTopEquals(t, "lib manifests",
89 []string{
90 "app/AndroidManifest2.xml",
91 "out/soong/.intermediates/direct/android_common/manifest_fixer/AndroidManifest.xml",
92 "direct/AndroidManifest2.xml",
93 "out/soong/.intermediates/transitive/android_common/manifest_fixer/AndroidManifest.xml",
94 "transitive/AndroidManifest2.xml",
95 "out/soong/.intermediates/transitive_import/android_common/aar/AndroidManifest.xml",
Colin Cross9055e212024-03-23 04:43:41 +000096 "out/soong/.intermediates/transitive_import_dep/android_common/aar/AndroidManifest.xml",
Colin Cross02bccdf2023-07-14 11:19:08 -070097 "out/soong/.intermediates/direct_import/android_common/aar/AndroidManifest.xml",
Colin Cross9055e212024-03-23 04:43:41 +000098 "out/soong/.intermediates/direct_import_dep/android_common/aar/AndroidManifest.xml",
Colin Cross02bccdf2023-07-14 11:19:08 -070099 },
100 manifestMergerRule.Implicits)
101}
Alix96ea88452023-08-31 15:48:23 +0000102
103func TestManifestValuesApplicationIdSetsPackageName(t *testing.T) {
Colin Cross844cb6a2025-01-29 15:53:21 -0800104 t.Parallel()
Alix96ea88452023-08-31 15:48:23 +0000105 bp := `
106 android_test {
107 name: "test",
108 sdk_version: "current",
109 srcs: ["app/app.java"],
110 manifest: "test/AndroidManifest.xml",
111 additional_manifests: ["test/AndroidManifest2.xml"],
112 static_libs: ["direct"],
113 test_suites: ["device-tests"],
114 manifest_values: {
115 applicationId: "new_package_name"
116 },
117 }
118
119 android_library {
120 name: "direct",
121 sdk_version: "current",
122 srcs: ["direct/direct.java"],
123 resource_dirs: ["direct/res"],
124 manifest: "direct/AndroidManifest.xml",
125 additional_manifests: ["direct/AndroidManifest2.xml"],
126 }
127
128 `
129
Cole Faust9bef6742023-11-01 15:29:09 -0700130 result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, bp)
Alix96ea88452023-08-31 15:48:23 +0000131
Colin Cross90607e92025-02-11 14:58:07 -0800132 manifestMergerRule := result.ModuleForTests(t, "test", "android_common").Rule("manifestMerger")
Alix96ea88452023-08-31 15:48:23 +0000133 android.AssertStringMatches(t,
134 "manifest merger args",
135 manifestMergerRule.Args["args"],
136 "--property PACKAGE=new_package_name")
137}