blob: d1aef2c19a376d8ca1338b1ea10b0a766ff2898c [file] [log] [blame]
Colin Crossbe9cdb82019-01-21 21:37:16 -08001// Copyright 2019 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 "android/soong/android"
19 "testing"
20)
21
22func TestNoPlugin(t *testing.T) {
23 ctx := testJava(t, `
24 java_library {
25 name: "foo",
26 srcs: ["a.java"],
27 }
28 `)
29
30 javac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
31 turbine := ctx.ModuleForTests("foo", "android_common").MaybeRule("turbine")
32
33 if turbine.Rule == nil {
34 t.Errorf("expected turbine to be enabled")
35 }
36
37 if javac.Args["processsorpath"] != "" {
38 t.Errorf("want empty processorpath, got %q", javac.Args["processorpath"])
39 }
40
Colin Cross7788c122019-01-23 16:14:02 -080041 if javac.Args["processor"] != "-proc:none" {
42 t.Errorf("want '-proc:none' argument, got %q", javac.Args["processor"])
Colin Crossbe9cdb82019-01-21 21:37:16 -080043 }
44}
45
46func TestPlugin(t *testing.T) {
47 ctx := testJava(t, `
48 java_library {
49 name: "foo",
50 srcs: ["a.java"],
51 plugins: ["bar"],
52 }
53
54 java_plugin {
55 name: "bar",
56 processor_class: "com.bar",
57 srcs: ["b.java"],
58 }
59 `)
60
61 buildOS := android.BuildOs.String()
62
63 javac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
64 turbine := ctx.ModuleForTests("foo", "android_common").MaybeRule("turbine")
65
66 if turbine.Rule == nil {
67 t.Errorf("expected turbine to be enabled")
68 }
69
70 bar := ctx.ModuleForTests("bar", buildOS+"_common").Rule("javac").Output.String()
71
72 if !inList(bar, javac.Implicits.Strings()) {
73 t.Errorf("foo implicits %v does not contain %q", javac.Implicits.Strings(), bar)
74 }
75
76 if javac.Args["processorpath"] != "-processorpath "+bar {
77 t.Errorf("foo processorpath %q != '-processorpath %s'", javac.Args["processorpath"], bar)
78 }
79
80 if javac.Args["processor"] != "-processor com.bar" {
81 t.Errorf("foo processor %q != '-processor com.bar'", javac.Args["processor"])
82 }
83}
84
85func TestPluginGeneratesApi(t *testing.T) {
86 ctx := testJava(t, `
87 java_library {
88 name: "foo",
89 srcs: ["a.java"],
90 plugins: ["bar"],
91 }
92
93 java_plugin {
94 name: "bar",
95 processor_class: "com.bar",
96 generates_api: true,
97 srcs: ["b.java"],
98 }
99 `)
100
101 buildOS := android.BuildOs.String()
102
103 javac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
104 turbine := ctx.ModuleForTests("foo", "android_common").MaybeRule("turbine")
105
106 if turbine.Rule != nil {
107 t.Errorf("expected turbine to be disabled")
108 }
109
110 bar := ctx.ModuleForTests("bar", buildOS+"_common").Rule("javac").Output.String()
111
112 if !inList(bar, javac.Implicits.Strings()) {
113 t.Errorf("foo implicits %v does not contain %q", javac.Implicits.Strings(), bar)
114 }
115
116 if javac.Args["processorpath"] != "-processorpath "+bar {
117 t.Errorf("foo processorpath %q != '-processorpath %s'", javac.Args["processorpath"], bar)
118 }
119
120 if javac.Args["processor"] != "-processor com.bar" {
121 t.Errorf("foo processor %q != '-processor com.bar'", javac.Args["processor"])
122 }
123}