|
23 | 23 |
|
24 | 24 | /*
|
25 | 25 | * @test
|
| 26 | + * @bug 8345248 |
26 | 27 | * @summary tests for "requires transitive"
|
27 | 28 | * @library /tools/lib
|
28 | 29 | * @modules
|
|
34 | 35 |
|
35 | 36 | import java.nio.file.Files;
|
36 | 37 | import java.nio.file.Path;
|
| 38 | +import java.util.List; |
| 39 | +import java.util.Objects; |
37 | 40 |
|
38 | 41 | import toolbox.JavacTask;
|
39 | 42 | import toolbox.Task;
|
@@ -256,4 +259,104 @@ public void testRepeatedModifiers(Path base) throws Exception {
|
256 | 259 | throw new Exception("expected output not found: " + e);
|
257 | 260 | }
|
258 | 261 | }
|
| 262 | + |
| 263 | + @Test //JDK-8345248: |
| 264 | + public void testTransitiveModuleName(Path base) throws Exception { |
| 265 | + Path lib = base.resolve("lib"); |
| 266 | + Path libSrc = lib.resolve("src"); |
| 267 | + Path transitive = libSrc.resolve("transitive"); |
| 268 | + tb.writeJavaFiles(transitive, |
| 269 | + """ |
| 270 | + module transitive { |
| 271 | + } |
| 272 | + """ |
| 273 | + ); |
| 274 | + Path transitiveA = libSrc.resolve("transitive.a"); |
| 275 | + tb.writeJavaFiles(transitiveA, |
| 276 | + """ |
| 277 | + module transitive.a { |
| 278 | + } |
| 279 | + """ |
| 280 | + ); |
| 281 | + |
| 282 | + Path libClasses = lib.resolve("classes"); |
| 283 | + Files.createDirectories(libClasses); |
| 284 | + |
| 285 | + new JavacTask(tb, Task.Mode.CMDLINE) |
| 286 | + .options("--module-source-path", libSrc.toString()) |
| 287 | + .files(findJavaFiles(libSrc)) |
| 288 | + .outdir(libClasses) |
| 289 | + .run() |
| 290 | + .writeAll(); |
| 291 | + |
| 292 | + Path src = base.resolve("src"); |
| 293 | + Path classes = base.resolve("classes"); |
| 294 | + |
| 295 | + Files.createDirectories(classes); |
| 296 | + |
| 297 | + tb.writeJavaFiles(src, |
| 298 | + """ |
| 299 | + module m { |
| 300 | + requires transitive; |
| 301 | + requires transitive.a; |
| 302 | + } |
| 303 | + """ |
| 304 | + ); |
| 305 | + |
| 306 | + new JavacTask(tb, Task.Mode.CMDLINE) |
| 307 | + .options("--module-path", libClasses.toString()) |
| 308 | + .sourcepath(src) |
| 309 | + .files(findJavaFiles(src)) |
| 310 | + .outdir(classes) |
| 311 | + .run() |
| 312 | + .writeAll(); |
| 313 | + |
| 314 | + tb.writeJavaFiles(src, |
| 315 | + """ |
| 316 | + module m { |
| 317 | + requires transitive transitive; |
| 318 | + requires transitive transitive.a; |
| 319 | + } |
| 320 | + """ |
| 321 | + ); |
| 322 | + |
| 323 | + new JavacTask(tb, Task.Mode.CMDLINE) |
| 324 | + .options("--module-path", libClasses.toString()) |
| 325 | + .sourcepath(src) |
| 326 | + .files(findJavaFiles(src)) |
| 327 | + .outdir(classes) |
| 328 | + .run() |
| 329 | + .writeAll(); |
| 330 | + |
| 331 | + tb.writeJavaFiles(src, |
| 332 | + """ |
| 333 | + module m { |
| 334 | + requires transitive transitive transitive; |
| 335 | + requires transitive transitive transitive.a; |
| 336 | + } |
| 337 | + """ |
| 338 | + ); |
| 339 | + |
| 340 | + List<String> log = new JavacTask(tb, Task.Mode.CMDLINE) |
| 341 | + .options("--module-path", libClasses.toString(), |
| 342 | + "-XDrawDiagnostics") |
| 343 | + .sourcepath(src) |
| 344 | + .files(findJavaFiles(src)) |
| 345 | + .outdir(classes) |
| 346 | + .run(Task.Expect.FAIL) |
| 347 | + .writeAll() |
| 348 | + .getOutputLines(Task.OutputKind.DIRECT); |
| 349 | + |
| 350 | + |
| 351 | + List<String> expected = List.of( |
| 352 | + "module-info.java:2:25: compiler.err.repeated.modifier", |
| 353 | + "module-info.java:3:25: compiler.err.repeated.modifier", |
| 354 | + "2 errors" |
| 355 | + ); |
| 356 | + |
| 357 | + if (!Objects.equals(expected, log)) { |
| 358 | + throw new Exception("expected: " + expected + |
| 359 | + ", but got: " + log); |
| 360 | + } |
| 361 | + } |
259 | 362 | }
|
0 commit comments