platform_build_soong/java/platform_bootclasspath_test.go
Paul Duffin b432df9cda Add dependencies from platform_bootclasspath to contents
Adds a FinalDeps mutator to add dependencies from the
platform_bootclasspath to the configured boot jars which can be from
either the platform or any apex. It adds dependencies for every
configured boot jar, whether in ArtApexJars, BootJars or
UpdatableBootJars.

At the moment the dependencies are only used for testing purposes
but following changes will make more use of them.

Bug: 177892522
Test: m nothing
Change-Id: I981305bf45bc20539a3d36987252f490e2b885cc
2021-04-08 18:53:04 +01:00

133 lines
3.4 KiB
Go

// 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",
})
})
}