| // Copyright (C) 2021 The Android Open Source Project |
| // |
| // 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" |
| "android/soong/dexpreopt" |
| ) |
| |
| // Contains some simple tests for platform_bootclasspath. |
| |
| var prepareForTestWithPlatformBootclasspath = android.GroupFixturePreparers( |
| PrepareForTestWithJavaDefaultModules, |
| dexpreopt.PrepareForTestByEnablingDexpreopt, |
| ) |
| |
| func TestPlatformBootclasspath(t *testing.T) { |
| preparer := android.GroupFixturePreparers( |
| prepareForTestWithPlatformBootclasspath, |
| dexpreopt.FixtureSetBootJars("platform:foo", "platform:bar"), |
| android.FixtureWithRootAndroidBp(` |
| platform_bootclasspath { |
| name: "platform-bootclasspath", |
| } |
| |
| java_library { |
| name: "bar", |
| srcs: ["a.java"], |
| system_modules: "none", |
| sdk_version: "none", |
| compile_dex: true, |
| } |
| `), |
| ) |
| |
| var addSourceBootclassPathModule = android.FixtureAddTextFile("source/Android.bp", ` |
| java_library { |
| name: "foo", |
| srcs: ["a.java"], |
| system_modules: "none", |
| sdk_version: "none", |
| compile_dex: true, |
| } |
| `) |
| |
| var addPrebuiltBootclassPathModule = android.FixtureAddTextFile("prebuilt/Android.bp", ` |
| java_import { |
| name: "foo", |
| jars: ["a.jar"], |
| compile_dex: true, |
| prefer: false, |
| } |
| `) |
| |
| var addPrebuiltPreferredBootclassPathModule = android.FixtureAddTextFile("prebuilt/Android.bp", ` |
| java_import { |
| name: "foo", |
| jars: ["a.jar"], |
| compile_dex: true, |
| prefer: true, |
| } |
| `) |
| |
| t.Run("missing", func(t *testing.T) { |
| preparer. |
| ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(`"platform-bootclasspath" depends on undefined module "foo"`)). |
| RunTest(t) |
| }) |
| |
| t.Run("source", func(t *testing.T) { |
| result := android.GroupFixturePreparers( |
| preparer, |
| addSourceBootclassPathModule, |
| ).RunTest(t) |
| |
| CheckPlatformBootclasspathModules(t, result, "platform-bootclasspath", []string{ |
| "platform:foo", |
| "platform:bar", |
| }) |
| }) |
| |
| t.Run("prebuilt", func(t *testing.T) { |
| result := android.GroupFixturePreparers( |
| preparer, |
| addPrebuiltBootclassPathModule, |
| ).RunTest(t) |
| |
| CheckPlatformBootclasspathModules(t, result, "platform-bootclasspath", []string{ |
| "platform:prebuilt_foo", |
| "platform:bar", |
| }) |
| }) |
| |
| t.Run("source+prebuilt - source preferred", func(t *testing.T) { |
| result := android.GroupFixturePreparers( |
| preparer, |
| addSourceBootclassPathModule, |
| addPrebuiltBootclassPathModule, |
| ).RunTest(t) |
| |
| CheckPlatformBootclasspathModules(t, result, "platform-bootclasspath", []string{ |
| "platform:foo", |
| "platform:bar", |
| }) |
| }) |
| |
| t.Run("source+prebuilt - prebuilt preferred", func(t *testing.T) { |
| result := android.GroupFixturePreparers( |
| preparer, |
| addSourceBootclassPathModule, |
| addPrebuiltPreferredBootclassPathModule, |
| ).RunTest(t) |
| |
| CheckPlatformBootclasspathModules(t, result, "platform-bootclasspath", []string{ |
| "platform:prebuilt_foo", |
| "platform:bar", |
| }) |
| }) |
| } |