blob: e1866dedcfbabfd1806e6c59152f64d67af4ce95 [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
24// Contains some simple tests for boot_image logic, additional tests can be found in
25// apex/boot_image_test.go as the ART boot image requires modules from the ART apex.
26
Paul Duffin837486d2021-03-23 23:13:53 +000027var prepareForTestWithBootImage = android.GroupFixturePreparers(
28 PrepareForTestWithJavaDefaultModules,
29 dexpreopt.PrepareForTestByEnablingDexpreopt,
30)
31
Paul Duffin3451e162021-01-20 15:16:56 +000032func TestUnknownBootImage(t *testing.T) {
Paul Duffin837486d2021-03-23 23:13:53 +000033 prepareForTestWithBootImage.
34 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
35 `\Qimage_name: Unknown image name "unknown", expected one of art, boot\E`)).
36 RunTestWithBp(t, `
37 boot_image {
38 name: "unknown-boot-image",
39 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) {
45 prepareForTestWithBootImage.
46 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
47 `\Qimage_name: Unknown image name "unknown", expected one of art, boot\E`)).
48 RunTestWithBp(t, `
49 bootclasspath_fragment {
50 name: "unknown-boot-image",
51 image_name: "unknown",
52 }
53 `)
54}
55
Paul Duffinf7f65da2021-03-10 15:00:46 +000056func TestUnknownPrebuiltBootImage(t *testing.T) {
Paul Duffin837486d2021-03-23 23:13:53 +000057 prepareForTestWithBootImage.
58 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
59 `\Qimage_name: Unknown image name "unknown", expected one of art, boot\E`)).
60 RunTestWithBp(t, `
61 prebuilt_boot_image {
62 name: "unknown-boot-image",
63 image_name: "unknown",
64 }
65 `)
Paul Duffinf7f65da2021-03-10 15:00:46 +000066}
Paul Duffinc7ef9892021-03-23 23:21:59 +000067
68func TestBootImageInconsistentArtConfiguration_Platform(t *testing.T) {
69 android.GroupFixturePreparers(
70 prepareForTestWithBootImage,
71 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, `
76 boot_image {
77 name: "boot-image",
78 image_name: "art",
79 apex_available: [
80 "apex",
81 ],
82 }
83 `)
84}
85
86func TestBootImageInconsistentArtConfiguration_ApexMixture(t *testing.T) {
87 android.GroupFixturePreparers(
88 prepareForTestWithBootImage,
89 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, `
94 boot_image {
95 name: "boot-image",
96 image_name: "art",
97 apex_available: [
98 "apex1",
99 "apex2",
100 ],
101 }
102 `)
103}
Paul Duffin82886d62021-03-24 01:34:57 +0000104
105func TestBootImageWithoutImageNameOrContents(t *testing.T) {
106 prepareForTestWithBootImage.
107 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
108 `\Qneither of the "image_name" and "contents" properties\E`)).
109 RunTestWithBp(t, `
110 boot_image {
111 name: "boot-image",
112 }
113 `)
114}
115
116func TestBootImageWithImageNameAndContents(t *testing.T) {
117 prepareForTestWithBootImage.
118 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
119 `\Qboth of the "image_name" and "contents" properties\E`)).
120 RunTestWithBp(t, `
121 boot_image {
122 name: "boot-image",
123 image_name: "boot",
124 contents: ["other"],
125 }
126 `)
127}