1 /*
2  * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
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
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 /*
25  * @test
26  * @bug 8144226
27  * @summary Ensures that excluded files are inaccessible (even for implicit
28  *          compilation)
29  * @modules jdk.compiler/com.sun.tools.javac.main
30  *          jdk.compiler/com.sun.tools.sjavac
31  *          jdk.compiler/com.sun.tools.sjavac.server
32  * @library /tools/lib
33  * @build Wrapper toolbox.ToolBox toolbox.Assert
34  * @run main Wrapper HiddenFiles
35  */
36 
37 
38 import java.nio.file.Files;
39 import java.nio.file.Path;
40 import java.nio.file.Paths;
41 
42 import com.sun.tools.javac.main.Main.Result;
43 
44 import toolbox.Assert;
45 
46 public class HiddenFiles extends SjavacBase {
47 
main(String[] ignore)48     public static void main(String[] ignore) throws Exception {
49         Path BIN = Paths.get("bin");
50         Path STATE_DIR = Paths.get("state-dir");
51         Path SRC = Paths.get("src");
52 
53         Files.createDirectories(BIN);
54         Files.createDirectories(STATE_DIR);
55 
56         toolbox.writeJavaFiles(SRC, "package pkg; class A { B b; }");
57         toolbox.writeJavaFiles(SRC, "package pkg; class B { }");
58 
59         // This compilation should fail (return RC_FATAL) since A.java refers to B.java and B.java
60         // is excluded.
61         int rc = compile("-x", "pkg/B.java", SRC.toString(),
62                          "-d", BIN.toString(),
63                          "--state-dir=" + STATE_DIR);
64 
65         Assert.check(rc == Result.ERROR.exitCode, "Compilation succeeded unexpectedly.");
66     }
67 }
68