system_modules_test.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // 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. package java
  15. import (
  16. "testing"
  17. "android/soong/android"
  18. )
  19. func getModuleHeaderJarsAsRelativeToTopPaths(result *android.TestResult, moduleNames ...string) []string {
  20. paths := []string{}
  21. for _, moduleName := range moduleNames {
  22. module := result.Module(moduleName, "android_common")
  23. info := result.ModuleProvider(module, JavaInfoProvider).(JavaInfo)
  24. paths = append(paths, info.HeaderJars.RelativeToTop().Strings()...)
  25. }
  26. return paths
  27. }
  28. var addSourceSystemModules = android.FixtureAddTextFile("source/Android.bp", `
  29. java_system_modules {
  30. name: "system-modules",
  31. libs: ["system-module1", "system-module2"],
  32. }
  33. java_library {
  34. name: "system-module1",
  35. srcs: ["a.java"],
  36. sdk_version: "none",
  37. system_modules: "none",
  38. }
  39. java_library {
  40. name: "system-module2",
  41. srcs: ["b.java"],
  42. sdk_version: "none",
  43. system_modules: "none",
  44. }
  45. `)
  46. func TestJavaSystemModules(t *testing.T) {
  47. result := android.GroupFixturePreparers(prepareForJavaTest, addSourceSystemModules).RunTest(t)
  48. // check the existence of the source module
  49. sourceSystemModules := result.ModuleForTests("system-modules", "android_common")
  50. sourceInputs := sourceSystemModules.Rule("jarsTosystemModules").Inputs
  51. // The expected paths are the header jars from the source input modules.
  52. expectedSourcePaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2")
  53. android.AssertArrayString(t, "source system modules inputs", expectedSourcePaths, sourceInputs.RelativeToTop().Strings())
  54. }
  55. var addPrebuiltSystemModules = android.FixtureAddTextFile("prebuilts/Android.bp", `
  56. java_system_modules_import {
  57. name: "system-modules",
  58. libs: ["system-module1", "system-module2"],
  59. }
  60. java_import {
  61. name: "system-module1",
  62. jars: ["a.jar"],
  63. }
  64. java_import {
  65. name: "system-module2",
  66. jars: ["b.jar"],
  67. }
  68. `)
  69. func TestJavaSystemModulesImport(t *testing.T) {
  70. result := android.GroupFixturePreparers(prepareForJavaTest, addPrebuiltSystemModules).RunTest(t)
  71. // check the existence of the renamed prebuilt module
  72. prebuiltSystemModules := result.ModuleForTests("system-modules", "android_common")
  73. prebuiltInputs := prebuiltSystemModules.Rule("jarsTosystemModules").Inputs
  74. // The expected paths are the header jars from the renamed prebuilt input modules.
  75. expectedPrebuiltPaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2")
  76. android.AssertArrayString(t, "renamed prebuilt system modules inputs", expectedPrebuiltPaths, prebuiltInputs.RelativeToTop().Strings())
  77. }
  78. func TestJavaSystemModulesMixSourceAndPrebuilt(t *testing.T) {
  79. result := android.GroupFixturePreparers(
  80. prepareForJavaTest,
  81. addSourceSystemModules,
  82. addPrebuiltSystemModules,
  83. ).RunTest(t)
  84. // check the existence of the source module
  85. sourceSystemModules := result.ModuleForTests("system-modules", "android_common")
  86. sourceInputs := sourceSystemModules.Rule("jarsTosystemModules").Inputs
  87. // The expected paths are the header jars from the source input modules.
  88. expectedSourcePaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "system-module1", "system-module2")
  89. android.AssertArrayString(t, "source system modules inputs", expectedSourcePaths, sourceInputs.RelativeToTop().Strings())
  90. // check the existence of the renamed prebuilt module
  91. prebuiltSystemModules := result.ModuleForTests("prebuilt_system-modules", "android_common")
  92. prebuiltInputs := prebuiltSystemModules.Rule("jarsTosystemModules").Inputs
  93. // The expected paths are the header jars from the renamed prebuilt input modules.
  94. expectedPrebuiltPaths := getModuleHeaderJarsAsRelativeToTopPaths(result, "prebuilt_system-module1", "prebuilt_system-module2")
  95. android.AssertArrayString(t, "prebuilt system modules inputs", expectedPrebuiltPaths, prebuiltInputs.RelativeToTop().Strings())
  96. }