1 /* |
1 /* |
2 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
26 * @bug 6410653 6401277 |
26 * @bug 6410653 6401277 |
27 * @summary REGRESSION: javac crashes if -d or -s argument is a file |
27 * @summary REGRESSION: javac crashes if -d or -s argument is a file |
28 * @author Peter von der Ah\u00e9 |
28 * @author Peter von der Ah\u00e9 |
29 */ |
29 */ |
30 |
30 |
31 import java.lang.reflect.Method; |
31 import java.lang.reflect.Field; |
32 import java.io.File; |
32 import java.io.File; |
33 import java.io.ByteArrayOutputStream; |
33 import java.io.ByteArrayOutputStream; |
34 import javax.tools.*; |
34 import javax.tools.*; |
35 |
35 |
36 public class T6410653 { |
36 public class T6410653 { |
37 public static void main(String... args) throws Exception { |
37 public static void main(String... args) throws Exception { |
38 File testSrc = new File(System.getProperty("test.src")); |
38 File testSrc = new File(System.getProperty("test.src")); |
39 String source = new File(testSrc, "T6410653.java").getPath(); |
39 String source = new File(testSrc, "T6410653.java").getPath(); |
40 ClassLoader cl = ToolProvider.getSystemToolClassLoader(); |
40 ClassLoader cl = ToolProvider.getSystemToolClassLoader(); |
41 Tool compiler = ToolProvider.getSystemJavaCompiler(); |
41 Tool compiler = ToolProvider.getSystemJavaCompiler(); |
42 Class<?> main = Class.forName("com.sun.tools.javac.main.Main", true, cl); |
42 Class<?> log = Class.forName("com.sun.tools.javac.util.Log", true, cl); |
43 Method useRawMessages = main.getMethod("useRawMessages", boolean.class); |
43 Field useRawMessages = log.getDeclaredField("useRawMessages"); |
44 useRawMessages.invoke(null, true); |
44 useRawMessages.setAccessible(true); |
|
45 useRawMessages.setBoolean(null, true); |
45 ByteArrayOutputStream out = new ByteArrayOutputStream(); |
46 ByteArrayOutputStream out = new ByteArrayOutputStream(); |
46 compiler.run(null, null, out, "-d", source, source); |
47 compiler.run(null, null, out, "-d", source, source); |
47 useRawMessages.invoke(null, false); |
48 useRawMessages.setBoolean(null, false); |
48 if (!out.toString().equals(String.format("%s%n%s%n", |
49 if (!out.toString().equals(String.format("%s%n%s%n", |
49 "javac: javac.err.file.not.directory", |
50 "javac: javac.err.file.not.directory", |
50 "javac.msg.usage"))) { |
51 "javac.msg.usage"))) { |
51 throw new AssertionError(out); |
52 throw new AssertionError(out); |
52 } |
53 } |