8249095: tools/javac/launcher/SourceLauncherTest.java fails on Windows
Reviewed-by: jjg
This commit is contained in:
parent
bdd5782a67
commit
cd4faff0ec
test/langtools/tools
@ -423,9 +423,9 @@ public class SourceLauncherTest extends TestRunner {
|
||||
|
||||
@Test
|
||||
public void testNoSourceOnClassPath(Path base) throws IOException {
|
||||
Path auxSrc = base.resolve("auxSrc");
|
||||
tb.writeJavaFiles(auxSrc,
|
||||
"public class Aux {\n" +
|
||||
Path extraSrc = base.resolve("extraSrc");
|
||||
tb.writeJavaFiles(extraSrc,
|
||||
"public class Extra {\n" +
|
||||
" static final String MESSAGE = \"Hello World\";\n" +
|
||||
"}\n");
|
||||
|
||||
@ -434,18 +434,18 @@ public class SourceLauncherTest extends TestRunner {
|
||||
"import java.util.Arrays;\n" +
|
||||
"class HelloWorld {\n" +
|
||||
" public static void main(String... args) {\n" +
|
||||
" System.out.println(Aux.MESSAGE + Arrays.toString(args));\n" +
|
||||
" System.out.println(Extra.MESSAGE + Arrays.toString(args));\n" +
|
||||
" }\n" +
|
||||
"}");
|
||||
|
||||
List<String> javacArgs = List.of("-classpath", auxSrc.toString());
|
||||
List<String> javacArgs = List.of("-classpath", extraSrc.toString());
|
||||
List<String> classArgs = List.of("1", "2", "3");
|
||||
String FS = File.separator;
|
||||
String expectStdErr =
|
||||
"testNoSourceOnClassPath" + FS + "mainSrc" + FS + "HelloWorld.java:4: error: cannot find symbol\n" +
|
||||
" System.out.println(Aux.MESSAGE + Arrays.toString(args));\n" +
|
||||
" System.out.println(Extra.MESSAGE + Arrays.toString(args));\n" +
|
||||
" ^\n" +
|
||||
" symbol: variable Aux\n" +
|
||||
" symbol: variable Extra\n" +
|
||||
" location: class HelloWorld\n" +
|
||||
"1 error\n";
|
||||
Result r = run(mainSrc.resolve("HelloWorld.java"), javacArgs, classArgs);
|
||||
|
@ -676,12 +676,15 @@ public class ToolBox {
|
||||
return "module-info.java";
|
||||
|
||||
matcher = packagePattern.matcher(source);
|
||||
if (matcher.find())
|
||||
if (matcher.find()) {
|
||||
packageName = matcher.group(1).replace(".", "/");
|
||||
validateName(packageName);
|
||||
}
|
||||
|
||||
matcher = classPattern.matcher(source);
|
||||
if (matcher.find()) {
|
||||
String className = matcher.group(1) + ".java";
|
||||
validateName(className);
|
||||
return (packageName == null) ? className : packageName + "/" + className;
|
||||
} else if (packageName != null) {
|
||||
return packageName + "/package-info.java";
|
||||
@ -706,6 +709,24 @@ public class ToolBox {
|
||||
return JavaSource.getJavaFileNameFromSource(source);
|
||||
}
|
||||
|
||||
private static final Set<String> RESERVED_NAMES = Set.of(
|
||||
"con", "prn", "aux", "nul",
|
||||
"com1", "com2", "com3", "com4", "com5", "com6", "com7", "com8", "com9",
|
||||
"lpt1", "lpt2", "lpt3", "lpt4", "lpt5", "lpt6", "lpt7", "lpt8", "lpt9"
|
||||
);
|
||||
|
||||
/**Validate if a given name is a valid file name
|
||||
* or path name on known platforms.
|
||||
*/
|
||||
public static void validateName(String name) {
|
||||
for (String part : name.split("\\.|/|\\\\")) {
|
||||
if (RESERVED_NAMES.contains(part.toLowerCase(Locale.US))) {
|
||||
throw new IllegalArgumentException("Name: " + name + " is" +
|
||||
"a reserved name on Windows, " +
|
||||
"and will not work!");
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* A memory file manager, for saving generated files in memory.
|
||||
* The file manager delegates to a separate file manager for listing and
|
||||
|
Loading…
x
Reference in New Issue
Block a user