blob: 524a2269b88a637653a0a20aa3ee4fe665e29c1a [file] [log] [blame]
Paul Duffin3451e162021-01-20 15:16:56 +00001// Copyright (C) 2021 The Android Open Source Project
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
15package java
16
17import (
18 "testing"
Paul Duffin837486d2021-03-23 23:13:53 +000019
20 "android/soong/android"
21 "android/soong/dexpreopt"
Paul Duffin3451e162021-01-20 15:16:56 +000022)
23
Paul Duffin7771eba2021-04-23 14:25:28 +010024// Contains some simple tests for bootclasspath_fragment logic, additional tests can be found in
25// apex/bootclasspath_fragment_test.go as the ART boot image requires modules from the ART apex.
Paul Duffin3451e162021-01-20 15:16:56 +000026
Paul Duffin7771eba2021-04-23 14:25:28 +010027var prepareForTestWithBootclasspathFragment = android.GroupFixturePreparers(
Paul Duffin837486d2021-03-23 23:13:53 +000028 PrepareForTestWithJavaDefaultModules,
29 dexpreopt.PrepareForTestByEnablingDexpreopt,
30)
31
Paul Duffin7771eba2021-04-23 14:25:28 +010032func TestUnknownBootclasspathFragment(t *testing.T) {
33 prepareForTestWithBootclasspathFragment.
Paul Duffin837486d2021-03-23 23:13:53 +000034 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
35 `\Qimage_name: Unknown image name "unknown", expected one of art, boot\E`)).
36 RunTestWithBp(t, `
Paul Duffin7771eba2021-04-23 14:25:28 +010037 bootclasspath_fragment {
38 name: "unknown-bootclasspath-fragment",
Paul Duffin837486d2021-03-23 23:13:53 +000039 image_name: "unknown",
40 }
41 `)
Paul Duffin3451e162021-01-20 15:16:56 +000042}
Paul Duffinf7f65da2021-03-10 15:00:46 +000043
Paul Duffin4b64ba02021-03-29 11:02:53 +010044func TestUnknownBootclasspathFragmentImageName(t *testing.T) {
Paul Duffin7771eba2021-04-23 14:25:28 +010045 prepareForTestWithBootclasspathFragment.
Paul Duffin4b64ba02021-03-29 11:02:53 +010046 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
47 `\Qimage_name: Unknown image name "unknown", expected one of art, boot\E`)).
48 RunTestWithBp(t, `
49 bootclasspath_fragment {
Paul Duffin7771eba2021-04-23 14:25:28 +010050 name: "unknown-bootclasspath-fragment",
Paul Duffin4b64ba02021-03-29 11:02:53 +010051 image_name: "unknown",
52 }
53 `)
54}
55
Paul Duffin7771eba2021-04-23 14:25:28 +010056func TestUnknownPrebuiltBootclasspathFragment(t *testing.T) {
57 prepareForTestWithBootclasspathFragment.
Paul Duffin837486d2021-03-23 23:13:53 +000058 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
59 `\Qimage_name: Unknown image name "unknown", expected one of art, boot\E`)).
60 RunTestWithBp(t, `
Paul Duffin7771eba2021-04-23 14:25:28 +010061 prebuilt_bootclasspath_fragment {
62 name: "unknown-bootclasspath-fragment",
Paul Duffin837486d2021-03-23 23:13:53 +000063 image_name: "unknown",
64 }
65 `)
Paul Duffinf7f65da2021-03-10 15:00:46 +000066}
Paul Duffinc7ef9892021-03-23 23:21:59 +000067
Paul Duffin7771eba2021-04-23 14:25:28 +010068func TestBootclasspathFragmentInconsistentArtConfiguration_Platform(t *testing.T) {
Paul Duffinc7ef9892021-03-23 23:21:59 +000069 android.GroupFixturePreparers(
Paul Duffin7771eba2021-04-23 14:25:28 +010070 prepareForTestWithBootclasspathFragment,
Paul Duffinc7ef9892021-03-23 23:21:59 +000071 dexpreopt.FixtureSetArtBootJars("platform:foo", "apex:bar"),
72 ).
73 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
74 `\QArtApexJars is invalid as it requests a platform variant of "foo"\E`)).
75 RunTestWithBp(t, `
Paul Duffin7771eba2021-04-23 14:25:28 +010076 bootclasspath_fragment {
77 name: "bootclasspath-fragment",
Paul Duffinc7ef9892021-03-23 23:21:59 +000078 image_name: "art",
79 apex_available: [
80 "apex",
81 ],
82 }
83 `)
84}
85
Paul Duffin7771eba2021-04-23 14:25:28 +010086func TestBootclasspathFragmentInconsistentArtConfiguration_ApexMixture(t *testing.T) {
Paul Duffinc7ef9892021-03-23 23:21:59 +000087 android.GroupFixturePreparers(
Paul Duffin7771eba2021-04-23 14:25:28 +010088 prepareForTestWithBootclasspathFragment,
Paul Duffinc7ef9892021-03-23 23:21:59 +000089 dexpreopt.FixtureSetArtBootJars("apex1:foo", "apex2:bar"),
90 ).
91 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
92 `\QArtApexJars configuration is inconsistent, expected all jars to be in the same apex but it specifies apex "apex1" and "apex2"\E`)).
93 RunTestWithBp(t, `
Paul Duffin7771eba2021-04-23 14:25:28 +010094 bootclasspath_fragment {
95 name: "bootclasspath-fragment",
Paul Duffinc7ef9892021-03-23 23:21:59 +000096 image_name: "art",
97 apex_available: [
98 "apex1",
99 "apex2",
100 ],
101 }
102 `)
103}
Paul Duffin82886d62021-03-24 01:34:57 +0000104
Paul Duffin7771eba2021-04-23 14:25:28 +0100105func TestBootclasspathFragmentWithoutImageNameOrContents(t *testing.T) {
106 prepareForTestWithBootclasspathFragment.
Paul Duffin82886d62021-03-24 01:34:57 +0000107 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
108 `\Qneither of the "image_name" and "contents" properties\E`)).
109 RunTestWithBp(t, `
Paul Duffin7771eba2021-04-23 14:25:28 +0100110 bootclasspath_fragment {
111 name: "bootclasspath-fragment",
Paul Duffin82886d62021-03-24 01:34:57 +0000112 }
113 `)
114}
115
Paul Duffin7771eba2021-04-23 14:25:28 +0100116func TestBootclasspathFragmentWithImageNameAndContents(t *testing.T) {
117 prepareForTestWithBootclasspathFragment.
Paul Duffin82886d62021-03-24 01:34:57 +0000118 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
119 `\Qboth of the "image_name" and "contents" properties\E`)).
120 RunTestWithBp(t, `
Paul Duffin7771eba2021-04-23 14:25:28 +0100121 bootclasspath_fragment {
122 name: "bootclasspath-fragment",
Paul Duffin82886d62021-03-24 01:34:57 +0000123 image_name: "boot",
124 contents: ["other"],
125 }
126 `)
127}