< prev index next >

test/tools/jlink/JLinkNegativeTest.java

Print this page




 174         try {
 175             JImageGenerator.getJLinkTask()
 176                     .output(imageFile)
 177                     .addMods("not_zip")
 178                     .modulePath(helper.defaultModulePath())
 179                     .call().assertFailure("Error: java.util.zip.ZipException: zip file is empty");
 180         } finally {
 181             deleteDirectory(jar);
 182         }
 183     }
 184 
 185     public void testMalformedJmod() throws IOException {
 186         Path imageFile = helper.createNewImageDir("test");
 187         Path jmod = helper.createNewJmodFile("not_zip");
 188         Files.createFile(jmod);
 189         try {
 190             JImageGenerator.getJLinkTask()
 191                     .output(imageFile)
 192                     .addMods("not_zip")
 193                     .modulePath(helper.defaultModulePath())
 194                     .call().assertFailure("Error: java.util.zip.ZipException: zip file is empty");
 195         } finally {
 196             deleteDirectory(jmod);
 197         }
 198     }
 199 
 200     // Temporarily exclude; the jmod tool can no longer be used to create a jmod
 201     // with a class in the unnamed package. Find another way, or remove.
 202 //    public void testAddDefaultPackage() throws IOException {
 203 //        String moduleName = "hacked1";
 204 //        Path module = helper.generateModuleCompiledClasses(helper.getJmodSrcDir(), helper.getJmodClassesDir(),
 205 //                moduleName, Arrays.asList("hacked1.Main", "A", "B"), "leaf1");
 206 //        JImageGenerator
 207 //                .getJModTask()
 208 //                .addClassPath(module)
 209 //                .jmod(helper.getJmodDir().resolve(moduleName + ".jmod"))
 210 //                .create().assertSuccess();
 211 //        Path image = helper.generateDefaultImage(moduleName).assertSuccess();
 212 //        helper.checkImage(image, moduleName, null, null);
 213 //    }
 214 


 219         Files.createFile(module.resolve("top-level-file"));
 220         Path jmod = JImageGenerator
 221                 .getJModTask()
 222                 .addClassPath(module)
 223                 .jmod(helper.getJmodDir().resolve(moduleName + ".jmod"))
 224                 .create().assertSuccess();
 225         try {
 226             Path image = helper.generateDefaultImage(moduleName).assertSuccess();
 227             helper.checkImage(image, moduleName, null, null);
 228         } finally {
 229             deleteDirectory(jmod);
 230         }
 231     }
 232 
 233     public void testAddNonStandardSection() throws IOException {
 234         String moduleName = "hacked3";
 235         Path module = helper.generateDefaultJModule(moduleName).assertSuccess();
 236         JImageGenerator.addFiles(module, new InMemoryFile("unknown/A.class", new byte[0]));
 237         try {
 238             Result result = helper.generateDefaultImage(moduleName);
 239             if (result.getExitCode() != 4) {
 240                 throw new AssertionError("Crash expected");
 241             }
 242             if (!result.getMessage().contains("java.lang.InternalError: unexpected entry: unknown")) {
 243                 System.err.println(result.getMessage());
 244                 throw new AssertionError("InternalError expected");

 245             }
 246         } finally {
 247             deleteDirectory(module);
 248         }
 249     }
 250 
 251     @Test(enabled = true)
 252     public void testSectionsAreFiles() throws IOException {
 253         String moduleName = "module";
 254         Path jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
 255         JImageGenerator.addFiles(jmod,
 256                 new InMemoryFile("/native", new byte[0]),
 257                 new InMemoryFile("/conf", new byte[0]),
 258                 new InMemoryFile("/bin", new byte[0]));
 259         try {
 260             Result result = helper.generateDefaultImage(moduleName);
 261             if (result.getExitCode() != 4) {
 262                 throw new AssertionError("Crash expected");
 263             }
 264             if (!result.getMessage().contains("java.lang.InternalError: unexpected entry: ")) {
 265                 System.err.println(result.getMessage());
 266                 throw new AssertionError("InternalError expected");

 267             }
 268         } finally {
 269             deleteDirectory(jmod);
 270         }
 271     }
 272 
 273     public void testDuplicateModule1() throws IOException {
 274         String moduleName1 = "dupRes1Jmod1";
 275         String moduleName2 = "dupRes1Jmod2";
 276         List<String> classNames = Arrays.asList("java.A", "javax.B");
 277         Path module1 = helper.generateModuleCompiledClasses(
 278                 helper.getJmodSrcDir(), helper.getJmodClassesDir(), moduleName1, classNames);
 279         Path module2 = helper.generateModuleCompiledClasses(
 280                 helper.getJmodSrcDir(), helper.getJmodClassesDir(), moduleName2, classNames);
 281 
 282         try (OutputStream out = Files.newOutputStream(module2.resolve("module-info.class"))) {
 283             ModuleInfoWriter.write(new ModuleDescriptor.Builder(moduleName1)
 284                     .requires("java.base").build(), out);
 285         }
 286 




 174         try {
 175             JImageGenerator.getJLinkTask()
 176                     .output(imageFile)
 177                     .addMods("not_zip")
 178                     .modulePath(helper.defaultModulePath())
 179                     .call().assertFailure("Error: java.util.zip.ZipException: zip file is empty");
 180         } finally {
 181             deleteDirectory(jar);
 182         }
 183     }
 184 
 185     public void testMalformedJmod() throws IOException {
 186         Path imageFile = helper.createNewImageDir("test");
 187         Path jmod = helper.createNewJmodFile("not_zip");
 188         Files.createFile(jmod);
 189         try {
 190             JImageGenerator.getJLinkTask()
 191                     .output(imageFile)
 192                     .addMods("not_zip")
 193                     .modulePath(helper.defaultModulePath())
 194                     .call().assertFailure("Error: java.io.IOException: Invalid jmod file");
 195         } finally {
 196             deleteDirectory(jmod);
 197         }
 198     }
 199 
 200     // Temporarily exclude; the jmod tool can no longer be used to create a jmod
 201     // with a class in the unnamed package. Find another way, or remove.
 202 //    public void testAddDefaultPackage() throws IOException {
 203 //        String moduleName = "hacked1";
 204 //        Path module = helper.generateModuleCompiledClasses(helper.getJmodSrcDir(), helper.getJmodClassesDir(),
 205 //                moduleName, Arrays.asList("hacked1.Main", "A", "B"), "leaf1");
 206 //        JImageGenerator
 207 //                .getJModTask()
 208 //                .addClassPath(module)
 209 //                .jmod(helper.getJmodDir().resolve(moduleName + ".jmod"))
 210 //                .create().assertSuccess();
 211 //        Path image = helper.generateDefaultImage(moduleName).assertSuccess();
 212 //        helper.checkImage(image, moduleName, null, null);
 213 //    }
 214 


 219         Files.createFile(module.resolve("top-level-file"));
 220         Path jmod = JImageGenerator
 221                 .getJModTask()
 222                 .addClassPath(module)
 223                 .jmod(helper.getJmodDir().resolve(moduleName + ".jmod"))
 224                 .create().assertSuccess();
 225         try {
 226             Path image = helper.generateDefaultImage(moduleName).assertSuccess();
 227             helper.checkImage(image, moduleName, null, null);
 228         } finally {
 229             deleteDirectory(jmod);
 230         }
 231     }
 232 
 233     public void testAddNonStandardSection() throws IOException {
 234         String moduleName = "hacked3";
 235         Path module = helper.generateDefaultJModule(moduleName).assertSuccess();
 236         JImageGenerator.addFiles(module, new InMemoryFile("unknown/A.class", new byte[0]));
 237         try {
 238             Result result = helper.generateDefaultImage(moduleName);




 239             System.err.println(result.getMessage());
 240             if (result.getExitCode() == 0) {
 241                 throw new AssertionError("Crash expected");
 242             }
 243         } finally {
 244             deleteDirectory(module);
 245         }
 246     }
 247 
 248     @Test(enabled = true)
 249     public void testSectionsAreFiles() throws IOException {
 250         String moduleName = "hacked4";
 251         Path jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
 252         JImageGenerator.addFiles(jmod,
 253                 new InMemoryFile("/native", new byte[0]),
 254                 new InMemoryFile("/conf", new byte[0]),
 255                 new InMemoryFile("/bin", new byte[0]));
 256         try {
 257             Result result = helper.generateDefaultImage(moduleName);




 258             System.err.println(result.getMessage());
 259             if (result.getExitCode() == 0) {
 260                 throw new AssertionError("Crash expected");
 261             }
 262         } finally {
 263             deleteDirectory(jmod);
 264         }
 265     }
 266 
 267     public void testDuplicateModule1() throws IOException {
 268         String moduleName1 = "dupRes1Jmod1";
 269         String moduleName2 = "dupRes1Jmod2";
 270         List<String> classNames = Arrays.asList("java.A", "javax.B");
 271         Path module1 = helper.generateModuleCompiledClasses(
 272                 helper.getJmodSrcDir(), helper.getJmodClassesDir(), moduleName1, classNames);
 273         Path module2 = helper.generateModuleCompiledClasses(
 274                 helper.getJmodSrcDir(), helper.getJmodClassesDir(), moduleName2, classNames);
 275 
 276         try (OutputStream out = Files.newOutputStream(module2.resolve("module-info.class"))) {
 277             ModuleInfoWriter.write(new ModuleDescriptor.Builder(moduleName1)
 278                     .requires("java.base").build(), out);
 279         }
 280 


< prev index next >