8216539: tools/jar/modularJar/Basic.java times out

Reviewed-by: mchung, alanb, bchristi, bpb
This commit is contained in:
Lance Andersen 2019-04-03 11:30:23 -04:00
parent 5c06e0a912
commit 518e3a8788

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -24,7 +24,9 @@
import java.io.*;
import java.lang.module.ModuleDescriptor;
import java.lang.reflect.Method;
import java.nio.file.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.function.Consumer;
import java.util.jar.JarEntry;
@ -32,6 +34,7 @@ import java.util.jar.JarFile;
import java.util.jar.JarInputStream;
import java.util.jar.Manifest;
import java.util.regex.Pattern;
import java.util.spi.ToolProvider;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -59,6 +62,16 @@ import static java.lang.System.out;
*/
public class Basic {
private static final ToolProvider JAR_TOOL = ToolProvider.findFirst("jar")
.orElseThrow(()
-> new RuntimeException("jar tool not found")
);
private static final ToolProvider JAVAC_TOOL = ToolProvider.findFirst("javac")
.orElseThrow(()
-> new RuntimeException("javac tool not found")
);
static final Path TEST_SRC = Paths.get(System.getProperty("test.src", "."));
static final Path TEST_CLASSES = Paths.get(System.getProperty("test.classes", "."));
static final Path MODULE_CLASSES = TEST_CLASSES.resolve("build");
@ -977,13 +990,14 @@ public class Basic {
}
Stream.of(args).forEach(commands::add);
ProcessBuilder p = new ProcessBuilder(commands);
if (stdinSource != null)
if (stdinSource != null) {
p.redirectInput(stdinSource);
}
return run(p);
}
static Result jar(String... args) {
return jarWithStdin(null, args);
return run(JAR_TOOL, args);
}
static Path compileModule(String mn) throws IOException {
@ -1071,10 +1085,8 @@ public class Basic {
static void javac(Path dest, Path modulePath, Path... sourceFiles)
throws IOException
{
String javac = getJDKTool("javac");
List<String> commands = new ArrayList<>();
commands.add(javac);
if (!TOOL_VM_OPTIONS.isEmpty()) {
commands.addAll(Arrays.asList(TOOL_VM_OPTIONS.split("\\s+", -1)));
}
@ -1092,7 +1104,13 @@ public class Basic {
}
Stream.of(sourceFiles).map(Object::toString).forEach(x -> commands.add(x));
quickFail(run(new ProcessBuilder(commands)));
StringWriter sw = new StringWriter();
try (PrintWriter pw = new PrintWriter(sw)) {
int rc = JAVAC_TOOL.run(pw, pw, commands.toArray(new String[0]));
if(rc != 0) {
throw new RuntimeException(sw.toString());
}
}
}
static Result java(Path modulePath, String entryPoint, String... args) {
@ -1138,9 +1156,13 @@ public class Basic {
return false;
}
static void quickFail(Result r) {
if (r.ec != 0)
throw new RuntimeException(r.output);
static Result run(ToolProvider tp, String[] commands) {
int rc = 0;
StringWriter sw = new StringWriter();
try (PrintWriter pw = new PrintWriter(sw)) {
rc = tp.run(pw, pw, commands);
}
return new Result(rc, sw.toString());
}
static Result run(ProcessBuilder pb) {