test/tools/pack200/AttributeTests.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -19,29 +19,69 @@
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import java.io.File;
-import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import static java.nio.file.StandardOpenOption.*;
/*
* @test
- * @bug 6746111
+ * @bug 6746111 8005252
* @summary tests various classfile format and attribute handling by pack200
* @compile -XDignore.symbol.file Utils.java AttributeTests.java
* @run main AttributeTests
* @author ksrini
*/
public class AttributeTests {
public static void main(String... args) throws Exception {
test6746111();
+ testMethodParameters();
}
/*
+ * this tests ensure that MethodParameters produces by javac is packed
+ * correctly. Usually this is not the case as new attributes are available
+ * in the sdk jars, since MethodParameters happens to be an optional
+ * attribute, thus this test.
+ */
+ static void testMethodParameters() throws Exception {
+ List<String> scratch = new ArrayList<>();
+ final String fname = "MP";
+ String javaFileName = fname + Utils.JAVA_FILE_EXT;
+ String javaClassName = fname + Utils.CLASS_FILE_EXT;
+ scratch.add("class " + fname + " {");
+ scratch.add("void foo2(int j, final int k){}");
+ scratch.add("}");
+ File cwd = new File(".");
+ File javaFile = new File(cwd, javaFileName);
+ Files.write(javaFile.toPath(), scratch, Charset.defaultCharset(),
+ CREATE, TRUNCATE_EXISTING);
+
+ Utils.compiler(javaFile.getName(), "-parameters");
+
+ // jar the file up
+ File testjarFile = new File(cwd, "test" + Utils.JAR_FILE_EXT);
+ Utils.jar("cvf", testjarFile.getName(), javaClassName);
+
+ // pack using --repack
+ File outjarFile = new File(cwd, "out" + Utils.JAR_FILE_EXT);
+ scratch.clear();
+ scratch.add(Utils.getPack200Cmd());
+ scratch.add("--repack");
+ scratch.add("--unknown-attribute=error");
+ scratch.add(outjarFile.getName());
+ scratch.add(testjarFile.getName());
+ Utils.runExec(scratch);
+
+ Utils.doCompareVerify(testjarFile, outjarFile);
+ }
+ /*
* this test checks to see if we get the expected strings for output
*/
static void test6746111() throws Exception {
String pack200Cmd = Utils.getPack200Cmd();
File badAttrJar = new File(".", "badattr.jar");