mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 12:09:14 +00:00
8353681: jpackage suppresses errors when executed with --verbose option
Reviewed-by: almatvee
This commit is contained in:
parent
10d1fec3ff
commit
cfcb3305f0
@ -552,16 +552,13 @@ public class Arguments {
|
||||
generateBundle(bp.getBundleParamsAsMap());
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
if (Log.isVerbose()) {
|
||||
Log.verbose(e);
|
||||
} else {
|
||||
String msg1 = e.getMessage();
|
||||
Log.fatalError(msg1);
|
||||
if (e.getCause() != null && e.getCause() != e) {
|
||||
String msg2 = e.getCause().getMessage();
|
||||
if (msg2 != null && !msg1.contains(msg2)) {
|
||||
Log.fatalError(msg2);
|
||||
}
|
||||
Log.verbose(e);
|
||||
String msg1 = e.getMessage();
|
||||
Log.fatalError(msg1);
|
||||
if (e.getCause() != null && e.getCause() != e) {
|
||||
String msg2 = e.getCause().getMessage();
|
||||
if (msg2 != null && !msg1.contains(msg2)) {
|
||||
Log.fatalError(msg2);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
@ -42,7 +42,6 @@ import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
@ -1174,16 +1173,20 @@ public class JPackageCommand extends CommandArguments<JPackageCommand> {
|
||||
}
|
||||
|
||||
public static Stream<String> stripTimestamps(Stream<String> stream) {
|
||||
// [HH:mm:ss.SSS]
|
||||
final Pattern timestampRegexp = Pattern.compile(
|
||||
"^\\[\\d\\d:\\d\\d:\\d\\d.\\d\\d\\d\\] ");
|
||||
return stream.map(str -> {
|
||||
Matcher m = timestampRegexp.matcher(str);
|
||||
if (m.find()) {
|
||||
str = str.substring(m.end());
|
||||
}
|
||||
return stream.map(JPackageCommand::stripTimestamp);
|
||||
}
|
||||
|
||||
public static String stripTimestamp(String str) {
|
||||
final var m = TIMESTAMP_REGEXP.matcher(str);
|
||||
if (m.find()) {
|
||||
return str.substring(m.end());
|
||||
} else {
|
||||
return str;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean withTimestamp(String str) {
|
||||
return TIMESTAMP_REGEXP.matcher(str).find();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1279,4 +1282,8 @@ public class JPackageCommand extends CommandArguments<JPackageCommand> {
|
||||
}).get();
|
||||
|
||||
private static final String UNPACKED_PATH_ARGNAME = "jpt-unpacked-folder";
|
||||
|
||||
// [HH:mm:ss.SSS]
|
||||
private static final Pattern TIMESTAMP_REGEXP = Pattern.compile(
|
||||
"^\\[\\d\\d:\\d\\d:\\d\\d.\\d\\d\\d\\] ");
|
||||
}
|
||||
|
||||
@ -22,32 +22,34 @@
|
||||
*/
|
||||
|
||||
|
||||
import static jdk.jpackage.test.RunnablePackageTest.Action.CREATE_AND_UNPACK;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Stream;
|
||||
import jdk.jpackage.test.TKit;
|
||||
import jdk.jpackage.internal.util.function.ThrowingConsumer;
|
||||
import jdk.jpackage.test.Annotations.Parameter;
|
||||
import jdk.jpackage.test.Annotations.ParameterSupplier;
|
||||
import jdk.jpackage.test.Annotations.Test;
|
||||
import jdk.jpackage.test.CannedFormattedString;
|
||||
import jdk.jpackage.test.Executor;
|
||||
import jdk.jpackage.test.HelloApp;
|
||||
import jdk.jpackage.test.JPackageCommand;
|
||||
import jdk.jpackage.test.JPackageStringBundle;
|
||||
import jdk.jpackage.test.JavaAppDesc;
|
||||
import jdk.jpackage.test.PackageTest;
|
||||
import jdk.jpackage.test.HelloApp;
|
||||
import jdk.jpackage.test.Executor;
|
||||
import jdk.jpackage.test.JavaTool;
|
||||
import jdk.jpackage.test.Annotations.Test;
|
||||
import jdk.jpackage.test.Annotations.Parameter;
|
||||
import jdk.jpackage.test.Annotations.ParameterSupplier;
|
||||
import jdk.jpackage.internal.util.function.ThrowingConsumer;
|
||||
import jdk.jpackage.test.PackageTest;
|
||||
import jdk.jpackage.test.TKit;
|
||||
import jdk.tools.jlink.internal.LinkableRuntimeImage;
|
||||
import static jdk.jpackage.test.RunnablePackageTest.Action.CREATE_AND_UNPACK;
|
||||
|
||||
/*
|
||||
* @test
|
||||
@ -228,6 +230,29 @@ public final class BasicTest {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@Parameter("false")
|
||||
@Parameter("true")
|
||||
public void testErrorsAlwaysPrinted(boolean verbose) {
|
||||
final var cmd = JPackageCommand.helloAppImage()
|
||||
.ignoreDefaultVerbose(true)
|
||||
.useToolProvider(false)
|
||||
.removeArgumentWithValue("--main-class");
|
||||
|
||||
if (verbose) {
|
||||
cmd.addArgument("--verbose");
|
||||
}
|
||||
|
||||
final var textVerifier = Stream.of(
|
||||
List.of("error.no-main-class-with-main-jar", "hello.jar"),
|
||||
List.of("error.no-main-class-with-main-jar.advice", "hello.jar")
|
||||
).map(args -> {
|
||||
return JPackageStringBundle.MAIN.cannedFormattedString(args.getFirst(), args.subList(1, args.size()).toArray());
|
||||
}).map(CannedFormattedString::getValue).map(TKit::assertTextStream).reduce(TKit.TextStreamVerifier::andThen).orElseThrow();
|
||||
|
||||
textVerifier.apply(cmd.saveConsoleOutput(true).execute(1).getOutput().stream().filter(Predicate.not(JPackageCommand::withTimestamp)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoName() {
|
||||
final String mainClassName = "Greetings";
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user