vromero@1561: /* vromero@1561: * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. vromero@1561: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. vromero@1561: * vromero@1561: * This code is free software; you can redistribute it and/or modify it vromero@1561: * under the terms of the GNU General Public License version 2 only, as vromero@1561: * published by the Free Software Foundation. vromero@1561: * vromero@1561: * This code is distributed in the hope that it will be useful, but WITHOUT vromero@1561: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or vromero@1561: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License vromero@1561: * version 2 for more details (a copy is included in the LICENSE file that vromero@1561: * accompanied this code). vromero@1561: * vromero@1561: * You should have received a copy of the GNU General Public License version vromero@1561: * 2 along with this work; if not, write to the Free Software Foundation, vromero@1561: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. vromero@1561: * vromero@1561: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA vromero@1561: * or visit www.oracle.com if you need additional information or have any vromero@1561: * questions. vromero@1561: */ vromero@1561: vromero@1561: /* vromero@1561: * @test vromero@1561: * @bug 8006334 vromero@1561: * @summary javap: JavapTask constructor breaks with null pointer exception if vromero@1561: * parameter options is null vromero@1561: */ vromero@1561: vromero@1561: import java.io.File; vromero@1561: import java.util.Arrays; vromero@1561: import java.io.PrintWriter; vromero@1561: import java.io.StringWriter; vromero@1561: import java.util.List; vromero@1561: import java.util.Locale; vromero@1561: import javax.tools.Diagnostic; vromero@1561: import javax.tools.DiagnosticCollector; vromero@1561: import javax.tools.JavaFileManager; vromero@1561: import javax.tools.JavaFileObject; vromero@1561: import com.sun.tools.javap.JavapFileManager; vromero@1561: import com.sun.tools.javap.JavapTask; vromero@1561: vromero@1561: public class JavapTaskCtorFailWithNPE { vromero@1561: vromero@1561: //we will also check the output just to confirm that we get the expected one vromero@1561: private static final String expOutput = vromero@1561: "Compiled from \"JavapTaskCtorFailWithNPE.java\"\n" + vromero@1561: "public class JavapTaskCtorFailWithNPE {\n" + vromero@1561: " public JavapTaskCtorFailWithNPE();\n" + vromero@1561: " public static void main(java.lang.String[]);\n" + vromero@1561: "}\n"; vromero@1561: vromero@1561: public static void main(String[] args) { vromero@1561: new JavapTaskCtorFailWithNPE().run(); vromero@1561: } vromero@1561: vromero@1561: private void run() { vromero@1561: File classToCheck = new File(System.getProperty("test.classes"), vromero@1561: getClass().getSimpleName() + ".class"); vromero@1561: vromero@1561: DiagnosticCollector dc = vromero@1561: new DiagnosticCollector(); vromero@1561: StringWriter sw = new StringWriter(); vromero@1561: PrintWriter pw = new PrintWriter(sw); vromero@1561: JavaFileManager fm = JavapFileManager.create(dc, pw); vromero@1561: JavapTask t = new JavapTask(pw, fm, dc, null, vromero@1561: Arrays.asList(classToCheck.getPath())); vromero@1819: if (t.run() != 0) vromero@1561: throw new Error("javap failed unexpectedly"); vromero@1561: vromero@1561: List> diags = dc.getDiagnostics(); vromero@1561: for (Diagnostic d: diags) { vromero@1561: if (d.getKind() == Diagnostic.Kind.ERROR) vromero@1561: throw new AssertionError(d.getMessage(Locale.ENGLISH)); vromero@1561: } vromero@1561: String lineSep = System.getProperty("line.separator"); vromero@1561: String out = sw.toString().replace(lineSep, "\n"); vromero@1561: if (!out.equals(expOutput)) { vromero@1561: throw new AssertionError("The output is not equal to the one expected"); vromero@1561: } vromero@1561: } vromero@1561: vromero@1561: }