|
23 | 23 |
|
24 | 24 | /*
|
25 | 25 | * @test
|
26 |
| - * @bug 8158123 8161906 8162713 8202832 |
| 26 | + * @bug 8158123 8161906 8162713 8202832 8235229 |
27 | 27 | * @summary tests for module declarations
|
28 | 28 | * @library /tools/lib
|
29 | 29 | * @modules
|
|
38 | 38 | import java.nio.file.Path;
|
39 | 39 | import java.util.Arrays;
|
40 | 40 | import java.util.List;
|
| 41 | +import java.util.jar.Attributes; |
41 | 42 |
|
| 43 | +import toolbox.JarTask; |
42 | 44 | import toolbox.JavacTask;
|
43 | 45 | import toolbox.Task;
|
44 | 46 |
|
@@ -798,4 +800,53 @@ public void testJDK8202832(Path base) throws Exception {
|
798 | 800 | if (!expected.equals(log))
|
799 | 801 | throw new Exception("expected output not found");
|
800 | 802 | }
|
| 803 | + |
| 804 | + @Test |
| 805 | + public void testMultiReleaseJarAndReleaseOption(Path base) throws Exception { |
| 806 | + Path src = base.resolve("src"); |
| 807 | + tb.writeJavaFiles(src, "package api; public class A { }"); |
| 808 | + Path classes = base.resolve("classes"); |
| 809 | + Files.createDirectories(classes); |
| 810 | + new JavacTask(tb) |
| 811 | + .outdir(classes) |
| 812 | + .files(findJavaFiles(src)) |
| 813 | + .run() |
| 814 | + .writeAll(); |
| 815 | + |
| 816 | + Path src9 = base.resolve("src9"); |
| 817 | + tb.writeJavaFiles(src9, "module m { exports api; }"); |
| 818 | + Path classes9 = classes.resolve("META-INF").resolve("versions").resolve("9"); |
| 819 | + Files.createDirectories(classes9); |
| 820 | + new JavacTask(tb) |
| 821 | + .sourcepath(src, src9) |
| 822 | + .outdir(classes9) |
| 823 | + .files(findJavaFiles(src9)) |
| 824 | + .run() |
| 825 | + .writeAll(); |
| 826 | + Path jar = base.resolve("lib.jar"); |
| 827 | + new JarTask(tb, jar) |
| 828 | + .baseDir(classes) |
| 829 | + .files(Arrays.stream(tb.findFiles("class", classes)).map(f -> classes.relativize(f).toString()).toArray(i -> new String[i])) |
| 830 | + .manifest(Attributes.Name.MULTI_RELEASE + ": true\n\n") |
| 831 | + .run(); |
| 832 | + Path testSrc = base.resolve("test-src"); |
| 833 | + tb.writeJavaFiles(testSrc, "module test { requires transitive m; }", "package impl; public class I { api.A a; }"); |
| 834 | + Path testClasses = base.resolve("test-classes"); |
| 835 | + Files.createDirectories(testClasses); |
| 836 | + new JavacTask(tb) |
| 837 | + .options("-Werror", "--module-path", jar.toString()) |
| 838 | + .sourcepath(testSrc) |
| 839 | + .outdir(testClasses) |
| 840 | + .files(findJavaFiles(testSrc)) |
| 841 | + .run() |
| 842 | + .writeAll(); |
| 843 | + new JavacTask(tb) |
| 844 | + .options("-Werror", "--module-path", jar.toString(), "--release", "9", "-doe") |
| 845 | + .sourcepath(testSrc) |
| 846 | + .outdir(testClasses) |
| 847 | + .files(findJavaFiles(testSrc)) |
| 848 | + .run() |
| 849 | + .writeAll(); |
| 850 | + } |
| 851 | + |
801 | 852 | }
|
0 commit comments