Skip to content

Commit cfcb330

Browse files
author
Alexey Semenyuk
committed
8353681: jpackage suppresses errors when executed with --verbose option
Reviewed-by: almatvee
1 parent 10d1fec commit cfcb330

File tree

3 files changed

+59
-30
lines changed

3 files changed

+59
-30
lines changed

src/jdk.jpackage/share/classes/jdk/jpackage/internal/Arguments.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -552,16 +552,13 @@ public boolean processArguments() {
552552
generateBundle(bp.getBundleParamsAsMap());
553553
return true;
554554
} catch (Exception e) {
555-
if (Log.isVerbose()) {
556-
Log.verbose(e);
557-
} else {
558-
String msg1 = e.getMessage();
559-
Log.fatalError(msg1);
560-
if (e.getCause() != null && e.getCause() != e) {
561-
String msg2 = e.getCause().getMessage();
562-
if (msg2 != null && !msg1.contains(msg2)) {
563-
Log.fatalError(msg2);
564-
}
555+
Log.verbose(e);
556+
String msg1 = e.getMessage();
557+
Log.fatalError(msg1);
558+
if (e.getCause() != null && e.getCause() != e) {
559+
String msg2 = e.getCause().getMessage();
560+
if (msg2 != null && !msg1.contains(msg2)) {
561+
Log.fatalError(msg2);
565562
}
566563
}
567564
return false;

test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import java.util.function.Function;
4343
import java.util.function.Predicate;
4444
import java.util.function.Supplier;
45-
import java.util.regex.Matcher;
4645
import java.util.regex.Pattern;
4746
import java.util.stream.Collectors;
4847
import java.util.stream.Stream;
@@ -1174,16 +1173,20 @@ public static String escapeAndJoin(List<String> args) {
11741173
}
11751174

11761175
public static Stream<String> stripTimestamps(Stream<String> stream) {
1177-
// [HH:mm:ss.SSS]
1178-
final Pattern timestampRegexp = Pattern.compile(
1179-
"^\\[\\d\\d:\\d\\d:\\d\\d.\\d\\d\\d\\] ");
1180-
return stream.map(str -> {
1181-
Matcher m = timestampRegexp.matcher(str);
1182-
if (m.find()) {
1183-
str = str.substring(m.end());
1184-
}
1176+
return stream.map(JPackageCommand::stripTimestamp);
1177+
}
1178+
1179+
public static String stripTimestamp(String str) {
1180+
final var m = TIMESTAMP_REGEXP.matcher(str);
1181+
if (m.find()) {
1182+
return str.substring(m.end());
1183+
} else {
11851184
return str;
1186-
});
1185+
}
1186+
}
1187+
1188+
public static boolean withTimestamp(String str) {
1189+
return TIMESTAMP_REGEXP.matcher(str).find();
11871190
}
11881191

11891192
@Override
@@ -1279,4 +1282,8 @@ public void run() {
12791282
}).get();
12801283

12811284
private static final String UNPACKED_PATH_ARGNAME = "jpt-unpacked-folder";
1285+
1286+
// [HH:mm:ss.SSS]
1287+
private static final Pattern TIMESTAMP_REGEXP = Pattern.compile(
1288+
"^\\[\\d\\d:\\d\\d:\\d\\d.\\d\\d\\d\\] ");
12821289
}

test/jdk/tools/jpackage/share/BasicTest.java

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,34 @@
2222
*/
2323

2424

25+
import static jdk.jpackage.test.RunnablePackageTest.Action.CREATE_AND_UNPACK;
26+
2527
import java.io.IOException;
2628
import java.nio.file.Files;
2729
import java.nio.file.Path;
28-
import java.util.List;
2930
import java.util.ArrayList;
3031
import java.util.Collection;
3132
import java.util.Collections;
33+
import java.util.List;
3234
import java.util.Optional;
3335
import java.util.function.Function;
3436
import java.util.function.Predicate;
3537
import java.util.regex.Pattern;
3638
import java.util.stream.Stream;
37-
import jdk.jpackage.test.TKit;
39+
import jdk.jpackage.internal.util.function.ThrowingConsumer;
40+
import jdk.jpackage.test.Annotations.Parameter;
41+
import jdk.jpackage.test.Annotations.ParameterSupplier;
42+
import jdk.jpackage.test.Annotations.Test;
43+
import jdk.jpackage.test.CannedFormattedString;
44+
import jdk.jpackage.test.Executor;
45+
import jdk.jpackage.test.HelloApp;
3846
import jdk.jpackage.test.JPackageCommand;
3947
import jdk.jpackage.test.JPackageStringBundle;
4048
import jdk.jpackage.test.JavaAppDesc;
41-
import jdk.jpackage.test.PackageTest;
42-
import jdk.jpackage.test.HelloApp;
43-
import jdk.jpackage.test.Executor;
4449
import jdk.jpackage.test.JavaTool;
45-
import jdk.jpackage.test.Annotations.Test;
46-
import jdk.jpackage.test.Annotations.Parameter;
47-
import jdk.jpackage.test.Annotations.ParameterSupplier;
48-
import jdk.jpackage.internal.util.function.ThrowingConsumer;
50+
import jdk.jpackage.test.PackageTest;
51+
import jdk.jpackage.test.TKit;
4952
import jdk.tools.jlink.internal.LinkableRuntimeImage;
50-
import static jdk.jpackage.test.RunnablePackageTest.Action.CREATE_AND_UNPACK;
5153

5254
/*
5355
* @test
@@ -228,6 +230,29 @@ public void testVerbose() {
228230
});
229231
}
230232

233+
@Test
234+
@Parameter("false")
235+
@Parameter("true")
236+
public void testErrorsAlwaysPrinted(boolean verbose) {
237+
final var cmd = JPackageCommand.helloAppImage()
238+
.ignoreDefaultVerbose(true)
239+
.useToolProvider(false)
240+
.removeArgumentWithValue("--main-class");
241+
242+
if (verbose) {
243+
cmd.addArgument("--verbose");
244+
}
245+
246+
final var textVerifier = Stream.of(
247+
List.of("error.no-main-class-with-main-jar", "hello.jar"),
248+
List.of("error.no-main-class-with-main-jar.advice", "hello.jar")
249+
).map(args -> {
250+
return JPackageStringBundle.MAIN.cannedFormattedString(args.getFirst(), args.subList(1, args.size()).toArray());
251+
}).map(CannedFormattedString::getValue).map(TKit::assertTextStream).reduce(TKit.TextStreamVerifier::andThen).orElseThrow();
252+
253+
textVerifier.apply(cmd.saveConsoleOutput(true).execute(1).getOutput().stream().filter(Predicate.not(JPackageCommand::withTimestamp)));
254+
}
255+
231256
@Test
232257
public void testNoName() {
233258
final String mainClassName = "Greetings";

0 commit comments

Comments
 (0)