diff options
Diffstat (limited to 'java/system_modules_test.go')
-rw-r--r-- | java/system_modules_test.go | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/java/system_modules_test.go b/java/system_modules_test.go new file mode 100644 index 000000000..7b5a3867e --- /dev/null +++ b/java/system_modules_test.go @@ -0,0 +1,113 @@ +// Copyright 2021 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package java + +import ( + "testing" + + "android/soong/android" +) + +func getModuleHeaderJarsAsRelativeToTopPaths(result *android.TestResult, moduleNames ...string) []string { + paths := []string{} + for _, moduleName := range moduleNames { + module := result.Module(moduleName, "android_common") + info := result.ModuleProvider(module, JavaInfoProvider).(JavaInfo) + paths = append(paths, info.HeaderJars.RelativeToTop().Strings()...) + } + return paths +} + +var addSourceSystemModules = android.FixtureAddTextFile("source/Android.bp", ` + java_system_modules { + name: "system-modules", + libs: ["system-module1", "system-module2"], + } + java_library { + name: "system-module1", + srcs: ["a.java"], + sdk_version: "none", + system_modules: "none", + } + java_library { + name: "system-module2", + srcs: ["b.java"], + sdk_version: "none", + system_modules: "none", + } +`) + +func TestJavaSystemModules(t *testing.T) { + result := android.GroupFixturePreparers(prepareForJavaTest, addSourceSystemModules).RunTest(t) + + // check the existence of the source module + sourceSystemModules := result.ModuleForTests("system-modules", "android_common") + sourceInputs := sourceSystemModules.Rule("jarsTosystemModules").Inputs + + // The expected paths are the header jars from the source input modules. + expectedSourcePaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2") + android.AssertArrayString(t, "source system modules inputs", expectedSourcePaths, sourceInputs.RelativeToTop().Strings()) +} + +var addPrebuiltSystemModules = android.FixtureAddTextFile("prebuilts/Android.bp", ` + java_system_modules_import { + name: "system-modules", + libs: ["system-module1", "system-module2"], + } + java_import { + name: "system-module1", + jars: ["a.jar"], + } + java_import { + name: "system-module2", + jars: ["b.jar"], + } +`) + +func TestJavaSystemModulesImport(t *testing.T) { + result := android.GroupFixturePreparers(prepareForJavaTest, addPrebuiltSystemModules).RunTest(t) + + // check the existence of the renamed prebuilt module + prebuiltSystemModules := result.ModuleForTests("system-modules", "android_common") + prebuiltInputs := prebuiltSystemModules.Rule("jarsTosystemModules").Inputs + + // The expected paths are the header jars from the renamed prebuilt input modules. + expectedPrebuiltPaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2") + android.AssertArrayString(t, "renamed prebuilt system modules inputs", expectedPrebuiltPaths, prebuiltInputs.RelativeToTop().Strings()) +} + +func TestJavaSystemModulesMixSourceAndPrebuilt(t *testing.T) { + result := android.GroupFixturePreparers( + prepareForJavaTest, + addSourceSystemModules, + addPrebuiltSystemModules, + ).RunTest(t) + + // check the existence of the source module + sourceSystemModules := result.ModuleForTests("system-modules", "android_common") + sourceInputs := sourceSystemModules.Rule("jarsTosystemModules").Inputs + + // The expected paths are the header jars from the source input modules. + expectedSourcePaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2") + android.AssertArrayString(t, "source system modules inputs", expectedSourcePaths, sourceInputs.RelativeToTop().Strings()) + + // check the existence of the renamed prebuilt module + prebuiltSystemModules := result.ModuleForTests("prebuilt_system-modules", "android_common") + prebuiltInputs := prebuiltSystemModules.Rule("jarsTosystemModules").Inputs + + // The expected paths are the header jars from the renamed prebuilt input modules. + expectedPrebuiltPaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "prebuilt_system-module1", "prebuilt_system-module2") + android.AssertArrayString(t, "prebuilt system modules inputs", expectedPrebuiltPaths, prebuiltInputs.RelativeToTop().Strings()) +} |