jdk

Форк
0
/
T6351767.java 
94 строки · 3.5 Кб
1
/*
2
 * Copyright (c) 2006, 2015, 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 6351767
27
 * @summary javax.tools.JavaCompilerTool.getStandardFileManager().list() treats directories as package
28
 * @modules java.compiler
29
 *          jdk.compiler
30
 */
31

32
import java.io.File;
33
import java.io.IOException;
34
import java.util.EnumSet;
35
import javax.tools.*;
36
import javax.tools.JavaFileObject.Kind;
37
import javax.tools.StandardLocation;
38

39
public class T6351767 {
40
    public static void main(String... args) throws Exception {
41

42
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
43
        try (JavaFileManager jfm = compiler.getStandardFileManager(null, null, null)) {
44

45
            // test null
46
            try {
47
                jfm.list(StandardLocation.SOURCE_PATH, null, EnumSet.of(Kind.SOURCE), false);
48
                error("NPE not thrown");
49
            }
50
            catch (NullPointerException e) {
51
                // expected
52
            }
53

54
            // test null fileKinds
55
            try {
56
                jfm.list(StandardLocation.SOURCE_PATH, "", null, false);
57
                error("NPE not thrown");
58
            }
59
            catch (NullPointerException e) {
60
                // expected
61
            }
62

63
            // test good package
64
            boolean found = false;
65
            for (JavaFileObject jfo : jfm.list(StandardLocation.PLATFORM_CLASS_PATH,
66
                                               "java.lang",
67
                                               EnumSet.of(Kind.CLASS),
68
                                               false)) {
69
                System.err.println("found " + jfo.toUri());
70
                if (jfo.isNameCompatible("Object", Kind.CLASS))
71
                    found = true;
72
            }
73
            if (!found)
74
                error("expected file, java/lang/Object.class, not found");
75

76
            found = false;
77
            // test good package (VM name)
78
            for (JavaFileObject jfo : jfm.list(StandardLocation.PLATFORM_CLASS_PATH,
79
                                               "java/lang",
80
                                               EnumSet.of(Kind.CLASS),
81
                                               false)) {
82
                System.err.println("found " + jfo.toUri());
83
                if (jfo.isNameCompatible("Object", Kind.CLASS))
84
                    found = true;
85
            }
86
            if (!found)
87
                error("expected file, java/lang/Object.class, not found");
88
        }
89
    }
90

91
    static void error(String msg) {
92
        throw new AssertionError(msg);
93
    }
94
}
95

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.