jdk/test/java/lang/module/MultiReleaseJarTest.java
changeset 43712 5dfd0950317c
parent 42338 a60f280f803c
child 43894 c316ff1ea2c7
equal deleted inserted replaced
43619:dc9102c475f3 43712:5dfd0950317c
    63 @Test
    63 @Test
    64 public class MultiReleaseJarTest {
    64 public class MultiReleaseJarTest {
    65 
    65 
    66     private static final String MODULE_INFO = "module-info.class";
    66     private static final String MODULE_INFO = "module-info.class";
    67 
    67 
    68     private static final int RELEASE = Runtime.version().major();
    68     private static final int VERSION = Runtime.version().major();
    69 
    69 
    70     // are multi-release JARs enabled?
    70     // are multi-release JARs enabled?
    71     private static final boolean MULTI_RELEASE;
    71     private static final boolean MULTI_RELEASE;
    72     static {
    72     static {
    73         String s = System.getProperty("jdk.util.jar.enableMultiRelease");
    73         String s = System.getProperty("jdk.util.jar.enableMultiRelease");
    78      * Basic test of a multi-release JAR.
    78      * Basic test of a multi-release JAR.
    79      */
    79      */
    80     public void testBasic() throws Exception {
    80     public void testBasic() throws Exception {
    81         String name = "m1";
    81         String name = "m1";
    82 
    82 
    83         ModuleDescriptor descriptor = ModuleDescriptor.module(name)
    83         ModuleDescriptor descriptor = ModuleDescriptor.newModule(name)
    84                 .requires("java.base")
    84                 .requires("java.base")
    85                 .build();
    85                 .build();
    86 
    86 
    87         Path jar = new JarBuilder(name)
    87         Path jar = new JarBuilder(name)
    88                 .moduleInfo("module-info.class", descriptor)
    88                 .moduleInfo("module-info.class", descriptor)
    89                 .resource("p/Main.class")
    89                 .resource("p/Main.class")
    90                 .resource("p/Helper.class")
    90                 .resource("p/Helper.class")
    91                 .resource("META-INF/versions/9/p/Helper.class")
    91                 .resource("META-INF/versions/" + VERSION + "/p/Helper.class")
    92                 .resource("META-INF/versions/9/p/internal/Helper9.class")
    92                 .resource("META-INF/versions/" + VERSION + "/p/internal/Helper.class")
    93                 .build();
    93                 .build();
    94 
    94 
    95         // find the module
    95         // find the module
    96         ModuleFinder finder = ModuleFinder.of(jar);
    96         ModuleFinder finder = ModuleFinder.of(jar);
    97         Optional<ModuleReference> omref = finder.find(name);
    97         Optional<ModuleReference> omref = finder.find(name);
   115      * section of the JAR.
   115      * section of the JAR.
   116      */
   116      */
   117     public void testModuleInfoInVersionedSection() throws Exception {
   117     public void testModuleInfoInVersionedSection() throws Exception {
   118         String name = "m1";
   118         String name = "m1";
   119 
   119 
   120         ModuleDescriptor descriptor1 = ModuleDescriptor.module(name)
   120         ModuleDescriptor descriptor1 = ModuleDescriptor.newModule(name)
   121                 .requires("java.base")
   121                 .requires("java.base")
   122                 .build();
   122                 .build();
   123 
   123 
   124         // module descriptor for versioned section
   124         // module descriptor for versioned section
   125         ModuleDescriptor descriptor2 = ModuleDescriptor.module(name)
   125         ModuleDescriptor descriptor2 = ModuleDescriptor.newModule(name)
   126                 .requires("java.base")
   126                 .requires("java.base")
   127                 .requires("jdk.unsupported")
   127                 .requires("jdk.unsupported")
   128                 .build();
   128                 .build();
   129 
   129 
   130         Path jar = new JarBuilder(name)
   130         Path jar = new JarBuilder(name)
   131                 .moduleInfo(MODULE_INFO, descriptor1)
   131                 .moduleInfo(MODULE_INFO, descriptor1)
   132                 .resource("p/Main.class")
   132                 .resource("p/Main.class")
   133                 .resource("p/Helper.class")
   133                 .resource("p/Helper.class")
   134                 .moduleInfo("META-INF/versions/9/" + MODULE_INFO, descriptor2)
   134                 .moduleInfo("META-INF/versions/" + VERSION + "/" + MODULE_INFO, descriptor2)
   135                 .resource("META-INF/versions/9/p/Helper.class")
   135                 .resource("META-INF/versions/" + VERSION + "/p/Helper.class")
   136                 .resource("META-INF/versions/9/p/internal/Helper9.class")
   136                 .resource("META-INF/versions/" + VERSION + "/p/internal/Helper.class")
   137                 .build();
   137                 .build();
   138 
   138 
   139         // find the module
   139         // find the module
   140         ModuleFinder finder = ModuleFinder.of(jar);
   140         ModuleFinder finder = ModuleFinder.of(jar);
   141         Optional<ModuleReference> omref = finder.find(name);
   141         Optional<ModuleReference> omref = finder.find(name);
   159         String name = "m";
   159         String name = "m";
   160 
   160 
   161         Path jar = new JarBuilder(name)
   161         Path jar = new JarBuilder(name)
   162                 .resource("p/Main.class")
   162                 .resource("p/Main.class")
   163                 .resource("p/Helper.class")
   163                 .resource("p/Helper.class")
   164                 .resource("META-INF/versions/9/p/Helper.class")
   164                 .resource("META-INF/versions/" + VERSION + "/p/Helper.class")
   165                 .resource("META-INF/versions/9/p/internal/Helper9.class")
   165                 .resource("META-INF/versions/" + VERSION + "/p/internal/Helper.class")
   166                 .build();
   166                 .build();
   167 
   167 
   168         // find the module
   168         // find the module
   169         ModuleFinder finder = ModuleFinder.of(jar);
   169         ModuleFinder finder = ModuleFinder.of(jar);
   170         Optional<ModuleReference> omref = finder.find(name);
   170         Optional<ModuleReference> omref = finder.find(name);
   186      * Exercise ModuleReader on a multi-release JAR
   186      * Exercise ModuleReader on a multi-release JAR
   187      */
   187      */
   188     public void testModuleReader() throws Exception {
   188     public void testModuleReader() throws Exception {
   189         String name = "m1";
   189         String name = "m1";
   190 
   190 
   191         ModuleDescriptor descriptor1 = ModuleDescriptor.module(name)
   191         ModuleDescriptor descriptor1 = ModuleDescriptor.newModule(name)
   192                 .requires("java.base")
   192                 .requires("java.base")
   193                 .build();
   193                 .build();
   194 
   194 
   195         // module descriptor for versioned section
   195         // module descriptor for versioned section
   196         ModuleDescriptor descriptor2 = ModuleDescriptor.module(name)
   196         ModuleDescriptor descriptor2 = ModuleDescriptor.newModule(name)
   197                 .requires("java.base")
   197                 .requires("java.base")
   198                 .requires("jdk.unsupported")
   198                 .requires("jdk.unsupported")
   199                 .build();
   199                 .build();
   200 
   200 
   201         Path jar = new JarBuilder(name)
   201         Path jar = new JarBuilder(name)
   202                 .moduleInfo(MODULE_INFO, descriptor1)
   202                 .moduleInfo(MODULE_INFO, descriptor1)
   203                 .moduleInfo("META-INF/versions/9/" + MODULE_INFO, descriptor2)
   203                 .moduleInfo("META-INF/versions/" + VERSION + "/" + MODULE_INFO, descriptor2)
   204                 .build();
   204                 .build();
   205 
   205 
   206         // find the module
   206         // find the module
   207         ModuleFinder finder = ModuleFinder.of(jar);
   207         ModuleFinder finder = ModuleFinder.of(jar);
   208         Optional<ModuleReference> omref = finder.find(name);
   208         Optional<ModuleReference> omref = finder.find(name);
   241             assertTrue(ouri.isPresent());
   241             assertTrue(ouri.isPresent());
   242             URI uri = ouri.get();
   242             URI uri = ouri.get();
   243 
   243 
   244             String expectedTail = "!/";
   244             String expectedTail = "!/";
   245             if (MULTI_RELEASE)
   245             if (MULTI_RELEASE)
   246                 expectedTail += "META-INF/versions/" + RELEASE + "/";
   246                 expectedTail += "META-INF/versions/" + VERSION + "/";
   247             expectedTail += MODULE_INFO;
   247             expectedTail += MODULE_INFO;
   248             assertTrue(uri.toString().endsWith(expectedTail));
   248             assertTrue(uri.toString().endsWith(expectedTail));
   249 
   249 
   250             URLConnection uc = uri.toURL().openConnection();
   250             URLConnection uc = uri.toURL().openConnection();
   251             uc.setUseCaches(false);
   251             uc.setUseCaches(false);