blob: 120bbf7f59972c62a00da37d9b70d12164399255 [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")
27 info := result.ModuleProvider(module, JavaInfoProvider).(JavaInfo)
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 Duffin71ae5942021-03-22 15:36:52 +000053 result := prepareForJavaTest.RunTest(t, addSourceSystemModules)
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 Duffin71ae5942021-03-22 15:36:52 +000080 result := prepareForJavaTest.RunTest(t, addPrebuiltSystemModules)
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 Duffin71ae5942021-03-22 15:36:52 +000092 result := prepareForJavaTest.RunTest(t,
Paul Duffinc52bea92021-03-11 08:10:19 +000093 addSourceSystemModules,
94 addPrebuiltSystemModules,
95 )
96
97 // check the existence of the source module
98 sourceSystemModules := result.ModuleForTests("system-modules", "android_common")
99 sourceInputs := sourceSystemModules.Rule("jarsTosystemModules").Inputs
100
101 // The expected paths are the header jars from the source input modules.
Paul Duffin29888b12021-03-29 00:04:10 +0100102 expectedSourcePaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2")
103 android.AssertArrayString(t, "source system modules inputs", expectedSourcePaths, sourceInputs.RelativeToTop().Strings())
Paul Duffinc52bea92021-03-11 08:10:19 +0000104
105 // check the existence of the renamed prebuilt module
106 prebuiltSystemModules := result.ModuleForTests("prebuilt_system-modules", "android_common")
107 prebuiltInputs := prebuiltSystemModules.Rule("jarsTosystemModules").Inputs
108
109 // The expected paths are the header jars from the renamed prebuilt input modules.
Paul Duffin29888b12021-03-29 00:04:10 +0100110 expectedPrebuiltPaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "prebuilt_system-module1", "prebuilt_system-module2")
111 android.AssertArrayString(t, "prebuilt system modules inputs", expectedPrebuiltPaths, prebuiltInputs.RelativeToTop().Strings())
Paul Duffindb284be2021-03-11 08:07:46 +0000112}