blob: ebbe3a5eebdf2a8681640c2459a75db34bee14a6 [file] [log] [blame]
// 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",
})
})
}