blob: a9e0773b744faaeb0816db19bc43220743e4cf49 [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) {
22 tests := []struct {
23 name string
24 bp string
25 enabled bool
26 }{
27 {
28 name: "app",
29 bp: `
30 android_app {
31 name: "foo",
32 srcs: ["a.java"],
Jeongik Cha538c0d02019-07-11 15:54:27 +090033 sdk_version: "current",
Colin Cross638149e2019-01-05 22:12:12 -080034 }`,
35 enabled: true,
36 },
37 {
38 name: "installable java library",
39 bp: `
40 java_library {
41 name: "foo",
42 installable: true,
43 srcs: ["a.java"],
44 }`,
45 enabled: true,
46 },
47 {
48 name: "java binary",
49 bp: `
50 java_binary {
51 name: "foo",
52 srcs: ["a.java"],
53 }`,
54 enabled: true,
55 },
Colin Cross638149e2019-01-05 22:12:12 -080056 {
57 name: "app without sources",
58 bp: `
59 android_app {
60 name: "foo",
Jeongik Cha538c0d02019-07-11 15:54:27 +090061 sdk_version: "current",
Colin Cross638149e2019-01-05 22:12:12 -080062 }`,
Jaewoong Junga24af3b2019-05-13 09:23:20 -070063 enabled: false,
64 },
65 {
66 name: "app with libraries",
67 bp: `
68 android_app {
69 name: "foo",
70 static_libs: ["lib"],
Jeongik Cha538c0d02019-07-11 15:54:27 +090071 sdk_version: "current",
Jaewoong Junga24af3b2019-05-13 09:23:20 -070072 }
73
74 java_library {
75 name: "lib",
76 srcs: ["a.java"],
Jeongik Cha538c0d02019-07-11 15:54:27 +090077 sdk_version: "current",
Jaewoong Junga24af3b2019-05-13 09:23:20 -070078 }`,
Colin Cross638149e2019-01-05 22:12:12 -080079 enabled: true,
80 },
81 {
82 name: "installable java library without sources",
83 bp: `
84 java_library {
85 name: "foo",
86 installable: true,
87 }`,
Jaewoong Junga24af3b2019-05-13 09:23:20 -070088 enabled: false,
Colin Cross638149e2019-01-05 22:12:12 -080089 },
Colin Cross638149e2019-01-05 22:12:12 -080090 {
91 name: "static java library",
92 bp: `
93 java_library {
94 name: "foo",
95 srcs: ["a.java"],
96 }`,
97 enabled: false,
98 },
99 {
Colin Crosse3026872019-01-05 22:30:13 -0800100 name: "java test",
101 bp: `
102 java_test {
103 name: "foo",
104 srcs: ["a.java"],
105 }`,
106 enabled: false,
107 },
108 {
Colin Cross638149e2019-01-05 22:12:12 -0800109 name: "android test",
110 bp: `
111 android_test {
112 name: "foo",
113 srcs: ["a.java"],
114 }`,
115 enabled: false,
116 },
117 {
118 name: "android test helper app",
119 bp: `
120 android_test_helper_app {
121 name: "foo",
122 srcs: ["a.java"],
123 }`,
124 enabled: false,
125 },
Colin Crossdc2da912019-01-05 22:13:05 -0800126 {
127 name: "compile_dex",
128 bp: `
129 java_library {
130 name: "foo",
131 srcs: ["a.java"],
132 compile_dex: true,
133 }`,
134 enabled: false,
135 },
Colin Cross42be7612019-02-21 18:12:14 -0800136 {
137 name: "dex_import",
138 bp: `
139 dex_import {
140 name: "foo",
141 jars: ["a.jar"],
142 }`,
143 enabled: true,
144 },
Colin Cross638149e2019-01-05 22:12:12 -0800145 }
146
147 for _, test := range tests {
148 t.Run(test.name, func(t *testing.T) {
Jaewoong Jungf9a04432019-07-17 11:15:09 -0700149 ctx, _ := testJava(t, test.bp)
Colin Cross638149e2019-01-05 22:12:12 -0800150
Ulya Trafimovich76b08522021-01-14 17:52:43 +0000151 dexpreopt := ctx.ModuleForTests("foo", "android_common").MaybeRule("dexpreopt")
Colin Cross638149e2019-01-05 22:12:12 -0800152 enabled := dexpreopt.Rule != nil
153
154 if enabled != test.enabled {
155 t.Fatalf("want dexpreopt %s, got %s", enabledString(test.enabled), enabledString(enabled))
156 }
157 })
158
159 }
160}
161
162func enabledString(enabled bool) string {
163 if enabled {
164 return "enabled"
165 } else {
166 return "disabled"
167 }
168}