43 44 public class PackageVersionTest { 45 private static final File javaHome = new File(System.getProperty("java.home")); 46 47 public final static int JAVA5_PACKAGE_MAJOR_VERSION = 150; 48 public final static int JAVA5_PACKAGE_MINOR_VERSION = 7; 49 50 public final static int JAVA6_PACKAGE_MAJOR_VERSION = 160; 51 public final static int JAVA6_PACKAGE_MINOR_VERSION = 1; 52 53 public final static int JAVA7_PACKAGE_MAJOR_VERSION = 170; 54 public final static int JAVA7_PACKAGE_MINOR_VERSION = 1; 55 56 public static void main(String... args) throws IOException { 57 File out = new File("test.pack"); 58 createClassFile("Test6"); 59 createClassFile("Test7"); 60 61 verify6991164(); 62 63 verifyPack("Test6.class", JAVA6_PACKAGE_MAJOR_VERSION, 64 JAVA6_PACKAGE_MINOR_VERSION); 65 66 // a jar file devoid of indy classes must generate 160.1 package file 67 verifyPack("Test7.class", JAVA6_PACKAGE_MAJOR_VERSION, 68 JAVA6_PACKAGE_MINOR_VERSION); 69 70 // test for resource file, ie. no class files 71 verifyPack("Test6.java", JAVA5_PACKAGE_MAJOR_VERSION, 72 JAVA5_PACKAGE_MINOR_VERSION); 73 Utils.cleanup(); 74 } 75 76 static void verify6991164() { 77 Unpacker unpacker = Pack200.newUnpacker(); 78 String versionStr = unpacker.toString(); 79 String expected = "Pack200, Vendor: " + 80 System.getProperty("java.vendor") + ", Version: " + 81 JAVA7_PACKAGE_MAJOR_VERSION + "." + JAVA7_PACKAGE_MINOR_VERSION; 82 if (!versionStr.equals(expected)) { 83 System.out.println("Expected: " + expected); 84 System.out.println("Obtained: " + versionStr); 85 throw new RuntimeException("did not get expected string " + expected); 86 } 87 } 88 89 static void createClassFile(String name) { 90 createJavaFile(name); 91 String target = name.substring(name.length() - 1); 92 String javacCmds[] = { 93 "-source", 94 "6", 95 "-target", 96 name.substring(name.length() - 1), 97 name + ".java" 98 }; 99 Utils.compiler(javacCmds); 100 } 101 102 static void createJavaFile(String name) { 103 PrintStream ps = null; 104 FileOutputStream fos = null; 105 File outputFile = new File(name + ".java"); 106 outputFile.delete(); 107 try { 108 fos = new FileOutputStream(outputFile); 109 ps = new PrintStream(fos); 110 ps.format("public class %s {}", name); 111 } catch (IOException ioe) { 112 throw new RuntimeException("creation of test file failed"); 113 } finally { 114 Utils.close(ps); 115 Utils.close(fos); 116 } | 43 44 public class PackageVersionTest { 45 private static final File javaHome = new File(System.getProperty("java.home")); 46 47 public final static int JAVA5_PACKAGE_MAJOR_VERSION = 150; 48 public final static int JAVA5_PACKAGE_MINOR_VERSION = 7; 49 50 public final static int JAVA6_PACKAGE_MAJOR_VERSION = 160; 51 public final static int JAVA6_PACKAGE_MINOR_VERSION = 1; 52 53 public final static int JAVA7_PACKAGE_MAJOR_VERSION = 170; 54 public final static int JAVA7_PACKAGE_MINOR_VERSION = 1; 55 56 public static void main(String... args) throws IOException { 57 File out = new File("test.pack"); 58 createClassFile("Test6"); 59 createClassFile("Test7"); 60 61 verify6991164(); 62 63 //verifyPack("Test6.class", JAVA6_PACKAGE_MAJOR_VERSION, 64 // JAVA6_PACKAGE_MINOR_VERSION); 65 66 // a jar file devoid of indy classes must generate 160.1 package file 67 verifyPack("Test7.class", JAVA6_PACKAGE_MAJOR_VERSION, 68 JAVA6_PACKAGE_MINOR_VERSION); 69 70 // test for resource file, ie. no class files 71 verifyPack("Test6.java", JAVA5_PACKAGE_MAJOR_VERSION, 72 JAVA5_PACKAGE_MINOR_VERSION); 73 Utils.cleanup(); 74 } 75 76 static void verify6991164() { 77 Unpacker unpacker = Pack200.newUnpacker(); 78 String versionStr = unpacker.toString(); 79 String expected = "Pack200, Vendor: " + 80 System.getProperty("java.vendor") + ", Version: " + 81 JAVA7_PACKAGE_MAJOR_VERSION + "." + JAVA7_PACKAGE_MINOR_VERSION; 82 if (!versionStr.equals(expected)) { 83 System.out.println("Expected: " + expected); 84 System.out.println("Obtained: " + versionStr); 85 throw new RuntimeException("did not get expected string " + expected); 86 } 87 } 88 89 static void createClassFile(String name) { 90 createJavaFile(name); 91 String target = name.substring(name.length() - 1); 92 String javacCmds[] = { 93 "-source", 94 "7", 95 "-target", 96 "7", 97 "-Xlint:-options", 98 name + ".java" 99 }; 100 Utils.compiler(javacCmds); 101 } 102 103 static void createJavaFile(String name) { 104 PrintStream ps = null; 105 FileOutputStream fos = null; 106 File outputFile = new File(name + ".java"); 107 outputFile.delete(); 108 try { 109 fos = new FileOutputStream(outputFile); 110 ps = new PrintStream(fos); 111 ps.format("public class %s {}", name); 112 } catch (IOException ioe) { 113 throw new RuntimeException("creation of test file failed"); 114 } finally { 115 Utils.close(ps); 116 Utils.close(fos); 117 } |