Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/langtools/jdk/javadoc/tool/modules/PackageOptions.java
40974 views
1
/*
2
* Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/**
25
* @test
26
* @bug 8159305
27
* @summary Test modules with packages and subpackages filtering
28
* @modules
29
* jdk.javadoc/jdk.javadoc.internal.api
30
* jdk.javadoc/jdk.javadoc.internal.tool
31
* jdk.compiler/com.sun.tools.javac.api
32
* jdk.compiler/com.sun.tools.javac.main
33
* @library /tools/lib
34
* @build toolbox.ToolBox toolbox.TestRunner
35
* @run main PackageOptions
36
*/
37
38
import java.io.IOException;
39
import java.nio.file.DirectoryIteratorException;
40
import java.nio.file.DirectoryStream;
41
import java.nio.file.Files;
42
import java.nio.file.Path;
43
44
import toolbox.*;
45
46
public class PackageOptions extends ModuleTestBase {
47
48
public static void main(String... args) throws Exception {
49
new PackageOptions().runTests();
50
}
51
52
@Test
53
public void testExportedNonQualifiedPackagesLegacyMode(Path base) throws Exception {
54
execTask("--module-source-path", createSources(base.resolve("src")),
55
"--add-modules", "m1",
56
"m1pub");
57
58
checkModulesNotSpecified("m1");
59
checkModulesIncluded("m1");
60
checkPackagesSpecified("m1pub");
61
checkPackagesIncluded("m1pub");
62
}
63
64
@Test
65
public void testExportedQualifiedPackagesLegacyMode(Path base) throws Exception {
66
execTask("--module-source-path", createSources(base.resolve("src")),
67
"--add-modules", "m1",
68
"m1/m1pub");
69
70
checkModulesNotSpecified("m1");
71
checkModulesIncluded("m1");
72
checkPackagesSpecified("m1pub");
73
checkPackagesIncluded("m1pub");
74
}
75
76
@Test
77
public void testNonExportedQualifedPackagesLegacyMode(Path base) throws Exception {
78
execTask("--module-source-path", createSources(base.resolve("src")),
79
"--add-modules", "m1",
80
"m1/m1pro.pro1" /* not exported, therefore qualify with module */);
81
82
checkModulesNotSpecified("m1");
83
checkModulesIncluded("m1");
84
checkPackagesSpecified("m1pro.pro1");
85
checkPackagesIncluded("m1pro.pro1");
86
checkPackagesNotIncluded("m1pro.pro2");
87
checkPackagesNotIncluded("m1pub");
88
}
89
90
@Test
91
public void testTypesLegacyMode(Path base) throws Exception {
92
Path srcPath = base.resolve("src");
93
Path typPath = srcPath.resolve("m1/m1pub/A.java");
94
execTask("--module-source-path", createSources(srcPath),
95
"--add-modules", "m1",
96
typPath.toString());
97
checkModulesNotSpecified("m1");
98
checkModulesIncluded("m1");
99
checkPackagesIncluded("m1pub");
100
checkPackagesNotIncluded("m1pro");
101
checkTypesSpecified("m1pub.A");
102
checkTypesIncluded("m1pub.A");
103
checkTypesNotIncluded("m1pub.B");
104
checkTypesNotIncluded("m1pub.C");
105
}
106
107
@Test
108
public void testSubclassedTypesLegacyMode(Path base) throws Exception {
109
Path srcPath = base.resolve("src");
110
Path typPath = srcPath.resolve("m1/m1pub/B.java");
111
execTask("--module-source-path", createSources(srcPath),
112
"--add-modules", "m1",
113
typPath.toString());
114
checkModulesNotSpecified("m1");
115
checkModulesIncluded("m1");
116
checkPackagesIncluded("m1pub");
117
checkPackagesNotIncluded("m1pro");
118
checkTypesSpecified("m1pub.B");
119
checkTypesIncluded("m1pub.B");
120
checkTypesNotIncluded("m1pub.A");
121
checkTypesNotIncluded("m1pub.C");
122
}
123
124
@Test
125
public void testDefaultPackages(Path base) throws Exception {
126
execTask("--module-source-path", createSources(base.resolve("src")),
127
"--module", "m1");
128
129
checkModulesSpecified("m1");
130
131
checkPackagesIncluded("m1pub", "m1pub.pub1", "m1pub.pub1.pub11",
132
"m1pub.pub1.pub12", "m1pub.pub2.pub21");
133
}
134
135
@Test
136
public void testEmptyPackageDirectory(Path base) throws Exception {
137
Path src = base.resolve("src");
138
createSources(src);
139
140
// need an empty package directory, to check whether
141
// the behavior of subpackage and package
142
Path pkgdir = src.resolve("m1/m1pro/");
143
try (DirectoryStream<Path> stream = Files.newDirectoryStream(pkgdir, "*.java")) {
144
for (Path entry : stream) {
145
Files.deleteIfExists(entry);
146
}
147
} catch (DirectoryIteratorException ex) {
148
// I/O error encounted during the iteration
149
throw ex.getCause();
150
}
151
execTask("--module-source-path", src.toString(),
152
"-subpackages", "m1/m1pro");
153
154
checkPackagesSpecified("m1pro", "m1pro.pro1", "m1pro.pro2");
155
156
// empty package directory should cause an error
157
execNegativeTask("--module-source-path", src.toString(),
158
"m1/m1pro");
159
160
}
161
162
@Test
163
public void testExportedQualifiedSubpackageWithMultipleModules(Path base) throws Exception {
164
execTask("--module-source-path", createSources(base.resolve("src"), 2),
165
"--module", "m1",
166
"-subpackages", "m1/m1pro.pro1:m1/m1pro.pro2:m2/m2pub.pub1");
167
168
checkModulesSpecified("m1");
169
checkPackagesSpecified("m1pro", "m1pro.pro2");
170
checkPackagesSpecified("m2pub.pub1");
171
172
checkPackagesIncluded("m1pub", "m1pub.pub1", "m1pub.pub1.pub11",
173
"m1pub.pub1.pub12", "m1pub.pub2.pub21");
174
checkPackagesIncluded("m2pub.pub1");
175
}
176
177
@Test
178
public void testUnexportedUnqualifiedSubpackages(Path base) throws Exception {
179
execNegativeTask("--module-source-path", createSources(base.resolve("src")),
180
"--module", "m1",
181
"-subpackages", "m1pub.pub1:pro");
182
183
assertMessagePresent("error: No source files for package pro");
184
}
185
186
@Test
187
public void testUnexportedQualifiedPackage(Path base) throws Exception {
188
execTask("--module-source-path", createSources(base.resolve("src")),
189
"--module", "m1",
190
"m1/m1pro");
191
192
checkModulesSpecified("m1");
193
checkPackagesSpecified("m1pro");
194
195
checkPackagesIncluded("m1pub", "m1pub.pub1", "m1pub.pub1.pub11",
196
"m1pub.pub1.pub12", "m1pub.pub2.pub21");
197
198
checkTypesIncluded("m1pro.L");
199
}
200
201
@Test
202
public void testUnexportedQualifiedSubpackage(Path base) throws Exception {
203
execTask("--module-source-path", createSources(base.resolve("src")),
204
"--module", "m1",
205
"-subpackages", "m1/m1pro");
206
207
checkModulesSpecified("m1");
208
checkPackagesSpecified("m1pro", "m1pro.pro1", "m1pro.pro2");
209
210
checkPackagesIncluded("m1pub", "m1pub.pub1", "m1pub.pub1.pub11",
211
"m1pub.pub1.pub12", "m1pub.pub2.pub21");
212
213
checkTypesIncluded("m1pro.L", "m1pro.pro1.M", "m1pro.pro2.O");
214
}
215
216
@Test
217
public void testUnexportedQualifiedSubpackageExcludeQualified(Path base) throws Exception {
218
execTask("--module-source-path", createSources(base.resolve("src")),
219
"--module", "m1",
220
"-subpackages", "m1/m1pro",
221
"-exclude", "m1/m1pro.pro1.pro11:m1/m1pro.pro2.pro21");
222
223
checkModulesSpecified("m1");
224
checkPackagesSpecified("m1pro", "m1pro.pro1", "m1pro.pro2");
225
226
checkPackagesIncluded("m1pub", "m1pub.pub1", "m1pub.pub1.pub11",
227
"m1pub.pub1.pub12", "m1pub.pub2.pub21");
228
229
checkTypesIncluded("m1pro.L", "m1pro.pro1.M", "m1pro.pro2.O");
230
checkPackagesNotSpecified(".*pro11.*", ".*pro21.*");
231
}
232
233
@Test
234
public void testUnexportedQualifiedSubpackageExcludeUnqualified(Path base) throws Exception {
235
execTask("--module-source-path", createSources(base.resolve("src")),
236
"--module", "m1",
237
"-subpackages", "m1/m1pro",
238
"-exclude", "m1pro.pro1.pro11:m1pro.pro2.pro21");
239
240
checkModulesSpecified("m1");
241
checkPackagesSpecified("m1pro", "m1pro.pro1", "m1pro.pro2");
242
243
checkPackagesIncluded("m1pub", "m1pub.pub1", "m1pub.pub1.pub11",
244
"m1pub.pub1.pub12", "m1pub.pub2.pub21");
245
246
checkTypesIncluded("m1pro.L", "m1pro.pro1.M", "m1pro.pro2.O");
247
checkPackagesNotSpecified(".*pro11.*", ".*pro21.*");
248
}
249
250
@Test
251
public void testUnexportedQualifiedSubpackages(Path base) throws Exception {
252
execTask("--module-source-path", createSources(base.resolve("src")),
253
"--module", "m1",
254
"-subpackages", "m1/m1pro.pro1:m1/m1pro.pro2");
255
256
checkModulesSpecified("m1");
257
checkPackagesSpecified("m1pro.pro1.pro11");
258
259
checkPackagesIncluded("m1pub", "m1pub.pub1", "m1pub.pub1.pub11",
260
"m1pub.pub1.pub12", "m1pub.pub2.pub21");
261
checkTypesIncluded("m1pro.pro1.pro11.N", "m1pro.pro2.pro21.P");
262
checkTypesNotIncluded("m1pro.L");
263
}
264
265
String createSources(Path src) throws IOException {
266
return createSources0(src, 1);
267
}
268
269
String createSources(Path src, int n) throws IOException {
270
for (int i = 1 ; i <= n ; i++) {
271
createSources0(src, i);
272
}
273
return src.toString();
274
}
275
276
String createSources0(Path src, int n) throws IOException {
277
String mn = "m" + n;
278
String pn = "package " + mn;
279
280
ModuleBuilder mb1 = new ModuleBuilder(tb, mn);
281
mb1.comment("The module #" + n)
282
.classes(pn + "pub; /** Klass A */ public class A {}")
283
.classes(pn + "pub; /** Klass B */ public class B extends A{}")
284
.classes(pn + "pub; /** Klass C */ public class C {}")
285
.classes(pn + "pub;")
286
.classes(pn + "pub.pub1; /** Klass B */ public class B {}")
287
.classes(pn + "pub.pub1.pub11; /** Klass C */ public class C {}")
288
.classes(pn + "pub.pub1.pub12; /** Klass C */ public class C {}")
289
.classes(pn + "pub.pub2.pub21; /** Klass C */ public class C {}")
290
.classes(pn + "pro; /** Klass L */ public class L {}")
291
.classes(pn + "pro.pro1; /** Klass M */ public class M {}")
292
.classes(pn + "pro.pro1.pro11; /** Klass N */ public class N {}")
293
.classes(pn + "pro.pro2; /** Klass O */ public class O {}")
294
.classes(pn + "pro.pro2.pro21; /** Klass P */ public class P {}")
295
.exports(mn + "pub")
296
.exports(mn + "pub.pub1")
297
.exports(mn + "pub.pub1.pub11")
298
.exports(mn + "pub.pub1.pub12")
299
.exports(mn + "pub.pub2.pub21")
300
.write(src);
301
return src.toString();
302
}
303
}
304
305