blob: 0bb3ac95853669fe21556f5769fd44d3e5c84695 [file] [log] [blame]
Colin Cross638149e2019-01-05 22:12:12 -08001// Copyright 2018 Google Inc. All rights reserved.
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"
19)
20
21func TestDexpreoptEnabled(t *testing.T) {
Colin Cross323dc602020-09-18 14:25:31 -070022 t.Parallel()
Colin Cross638149e2019-01-05 22:12:12 -080023 tests := []struct {
24 name string
25 bp string
26 enabled bool
27 }{
28 {
29 name: "app",
30 bp: `
31 android_app {
32 name: "foo",
33 srcs: ["a.java"],
Jeongik Cha538c0d02019-07-11 15:54:27 +090034 sdk_version: "current",
Colin Cross638149e2019-01-05 22:12:12 -080035 }`,
36 enabled: true,
37 },
38 {
39 name: "installable java library",
40 bp: `
41 java_library {
42 name: "foo",
43 installable: true,
44 srcs: ["a.java"],
45 }`,
46 enabled: true,
47 },
48 {
49 name: "java binary",
50 bp: `
51 java_binary {
52 name: "foo",
53 srcs: ["a.java"],
54 }`,
55 enabled: true,
56 },
Colin Cross638149e2019-01-05 22:12:12 -080057 {
58 name: "app without sources",
59 bp: `
60 android_app {
61 name: "foo",
Jeongik Cha538c0d02019-07-11 15:54:27 +090062 sdk_version: "current",
Colin Cross638149e2019-01-05 22:12:12 -080063 }`,
Jaewoong Junga24af3b2019-05-13 09:23:20 -070064 enabled: false,
65 },
66 {
67 name: "app with libraries",
68 bp: `
69 android_app {
70 name: "foo",
71 static_libs: ["lib"],
Jeongik Cha538c0d02019-07-11 15:54:27 +090072 sdk_version: "current",
Jaewoong Junga24af3b2019-05-13 09:23:20 -070073 }
74
75 java_library {
76 name: "lib",
77 srcs: ["a.java"],
Jeongik Cha538c0d02019-07-11 15:54:27 +090078 sdk_version: "current",
Jaewoong Junga24af3b2019-05-13 09:23:20 -070079 }`,
Colin Cross638149e2019-01-05 22:12:12 -080080 enabled: true,
81 },
82 {
83 name: "installable java library without sources",
84 bp: `
85 java_library {
86 name: "foo",
87 installable: true,
88 }`,
Jaewoong Junga24af3b2019-05-13 09:23:20 -070089 enabled: false,
Colin Cross638149e2019-01-05 22:12:12 -080090 },
Colin Cross638149e2019-01-05 22:12:12 -080091 {
92 name: "static java library",
93 bp: `
94 java_library {
95 name: "foo",
96 srcs: ["a.java"],
97 }`,
98 enabled: false,
99 },
100 {
Colin Crosse3026872019-01-05 22:30:13 -0800101 name: "java test",
102 bp: `
103 java_test {
104 name: "foo",
105 srcs: ["a.java"],
106 }`,
107 enabled: false,
108 },
109 {
Colin Cross638149e2019-01-05 22:12:12 -0800110 name: "android test",
111 bp: `
112 android_test {
113 name: "foo",
114 srcs: ["a.java"],
115 }`,
116 enabled: false,
117 },
118 {
119 name: "android test helper app",
120 bp: `
121 android_test_helper_app {
122 name: "foo",
123 srcs: ["a.java"],
124 }`,
125 enabled: false,
126 },
Colin Crossdc2da912019-01-05 22:13:05 -0800127 {
128 name: "compile_dex",
129 bp: `
130 java_library {
131 name: "foo",
132 srcs: ["a.java"],
133 compile_dex: true,
134 }`,
135 enabled: false,
136 },
Colin Cross42be7612019-02-21 18:12:14 -0800137 {
138 name: "dex_import",
139 bp: `
140 dex_import {
141 name: "foo",
142 jars: ["a.jar"],
143 }`,
144 enabled: true,
145 },
Colin Cross638149e2019-01-05 22:12:12 -0800146 }
147
148 for _, test := range tests {
149 t.Run(test.name, func(t *testing.T) {
Jaewoong Jungf9a04432019-07-17 11:15:09 -0700150 ctx, _ := testJava(t, test.bp)
Colin Cross638149e2019-01-05 22:12:12 -0800151
152 dexpreopt := ctx.ModuleForTests("foo", "android_common").MaybeDescription("dexpreopt")
153 enabled := dexpreopt.Rule != nil
154
155 if enabled != test.enabled {
156 t.Fatalf("want dexpreopt %s, got %s", enabledString(test.enabled), enabledString(enabled))
157 }
158 })
159
160 }
161}
162
163func enabledString(enabled bool) string {
164 if enabled {
165 return "enabled"
166 } else {
167 return "disabled"
168 }
169}