Skip to content

Commit 9221eaa

Browse files
committed
Add "Thanks for using JUnit!" banner
This commit introduces a message that is displayed every time the JUnit Platform Console Launcher is executed. That message reads: Thanks for using JUnit! Support its development at https://junit.org/sponsoring Users may use the new `--disable-banner` command line option of the Console Launcher to prevent the display of the banner. Closes #1755
1 parent fb8d81a commit 9221eaa

File tree

7 files changed

+68
-2
lines changed

7 files changed

+68
-2
lines changed

junit-platform-console/src/main/java/org/junit/platform/console/ConsoleLauncher.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ ConsoleLauncherExecutionResult execute(String... args) {
8080
return ConsoleLauncherExecutionResult.failed();
8181
}
8282
try (PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outStream, charset)))) {
83+
if (!options.isBannerDisabled()) {
84+
displayBanner(out);
85+
}
8386
if (options.isDisplayHelp()) {
8487
commandLineOptionsParser.printHelp(out);
8588
return ConsoleLauncherExecutionResult.success();
@@ -92,6 +95,12 @@ ConsoleLauncherExecutionResult execute(String... args) {
9295
}
9396
}
9497

98+
void displayBanner(PrintWriter out) {
99+
out.println();
100+
out.println("Thanks for using JUnit! Support its development at https://junit.org/sponsoring");
101+
out.println();
102+
}
103+
95104
private ConsoleLauncherExecutionResult executeTests(CommandLineOptions options, PrintWriter out) {
96105
try {
97106
TestExecutionSummary testExecutionSummary = new ConsoleTestExecutor(options).execute(out);

junit-platform-console/src/main/java/org/junit/platform/console/options/AvailableOptions.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@ class AvailableOptions {
5050
@Option(names = "-disable-ansi-colors", hidden = true)
5151
private boolean disableAnsiColors2;
5252

53+
@Option(names = "--disable-banner", description = "Disable print out of the welcome message.")
54+
private boolean disableBanner;
55+
56+
@Option(names = "-disable-banner", hidden = true)
57+
private boolean disableBanner2;
58+
5359
@Option(names = "--details", paramLabel = "MODE", description = "Select an output details mode for when tests are executed. " //
5460
+ "Use one of: ${COMPLETION-CANDIDATES}. If 'none' is selected, " //
5561
+ "then only the summary and test failures are shown. Default: ${DEFAULT-VALUE}.")
@@ -286,6 +292,7 @@ CommandLineOptions toCommandLineOptions(ParseResult parseResult) {
286292
// General Purpose
287293
result.setDisplayHelp(this.helpRequested || this.helpRequested2);
288294
result.setAnsiColorOutputDisabled(this.disableAnsiColors || this.disableAnsiColors2);
295+
result.setBannerDisabled(this.disableBanner || this.disableBanner2);
289296
result.setDetails(choose(this.details, this.details2, CommandLineOptions.DEFAULT_DETAILS));
290297
result.setTheme(choose(this.theme, this.theme2, CommandLineOptions.DEFAULT_THEME));
291298
result.setAdditionalClasspathEntries(merge(this.additionalClasspathEntries, this.additionalClasspathEntries2));

junit-platform-console/src/main/java/org/junit/platform/console/options/CommandLineOptions.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class CommandLineOptions {
3939

4040
private boolean displayHelp;
4141
private boolean ansiColorOutputDisabled;
42+
private boolean bannerDisabled;
4243
private Details details = DEFAULT_DETAILS;
4344
private Theme theme = DEFAULT_THEME;
4445
private List<Path> additionalClasspathEntries = emptyList();
@@ -87,6 +88,14 @@ public void setAnsiColorOutputDisabled(boolean ansiColorOutputDisabled) {
8788
this.ansiColorOutputDisabled = ansiColorOutputDisabled;
8889
}
8990

91+
public boolean isBannerDisabled() {
92+
return this.bannerDisabled;
93+
}
94+
95+
public void setBannerDisabled(boolean bannerDisabled) {
96+
this.bannerDisabled = bannerDisabled;
97+
}
98+
9099
public boolean isScanModulepath() {
91100
return this.scanModulepath;
92101
}

platform-tests/src/test/java/org/junit/platform/console/ConsoleDetailsTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ private List<DynamicNode> scanContainerClassAndCreateDynamicTests(Class<?> conta
9393
"--details", details.name(), //
9494
"--details-theme", theme.name(), //
9595
"--disable-ansi-colors", //
96+
"--disable-banner", //
9697
"--include-classname", containerClass.getCanonicalName(), //
9798
"--select-method", getFullyQualifiedMethodName(containerClass, methodName, types) //
9899
};

platform-tests/src/test/java/org/junit/platform/console/ConsoleLauncherTests.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@
1111
package org.junit.platform.console;
1212

1313
import static org.junit.jupiter.api.Assertions.assertEquals;
14+
import static org.junit.jupiter.api.Assertions.assertLinesMatch;
1415
import static org.mockito.ArgumentMatchers.any;
1516
import static org.mockito.Mockito.mock;
1617
import static org.mockito.Mockito.verify;
1718
import static org.mockito.Mockito.when;
1819

1920
import java.io.ByteArrayOutputStream;
2021
import java.io.PrintStream;
22+
import java.util.List;
23+
import java.util.stream.Collectors;
2124

2225
import org.junit.jupiter.api.Test;
2326
import org.junit.platform.console.options.CommandLineOptions;
@@ -28,7 +31,8 @@
2831
*/
2932
class ConsoleLauncherTests {
3033

31-
private final PrintStream printSink = new PrintStream(new ByteArrayOutputStream());
34+
private final ByteArrayOutputStream printedBytes = new ByteArrayOutputStream(1000);
35+
private final PrintStream printSink = new PrintStream(printedBytes);
3236

3337
@Test
3438
void displayHelp() {
@@ -45,6 +49,40 @@ void displayHelp() {
4549
verify(commandLineOptionsParser).parse("--help");
4650
}
4751

52+
@Test
53+
void displayBanner() {
54+
CommandLineOptions options = new CommandLineOptions();
55+
options.setBannerDisabled(false);
56+
options.setDisplayHelp(true);
57+
58+
CommandLineOptionsParser commandLineOptionsParser = mock(CommandLineOptionsParser.class);
59+
when(commandLineOptionsParser.parse(any())).thenReturn(options);
60+
61+
ConsoleLauncher consoleLauncher = new ConsoleLauncher(commandLineOptionsParser, printSink, printSink);
62+
int exitCode = consoleLauncher.execute("--help").getExitCode();
63+
64+
assertEquals(0, exitCode);
65+
assertLinesMatch(
66+
List.of("", "Thanks for using JUnit! Support its development at https://junit.org/sponsoring", ""),
67+
printedBytes.toString().lines().collect(Collectors.toList()));
68+
}
69+
70+
@Test
71+
void disableBanner() {
72+
CommandLineOptions options = new CommandLineOptions();
73+
options.setBannerDisabled(true);
74+
options.setDisplayHelp(true);
75+
76+
CommandLineOptionsParser commandLineOptionsParser = mock(CommandLineOptionsParser.class);
77+
when(commandLineOptionsParser.parse(any())).thenReturn(options);
78+
79+
ConsoleLauncher consoleLauncher = new ConsoleLauncher(commandLineOptionsParser, printSink, printSink);
80+
int exitCode = consoleLauncher.execute("--help", "--disable-banner").getExitCode();
81+
82+
assertEquals(0, exitCode);
83+
assertLinesMatch(List.of(), printedBytes.toString().lines().collect(Collectors.toList()));
84+
}
85+
4886
@Test
4987
void executeWithUnknownCommandLineOption() {
5088
CommandLineOptionsParser commandLineOptionsParser = mock(CommandLineOptionsParser.class);

platform-tooling-support-tests/src/test/java/platform/tooling/support/tests/MultiReleaseJarTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class MultiReleaseJarTests {
3434
void checkDefault() throws Exception {
3535
var variant = "default";
3636
var expectedLines = List.of( //
37+
">> BANNER >>",
3738
".", //
3839
"'-- JUnit Jupiter [OK]", //
3940
" '-- JupiterIntegrationTests [OK]", //
@@ -70,7 +71,7 @@ void checkDefault() throws Exception {
7071
void checkNoScripting() throws Exception {
7172
var variant = "no-scripting";
7273
var expectedLines = List.of( //
73-
".", //
74+
">> BANNER >>", ".", //
7475
"'-- JUnit Jupiter [OK]", //
7576
" '-- JupiterIntegrationTests [OK]", //
7677
" +-- javaPlatformModuleSystemIsAvailable() [OK]", //

platform-tooling-support-tests/src/test/java/platform/tooling/support/tests/StandaloneTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ void test() throws IOException {
6767
.addArguments("-Djava.util.logging.config.file=logging.properties") //
6868
.addArguments("-jar", jar) //
6969
.addArguments("--scan-class-path") //
70+
.addArguments("--disable-banner") //
7071
.addArguments("--include-classname", "standalone.*") //
7172
.addArguments("--classpath", "bin").build() //
7273
.run(false);

0 commit comments

Comments
 (0)