blob: 7c918846229a7e5b2c2324782021096a72feb169 [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",
Colin Cross9055e212024-03-23 04:43:41 +000095 "out/soong/.intermediates/transitive_import_dep/android_common/aar/AndroidManifest.xml",
Colin Cross02bccdf2023-07-14 11:19:08 -070096 "out/soong/.intermediates/direct_import/android_common/aar/AndroidManifest.xml",
Colin Cross9055e212024-03-23 04:43:41 +000097 "out/soong/.intermediates/direct_import_dep/android_common/aar/AndroidManifest.xml",
Colin Cross02bccdf2023-07-14 11:19:08 -070098 },
99 manifestMergerRule.Implicits)
100}
Alix96ea88452023-08-31 15:48:23 +0000101
102func TestManifestValuesApplicationIdSetsPackageName(t *testing.T) {
103 bp := `
104 android_test {
105 name: "test",
106 sdk_version: "current",
107 srcs: ["app/app.java"],
108 manifest: "test/AndroidManifest.xml",
109 additional_manifests: ["test/AndroidManifest2.xml"],
110 static_libs: ["direct"],
111 test_suites: ["device-tests"],
112 manifest_values: {
113 applicationId: "new_package_name"
114 },
115 }
116
117 android_library {
118 name: "direct",
119 sdk_version: "current",
120 srcs: ["direct/direct.java"],
121 resource_dirs: ["direct/res"],
122 manifest: "direct/AndroidManifest.xml",
123 additional_manifests: ["direct/AndroidManifest2.xml"],
124 }
125
126 `
127
Cole Faust9bef6742023-11-01 15:29:09 -0700128 result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, bp)
Alix96ea88452023-08-31 15:48:23 +0000129
130 manifestMergerRule := result.ModuleForTests("test", "android_common").Rule("manifestMerger")
131 android.AssertStringMatches(t,
132 "manifest merger args",
133 manifestMergerRule.Args["args"],
134 "--property PACKAGE=new_package_name")
135}