blob: 2ceca5d0bf2cf78c10179cd8249a26e1922842c5 [file] [log] [blame]
Paul Duffindb284be2021-03-11 08:07:46 +00001// 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 java
16
17import (
Paul Duffindb284be2021-03-11 08:07:46 +000018 "testing"
Paul Duffinc52bea92021-03-11 08:10:19 +000019
20 "android/soong/android"
Paul Duffindb284be2021-03-11 08:07:46 +000021)
22
Paul Duffin29888b12021-03-29 00:04:10 +010023func getModuleHeaderJarsAsRelativeToTopPaths(result *android.TestResult, moduleNames ...string) []string {
Paul Duffinc52bea92021-03-11 08:10:19 +000024 paths := []string{}
25 for _, moduleName := range moduleNames {
26 module := result.Module(moduleName, "android_common")
Colin Cross5a377182023-12-14 14:46:23 -080027 info, _ := android.SingletonModuleProvider(result, module, JavaInfoProvider)
Paul Duffin29888b12021-03-29 00:04:10 +010028 paths = append(paths, info.HeaderJars.RelativeToTop().Strings()...)
Paul Duffinc52bea92021-03-11 08:10:19 +000029 }
30 return paths
31}
32
33var addSourceSystemModules = android.FixtureAddTextFile("source/Android.bp", `
Paul Duffindb284be2021-03-11 08:07:46 +000034 java_system_modules {
35 name: "system-modules",
36 libs: ["system-module1", "system-module2"],
37 }
38 java_library {
39 name: "system-module1",
40 srcs: ["a.java"],
41 sdk_version: "none",
42 system_modules: "none",
43 }
44 java_library {
45 name: "system-module2",
46 srcs: ["b.java"],
47 sdk_version: "none",
48 system_modules: "none",
49 }
Paul Duffinc52bea92021-03-11 08:10:19 +000050`)
Paul Duffindb284be2021-03-11 08:07:46 +000051
Paul Duffinc52bea92021-03-11 08:10:19 +000052func TestJavaSystemModules(t *testing.T) {
Paul Duffin55e740e2021-03-29 02:06:19 +010053 result := android.GroupFixturePreparers(prepareForJavaTest, addSourceSystemModules).RunTest(t)
Paul Duffindb284be2021-03-11 08:07:46 +000054
Paul Duffinc52bea92021-03-11 08:10:19 +000055 // check the existence of the source module
56 sourceSystemModules := result.ModuleForTests("system-modules", "android_common")
57 sourceInputs := sourceSystemModules.Rule("jarsTosystemModules").Inputs
Paul Duffindb284be2021-03-11 08:07:46 +000058
Paul Duffinc52bea92021-03-11 08:10:19 +000059 // The expected paths are the header jars from the source input modules.
Paul Duffin29888b12021-03-29 00:04:10 +010060 expectedSourcePaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2")
61 android.AssertArrayString(t, "source system modules inputs", expectedSourcePaths, sourceInputs.RelativeToTop().Strings())
Paul Duffindb284be2021-03-11 08:07:46 +000062}
63
Paul Duffinc52bea92021-03-11 08:10:19 +000064var addPrebuiltSystemModules = android.FixtureAddTextFile("prebuilts/Android.bp", `
Paul Duffindb284be2021-03-11 08:07:46 +000065 java_system_modules_import {
66 name: "system-modules",
67 libs: ["system-module1", "system-module2"],
68 }
69 java_import {
70 name: "system-module1",
71 jars: ["a.jar"],
72 }
73 java_import {
74 name: "system-module2",
75 jars: ["b.jar"],
76 }
Paul Duffinc52bea92021-03-11 08:10:19 +000077`)
Paul Duffindb284be2021-03-11 08:07:46 +000078
Paul Duffinc52bea92021-03-11 08:10:19 +000079func TestJavaSystemModulesImport(t *testing.T) {
Paul Duffin55e740e2021-03-29 02:06:19 +010080 result := android.GroupFixturePreparers(prepareForJavaTest, addPrebuiltSystemModules).RunTest(t)
Paul Duffindb284be2021-03-11 08:07:46 +000081
Paul Duffinc52bea92021-03-11 08:10:19 +000082 // check the existence of the renamed prebuilt module
83 prebuiltSystemModules := result.ModuleForTests("system-modules", "android_common")
84 prebuiltInputs := prebuiltSystemModules.Rule("jarsTosystemModules").Inputs
Paul Duffindb284be2021-03-11 08:07:46 +000085
Paul Duffinc52bea92021-03-11 08:10:19 +000086 // The expected paths are the header jars from the renamed prebuilt input modules.
Paul Duffin29888b12021-03-29 00:04:10 +010087 expectedPrebuiltPaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2")
88 android.AssertArrayString(t, "renamed prebuilt system modules inputs", expectedPrebuiltPaths, prebuiltInputs.RelativeToTop().Strings())
Paul Duffinc52bea92021-03-11 08:10:19 +000089}
90
91func TestJavaSystemModulesMixSourceAndPrebuilt(t *testing.T) {
Paul Duffin55e740e2021-03-29 02:06:19 +010092 result := android.GroupFixturePreparers(
93 prepareForJavaTest,
Paul Duffinc52bea92021-03-11 08:10:19 +000094 addSourceSystemModules,
95 addPrebuiltSystemModules,
Paul Duffin55e740e2021-03-29 02:06:19 +010096 ).RunTest(t)
Paul Duffinc52bea92021-03-11 08:10:19 +000097
98 // check the existence of the source module
99 sourceSystemModules := result.ModuleForTests("system-modules", "android_common")
100 sourceInputs := sourceSystemModules.Rule("jarsTosystemModules").Inputs
101
102 // The expected paths are the header jars from the source input modules.
Paul Duffin29888b12021-03-29 00:04:10 +0100103 expectedSourcePaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2")
104 android.AssertArrayString(t, "source system modules inputs", expectedSourcePaths, sourceInputs.RelativeToTop().Strings())
Paul Duffinc52bea92021-03-11 08:10:19 +0000105
106 // check the existence of the renamed prebuilt module
107 prebuiltSystemModules := result.ModuleForTests("prebuilt_system-modules", "android_common")
108 prebuiltInputs := prebuiltSystemModules.Rule("jarsTosystemModules").Inputs
109
110 // The expected paths are the header jars from the renamed prebuilt input modules.
Paul Duffin29888b12021-03-29 00:04:10 +0100111 expectedPrebuiltPaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "prebuilt_system-module1", "prebuilt_system-module2")
112 android.AssertArrayString(t, "prebuilt system modules inputs", expectedPrebuiltPaths, prebuiltInputs.RelativeToTop().Strings())
Paul Duffindb284be2021-03-11 08:07:46 +0000113}