blob: 22b7bb9d52b5b95a142b9d43991bcd8ea246eeba [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"],
33 }`,
34 enabled: true,
35 },
36 {
37 name: "installable java library",
38 bp: `
39 java_library {
40 name: "foo",
41 installable: true,
42 srcs: ["a.java"],
43 }`,
44 enabled: true,
45 },
46 {
47 name: "java binary",
48 bp: `
49 java_binary {
50 name: "foo",
51 srcs: ["a.java"],
52 }`,
53 enabled: true,
54 },
Colin Cross638149e2019-01-05 22:12:12 -080055 {
56 name: "app without sources",
57 bp: `
58 android_app {
59 name: "foo",
60 }`,
Jaewoong Junga24af3b2019-05-13 09:23:20 -070061 enabled: false,
62 },
63 {
64 name: "app with libraries",
65 bp: `
66 android_app {
67 name: "foo",
68 static_libs: ["lib"],
69 }
70
71 java_library {
72 name: "lib",
73 srcs: ["a.java"],
74 }`,
Colin Cross638149e2019-01-05 22:12:12 -080075 enabled: true,
76 },
77 {
78 name: "installable java library without sources",
79 bp: `
80 java_library {
81 name: "foo",
82 installable: true,
83 }`,
Jaewoong Junga24af3b2019-05-13 09:23:20 -070084 enabled: false,
Colin Cross638149e2019-01-05 22:12:12 -080085 },
Colin Cross638149e2019-01-05 22:12:12 -080086 {
87 name: "static java library",
88 bp: `
89 java_library {
90 name: "foo",
91 srcs: ["a.java"],
92 }`,
93 enabled: false,
94 },
95 {
Colin Crosse3026872019-01-05 22:30:13 -080096 name: "java test",
97 bp: `
98 java_test {
99 name: "foo",
100 srcs: ["a.java"],
101 }`,
102 enabled: false,
103 },
104 {
Colin Cross638149e2019-01-05 22:12:12 -0800105 name: "android test",
106 bp: `
107 android_test {
108 name: "foo",
109 srcs: ["a.java"],
110 }`,
111 enabled: false,
112 },
113 {
114 name: "android test helper app",
115 bp: `
116 android_test_helper_app {
117 name: "foo",
118 srcs: ["a.java"],
119 }`,
120 enabled: false,
121 },
Colin Crossdc2da912019-01-05 22:13:05 -0800122 {
123 name: "compile_dex",
124 bp: `
125 java_library {
126 name: "foo",
127 srcs: ["a.java"],
128 compile_dex: true,
129 }`,
130 enabled: false,
131 },
Colin Cross42be7612019-02-21 18:12:14 -0800132 {
133 name: "dex_import",
134 bp: `
135 dex_import {
136 name: "foo",
137 jars: ["a.jar"],
138 }`,
139 enabled: true,
140 },
Colin Cross638149e2019-01-05 22:12:12 -0800141 }
142
143 for _, test := range tests {
144 t.Run(test.name, func(t *testing.T) {
Jaewoong Jungf9a04432019-07-17 11:15:09 -0700145 ctx, _ := testJava(t, test.bp)
Colin Cross638149e2019-01-05 22:12:12 -0800146
147 dexpreopt := ctx.ModuleForTests("foo", "android_common").MaybeDescription("dexpreopt")
148 enabled := dexpreopt.Rule != nil
149
150 if enabled != test.enabled {
151 t.Fatalf("want dexpreopt %s, got %s", enabledString(test.enabled), enabledString(enabled))
152 }
153 })
154
155 }
156}
157
158func enabledString(enabled bool) string {
159 if enabled {
160 return "enabled"
161 } else {
162 return "disabled"
163 }
164}