xref: /aosp_15_r20/build/soong/java/plugin_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Worker// Copyright 2019 Google Inc. All rights reserved.
2*333d2b36SAndroid Build Coastguard Worker//
3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*333d2b36SAndroid Build Coastguard Worker//
7*333d2b36SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*333d2b36SAndroid Build Coastguard Worker//
9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*333d2b36SAndroid Build Coastguard Worker// limitations under the License.
14*333d2b36SAndroid Build Coastguard Worker
15*333d2b36SAndroid Build Coastguard Workerpackage java
16*333d2b36SAndroid Build Coastguard Worker
17*333d2b36SAndroid Build Coastguard Workerimport (
18*333d2b36SAndroid Build Coastguard Worker	"testing"
19*333d2b36SAndroid Build Coastguard Worker)
20*333d2b36SAndroid Build Coastguard Worker
21*333d2b36SAndroid Build Coastguard Workerfunc TestNoPlugin(t *testing.T) {
22*333d2b36SAndroid Build Coastguard Worker	ctx, _ := testJava(t, `
23*333d2b36SAndroid Build Coastguard Worker		java_library {
24*333d2b36SAndroid Build Coastguard Worker			name: "foo",
25*333d2b36SAndroid Build Coastguard Worker			srcs: ["a.java"],
26*333d2b36SAndroid Build Coastguard Worker		}
27*333d2b36SAndroid Build Coastguard Worker	`)
28*333d2b36SAndroid Build Coastguard Worker
29*333d2b36SAndroid Build Coastguard Worker	javac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
30*333d2b36SAndroid Build Coastguard Worker	turbine := ctx.ModuleForTests("foo", "android_common").MaybeRule("turbine")
31*333d2b36SAndroid Build Coastguard Worker
32*333d2b36SAndroid Build Coastguard Worker	if turbine.Rule == nil {
33*333d2b36SAndroid Build Coastguard Worker		t.Errorf("expected turbine to be enabled")
34*333d2b36SAndroid Build Coastguard Worker	}
35*333d2b36SAndroid Build Coastguard Worker
36*333d2b36SAndroid Build Coastguard Worker	if javac.Args["processsorpath"] != "" {
37*333d2b36SAndroid Build Coastguard Worker		t.Errorf("want empty processorpath, got %q", javac.Args["processorpath"])
38*333d2b36SAndroid Build Coastguard Worker	}
39*333d2b36SAndroid Build Coastguard Worker
40*333d2b36SAndroid Build Coastguard Worker	if javac.Args["processor"] != "-proc:none" {
41*333d2b36SAndroid Build Coastguard Worker		t.Errorf("want '-proc:none' argument, got %q", javac.Args["processor"])
42*333d2b36SAndroid Build Coastguard Worker	}
43*333d2b36SAndroid Build Coastguard Worker}
44*333d2b36SAndroid Build Coastguard Worker
45*333d2b36SAndroid Build Coastguard Workerfunc TestPlugin(t *testing.T) {
46*333d2b36SAndroid Build Coastguard Worker	ctx, _ := testJava(t, `
47*333d2b36SAndroid Build Coastguard Worker		java_library {
48*333d2b36SAndroid Build Coastguard Worker			name: "foo",
49*333d2b36SAndroid Build Coastguard Worker			srcs: ["a.java"],
50*333d2b36SAndroid Build Coastguard Worker			plugins: ["bar"],
51*333d2b36SAndroid Build Coastguard Worker		}
52*333d2b36SAndroid Build Coastguard Worker
53*333d2b36SAndroid Build Coastguard Worker		java_plugin {
54*333d2b36SAndroid Build Coastguard Worker			name: "bar",
55*333d2b36SAndroid Build Coastguard Worker			processor_class: "com.bar",
56*333d2b36SAndroid Build Coastguard Worker			srcs: ["b.java"],
57*333d2b36SAndroid Build Coastguard Worker		}
58*333d2b36SAndroid Build Coastguard Worker	`)
59*333d2b36SAndroid Build Coastguard Worker
60*333d2b36SAndroid Build Coastguard Worker	buildOS := ctx.Config().BuildOS.String()
61*333d2b36SAndroid Build Coastguard Worker
62*333d2b36SAndroid Build Coastguard Worker	javac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
63*333d2b36SAndroid Build Coastguard Worker	turbine := ctx.ModuleForTests("foo", "android_common").MaybeRule("turbine")
64*333d2b36SAndroid Build Coastguard Worker
65*333d2b36SAndroid Build Coastguard Worker	if turbine.Rule == nil {
66*333d2b36SAndroid Build Coastguard Worker		t.Errorf("expected turbine to be enabled")
67*333d2b36SAndroid Build Coastguard Worker	}
68*333d2b36SAndroid Build Coastguard Worker
69*333d2b36SAndroid Build Coastguard Worker	bar := ctx.ModuleForTests("bar", buildOS+"_common").Rule("javac").Output.String()
70*333d2b36SAndroid Build Coastguard Worker
71*333d2b36SAndroid Build Coastguard Worker	if !inList(bar, javac.Implicits.Strings()) {
72*333d2b36SAndroid Build Coastguard Worker		t.Errorf("foo implicits %v does not contain %q", javac.Implicits.Strings(), bar)
73*333d2b36SAndroid Build Coastguard Worker	}
74*333d2b36SAndroid Build Coastguard Worker
75*333d2b36SAndroid Build Coastguard Worker	if javac.Args["processorpath"] != "-processorpath "+bar {
76*333d2b36SAndroid Build Coastguard Worker		t.Errorf("foo processorpath %q != '-processorpath %s'", javac.Args["processorpath"], bar)
77*333d2b36SAndroid Build Coastguard Worker	}
78*333d2b36SAndroid Build Coastguard Worker
79*333d2b36SAndroid Build Coastguard Worker	if javac.Args["processor"] != "-processor com.bar" {
80*333d2b36SAndroid Build Coastguard Worker		t.Errorf("foo processor %q != '-processor com.bar'", javac.Args["processor"])
81*333d2b36SAndroid Build Coastguard Worker	}
82*333d2b36SAndroid Build Coastguard Worker}
83*333d2b36SAndroid Build Coastguard Worker
84*333d2b36SAndroid Build Coastguard Workerfunc TestPluginGeneratesApi(t *testing.T) {
85*333d2b36SAndroid Build Coastguard Worker	ctx, _ := testJava(t, `
86*333d2b36SAndroid Build Coastguard Worker		java_library {
87*333d2b36SAndroid Build Coastguard Worker			name: "foo",
88*333d2b36SAndroid Build Coastguard Worker			srcs: ["a.java"],
89*333d2b36SAndroid Build Coastguard Worker			plugins: ["bar"],
90*333d2b36SAndroid Build Coastguard Worker		}
91*333d2b36SAndroid Build Coastguard Worker
92*333d2b36SAndroid Build Coastguard Worker		java_plugin {
93*333d2b36SAndroid Build Coastguard Worker			name: "bar",
94*333d2b36SAndroid Build Coastguard Worker			processor_class: "com.bar",
95*333d2b36SAndroid Build Coastguard Worker			generates_api: true,
96*333d2b36SAndroid Build Coastguard Worker			srcs: ["b.java"],
97*333d2b36SAndroid Build Coastguard Worker		}
98*333d2b36SAndroid Build Coastguard Worker	`)
99*333d2b36SAndroid Build Coastguard Worker
100*333d2b36SAndroid Build Coastguard Worker	buildOS := ctx.Config().BuildOS.String()
101*333d2b36SAndroid Build Coastguard Worker
102*333d2b36SAndroid Build Coastguard Worker	javac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
103*333d2b36SAndroid Build Coastguard Worker	turbine := ctx.ModuleForTests("foo", "android_common").MaybeRule("turbine")
104*333d2b36SAndroid Build Coastguard Worker
105*333d2b36SAndroid Build Coastguard Worker	if turbine.Rule != nil {
106*333d2b36SAndroid Build Coastguard Worker		t.Errorf("expected turbine to be disabled")
107*333d2b36SAndroid Build Coastguard Worker	}
108*333d2b36SAndroid Build Coastguard Worker
109*333d2b36SAndroid Build Coastguard Worker	bar := ctx.ModuleForTests("bar", buildOS+"_common").Rule("javac").Output.String()
110*333d2b36SAndroid Build Coastguard Worker
111*333d2b36SAndroid Build Coastguard Worker	if !inList(bar, javac.Implicits.Strings()) {
112*333d2b36SAndroid Build Coastguard Worker		t.Errorf("foo implicits %v does not contain %q", javac.Implicits.Strings(), bar)
113*333d2b36SAndroid Build Coastguard Worker	}
114*333d2b36SAndroid Build Coastguard Worker
115*333d2b36SAndroid Build Coastguard Worker	if javac.Args["processorpath"] != "-processorpath "+bar {
116*333d2b36SAndroid Build Coastguard Worker		t.Errorf("foo processorpath %q != '-processorpath %s'", javac.Args["processorpath"], bar)
117*333d2b36SAndroid Build Coastguard Worker	}
118*333d2b36SAndroid Build Coastguard Worker
119*333d2b36SAndroid Build Coastguard Worker	if javac.Args["processor"] != "-processor com.bar" {
120*333d2b36SAndroid Build Coastguard Worker		t.Errorf("foo processor %q != '-processor com.bar'", javac.Args["processor"])
121*333d2b36SAndroid Build Coastguard Worker	}
122*333d2b36SAndroid Build Coastguard Worker}
123