From c27b85fb0eba52c9bdf4ddaa39286eed1078977a Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Thu, 15 Jun 2023 10:31:05 +0100 Subject: [PATCH] Split sample app - spring-shell-sample-commands and spring-shell-sample-e2e - Needed changes in e2e tests and workflow - Fixes #754 --- .github/workflows/e2e.yml | 9 ++- .vscode/launch.json | 37 ++++++---- e2e/README.adoc | 2 +- e2e/spring-shell-e2e-tests/src/utils.ts | 18 +++-- e2e/spring-shell-e2e-tests/test/flow.test.ts | 8 +-- settings.gradle | 15 +++- .../spring-shell-sample-commands.gradle | 39 ++++++++++ .../shell/samples/SpringShellSample.java | 0 .../shell/samples/standard/AliasCommands.java | 0 .../shell/samples/standard/Commands.java | 0 .../samples/standard/CompleteCommands.java | 0 .../samples/standard/ComponentCommands.java | 0 .../standard/ComponentFlowCommands.java | 0 .../samples/standard/ConversionExample.java | 0 .../samples/standard/DynamicCommands.java | 0 .../samples/standard/FunctionCommands.java | 0 .../samples/standard/RegisterCommands.java | 0 .../samples/standard/ResolvedCommands.java | 0 .../shell/samples/standard/TableCommands.java | 0 .../shell/samples/standard/ThemeCommands.java | 0 .../src/main/resources/application.yml | 0 .../shell/samples/AbstractSampleTests.java | 0 .../standard/ComponentCommandsTests.java | 0 .../spring-shell-sample-e2e.gradle} | 2 +- .../shell/samples/SpringShellSample.java | 52 ++++++++++++++ .../shell/samples/e2e/AliasCommands.java | 0 .../shell/samples/e2e/ArityCommands.java | 0 .../samples/e2e/AvailabilityCommands.java | 0 .../shell/samples/e2e/BaseE2ECommands.java | 0 .../samples/e2e/DefaultValueCommands.java | 0 .../samples/e2e/ErrorHandlingCommands.java | 0 .../shell/samples/e2e/ExitCodeCommands.java | 0 .../shell/samples/e2e/HelpOptionCommands.java | 0 .../shell/samples/e2e/HiddenCommands.java | 0 .../e2e/InteractiveCompletionCommands.java | 0 .../samples/e2e/OptionConversionCommands.java | 0 .../samples/e2e/OptionNamingCommands.java | 0 .../shell/samples/e2e/OptionTypeCommands.java | 0 .../samples/e2e/OptionalValueCommands.java | 0 .../samples/e2e/RequiredValueCommands.java | 0 .../samples/e2e/ShortOptionTypeCommands.java | 0 .../e2e/UnrecognisedOptionCommands.java | 0 .../samples/e2e/ValidatedValueCommands.java | 0 .../shell/samples/e2e/WriteCommands.java | 0 .../src/main/resources/application.yml | 34 +++++++++ .../shell/samples/AbstractSampleTests.java | 72 +++++++++++++++++++ .../shell/samples/e2e/AliasCommandsTests.java | 0 .../shell/samples/e2e/ArityCommandsTests.java | 0 .../e2e/DefaultValueCommandsTests.java | 0 .../samples/e2e/E2EArgumentsProvider.java | 0 .../shell/samples/e2e/E2ESource.java | 0 .../e2e/ErrorHandlingCommandsTests.java | 0 .../samples/e2e/HelpOptionCommandsTests.java | 0 .../samples/e2e/HiddenCommandsTests.java | 0 .../e2e/OptionConversionCommandsTests.java | 0 .../samples/e2e/OptionTypeCommandsTests.java | 0 .../e2e/OptionalValueCommandsTests.java | 0 .../e2e/RequiredValueCommandsTests.java | 0 58 files changed, 257 insertions(+), 31 deletions(-) create mode 100644 spring-shell-samples/spring-shell-sample-commands/spring-shell-sample-commands.gradle rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/SpringShellSample.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/AliasCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/Commands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/CompleteCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/ComponentCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/ComponentFlowCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/ConversionExample.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/DynamicCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/FunctionCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/RegisterCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/ResolvedCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/TableCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/java/org/springframework/shell/samples/standard/ThemeCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/main/resources/application.yml (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/test/java/org/springframework/shell/samples/AbstractSampleTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-commands}/src/test/java/org/springframework/shell/samples/standard/ComponentCommandsTests.java (100%) rename spring-shell-samples/{spring-shell-samples.gradle => spring-shell-sample-e2e/spring-shell-sample-e2e.gradle} (95%) create mode 100644 spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/SpringShellSample.java rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/AliasCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/ArityCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/AvailabilityCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/BaseE2ECommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/DefaultValueCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/ErrorHandlingCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/ExitCodeCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/HelpOptionCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/HiddenCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/InteractiveCompletionCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/OptionConversionCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/OptionNamingCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/OptionTypeCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/OptionalValueCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/RequiredValueCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/ShortOptionTypeCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/UnrecognisedOptionCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/ValidatedValueCommands.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/main/java/org/springframework/shell/samples/e2e/WriteCommands.java (100%) create mode 100644 spring-shell-samples/spring-shell-sample-e2e/src/main/resources/application.yml create mode 100644 spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/AbstractSampleTests.java rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/AliasCommandsTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/ArityCommandsTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/DefaultValueCommandsTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/E2EArgumentsProvider.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/E2ESource.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/ErrorHandlingCommandsTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/HelpOptionCommandsTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/HiddenCommandsTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/OptionConversionCommandsTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/OptionTypeCommandsTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/OptionalValueCommandsTests.java (100%) rename spring-shell-samples/{ => spring-shell-sample-e2e}/src/test/java/org/springframework/shell/samples/e2e/RequiredValueCommandsTests.java (100%) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 804ae504..6a40a5b2 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -42,9 +42,12 @@ jobs: name: spring-shell-samples-${{ matrix.nickname }} retention-days: 1 path: | - spring-shell-samples/build/libs/*.jar - spring-shell-samples/build/native/nativeCompile/spring-shell-samples - spring-shell-samples/build/native/nativeCompile/spring-shell-samples.exe + spring-shell-samples/spring-shell-sample-commands/build/libs/*.jar + spring-shell-samples/spring-shell-sample-commands/build/native/nativeCompile/spring-shell-sample-commands + spring-shell-samples/spring-shell-sample-commands/build/native/nativeCompile/spring-shell-sample-commands.exe + spring-shell-samples/spring-shell-sample-e2e/build/libs/*.jar + spring-shell-samples/spring-shell-sample-e2e/build/native/nativeCompile/spring-shell-sample-e2e + spring-shell-samples/spring-shell-sample-e2e/build/native/nativeCompile/spring-shell-sample-e2e.exe - name: Upload Build Logs if: ${{ failure() }} uses: actions/upload-artifact@v3 diff --git a/.vscode/launch.json b/.vscode/launch.json index 4d83bfb4..f263be93 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -3,41 +3,48 @@ "configurations": [ { "type": "java", - "name": "Sample interactive", + "name": "commands interactive", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples" + "projectName": "spring-shell-sample-commands" }, { "type": "java", - "name": "Sample help", + "name": "commands help", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-commands", "args": "help" }, { "type": "java", - "name": "Sample fail noarg", + "name": "commands fail noarg", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-commands", "args": "fail" }, { "type": "java", - "name": "Sample fail arg", + "name": "commands fail arg", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-commands", "args": "fail --elementType TYPE" }, + { + "type": "java", + "name": "e2e interactive", + "request": "launch", + "mainClass": "org.springframework.shell.samples.SpringShellSample", + "projectName": "spring-shell-sample-e2e" + }, { "type": "java", "name": "e2e reg error-handling", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-e2e", "args": "e2e reg error-handling" }, { @@ -45,7 +52,7 @@ "name": "e2e reg error-handling arg1 throw1", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-e2e", "args": "e2e reg error-handling --arg1 throw1" }, { @@ -53,7 +60,7 @@ "name": "e2e reg error-handling arg1 throw2", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-e2e", "args": "e2e reg error-handling --arg1 throw2" }, { @@ -61,7 +68,7 @@ "name": "e2e reg error-handling arg1 throw3", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-e2e", "args": "e2e reg error-handling --arg1 throw3" }, { @@ -69,7 +76,7 @@ "name": "e2e exit-code noarg", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-e2e", "args": "e2e reg exit-code" }, { @@ -77,7 +84,7 @@ "name": "e2e exit-code arg hi", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-e2e", "args": "e2e reg exit-code --arg1 hi" }, { @@ -85,7 +92,7 @@ "name": "e2e exit-code arg fun", "request": "launch", "mainClass": "org.springframework.shell.samples.SpringShellSample", - "projectName": "spring-shell-samples", + "projectName": "spring-shell-sample-e2e", "args": "e2e reg exit-code --arg1 fun" } ] diff --git a/e2e/README.adoc b/e2e/README.adoc index dca1154d..0376e1e9 100644 --- a/e2e/README.adoc +++ b/e2e/README.adoc @@ -31,7 +31,7 @@ Generic workflow to run `spring-shell-e2e-tests` is: [source, bash] ---- spring-shell -$ ./gradlew build nativeCompile -PspringShellSampleE2E=true -x test +$ ./gradlew :spring-shell-samples:spring-shell-sample-e2e:build :spring-shell-samples:spring-shell-sample-e2e:nativeCompile -PspringShellSampleE2E=true -x test spring-shell/e2e/spring-shell-e2e $ npm install diff --git a/e2e/spring-shell-e2e-tests/src/utils.ts b/e2e/spring-shell-e2e-tests/src/utils.ts index 10b469cd..7be2bebf 100644 --- a/e2e/spring-shell-e2e-tests/src/utils.ts +++ b/e2e/spring-shell-e2e-tests/src/utils.ts @@ -4,18 +4,28 @@ import * as path from 'path'; export const tempDir = path.join(__dirname, 'spring-shell', 'temp'); export const isWindows = os.platform() === 'win32'; export const cliPathRelative = isWindows - ? '..\\..\\spring-shell-samples\\build\\native\\nativeCompile\\spring-shell-samples.exe' - : '../../spring-shell-samples/build/native/nativeCompile/spring-shell-samples'; + ? '..\\..\\spring-shell-samples\\spring-shell-sample-e2e\\build\\native\\nativeCompile\\spring-shell-sample-e2e.exe' + : '../../spring-shell-samples/spring-shell-sample-e2e/build/native/nativeCompile/spring-shell-sample-e2e'; +export const commandsCliPathRelative = isWindows + ? '..\\..\\spring-shell-samples\\spring-shell-sample-commands\\build\\native\\nativeCompile\\spring-shell-sample-commands.exe' + : '../../spring-shell-samples/spring-shell-sample-commands/build/native/nativeCompile/spring-shell-sample-commands'; export const jarPathRelative = isWindows - ? '..\\..\\spring-shell-samples\\build\\libs\\spring-shell-samples.jar' - : '../../spring-shell-samples/build/libs/spring-shell-samples.jar'; + ? '..\\..\\spring-shell-samples\\spring-shell-sample-e2e\\build\\libs\\spring-shell-sample-e2e.jar' + : '../../spring-shell-samples/spring-shell-sample-e2e/build/libs/spring-shell-sample-e2e.jar'; +export const commandsJarPathRelative = isWindows + ? '..\\..\\spring-shell-samples\\spring-shell-sample-commands\\build\\libs\\spring-shell-sample-commands.jar' + : '../../spring-shell-samples/spring-shell-sample-commands/build/libs/spring-shell-sample-commands.jar'; export const cliPath = path.resolve(cliPathRelative); +export const commandsCliPath = path.resolve(commandsCliPathRelative); export const jarPath = path.resolve(jarPathRelative); +export const commandsJarPath = path.resolve(commandsJarPathRelative); export const nativeDesc = 'native'; export const jarDesc = 'jar'; export const jarCommand = isWindows ? 'java.exe' : 'java'; export const nativeCommand = cliPath; +export const commandsNativeCommand = commandsCliPath; export const jarOptions = ['-jar', jarPath]; +export const commandsJarOptions = ['-jar', commandsJarPath]; export const waitForExpectDefaultTimeout = 30000; export const waitForExpectDefaultInterval = 2000; export const testTimeout = 120000; diff --git a/e2e/spring-shell-e2e-tests/test/flow.test.ts b/e2e/spring-shell-e2e-tests/test/flow.test.ts index cd793dec..6db7f4b1 100644 --- a/e2e/spring-shell-e2e-tests/test/flow.test.ts +++ b/e2e/spring-shell-e2e-tests/test/flow.test.ts @@ -5,8 +5,8 @@ import { nativeDesc, jarDesc, jarCommand, - nativeCommand, - jarOptions, + commandsNativeCommand, + commandsJarOptions, waitForExpectDefaultTimeout, waitForExpectDefaultInterval, testTimeout @@ -71,7 +71,7 @@ describe('flow commands', () => { describe(jarDesc, () => { beforeAll(() => { command = jarCommand; - options = jarOptions; + options = commandsJarOptions; }); it( @@ -92,7 +92,7 @@ describe('flow commands', () => { */ describe(nativeDesc, () => { beforeAll(() => { - command = nativeCommand; + command = commandsNativeCommand; options = []; }); diff --git a/settings.gradle b/settings.gradle index 34e0ec40..1ea1b808 100644 --- a/settings.gradle +++ b/settings.gradle @@ -45,7 +45,6 @@ include 'spring-shell-core-test-support' include 'spring-shell-management' include 'spring-shell-dependencies' include 'spring-shell-docs' -include 'spring-shell-samples' include 'spring-shell-standard' include 'spring-shell-standard-commands' include 'spring-shell-table' @@ -56,12 +55,22 @@ file("${rootDir}/spring-shell-starters").eachDirMatch(~/spring-shell-starter.*/) include "spring-shell-starters:${it.name}" } +file("${rootDir}/spring-shell-samples").eachDirMatch(~/spring-shell-sample.*/) { + include "spring-shell-samples:${it.name}" +} + rootProject.children.each { project -> if (project.name == 'spring-shell-starters') { project.children.each { subproject -> - subproject.buildFileName = "${subproject.name}.gradle" + subproject.buildFileName = "${subproject.name}.gradle" } - } else { + } + else if (project.name == 'spring-shell-samples') { + project.children.each { subproject -> + subproject.buildFileName = "${subproject.name}.gradle" + } + } + else { project.buildFileName = "${project.name}.gradle" } } diff --git a/spring-shell-samples/spring-shell-sample-commands/spring-shell-sample-commands.gradle b/spring-shell-samples/spring-shell-sample-commands/spring-shell-sample-commands.gradle new file mode 100644 index 00000000..8856c449 --- /dev/null +++ b/spring-shell-samples/spring-shell-sample-commands/spring-shell-sample-commands.gradle @@ -0,0 +1,39 @@ +plugins { + id 'org.springframework.shell.sample' + id 'org.springframework.boot' + id 'org.graalvm.buildtools.native' +} + +description = 'Spring Shell Sample Commands' + +dependencies { + management platform(project(":spring-shell-management")) + implementation project(':spring-shell-starters:spring-shell-starter-jna') + testImplementation project(':spring-shell-starters:spring-shell-starter-test') + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.awaitility:awaitility' +} + +springBoot { + buildInfo() +} + +if (project.hasProperty('springShellSampleE2E') && springShellSampleE2E.toBoolean()) { + bootJar { + archiveName = "$baseName.$extension" + } +} + +graalvmNative { + metadataRepository { + enabled = true + } + binaries { + main { + if (project.hasProperty('springShellSampleMusl') && springShellSampleMusl.toBoolean()) { + buildArgs.add('--static') + buildArgs.add('--libc=musl') + } + } + } +} diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/SpringShellSample.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/SpringShellSample.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/SpringShellSample.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/SpringShellSample.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/AliasCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/AliasCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/AliasCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/AliasCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/Commands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/Commands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/Commands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/Commands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/CompleteCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/CompleteCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/CompleteCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/CompleteCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ComponentCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ComponentCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ComponentCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ComponentCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ComponentFlowCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ComponentFlowCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ComponentFlowCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ComponentFlowCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ConversionExample.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ConversionExample.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ConversionExample.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ConversionExample.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/DynamicCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/DynamicCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/DynamicCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/DynamicCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/FunctionCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/FunctionCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/FunctionCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/FunctionCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/RegisterCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/RegisterCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/RegisterCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/RegisterCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ResolvedCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ResolvedCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ResolvedCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ResolvedCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/TableCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/TableCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/TableCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/TableCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ThemeCommands.java b/spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ThemeCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/standard/ThemeCommands.java rename to spring-shell-samples/spring-shell-sample-commands/src/main/java/org/springframework/shell/samples/standard/ThemeCommands.java diff --git a/spring-shell-samples/src/main/resources/application.yml b/spring-shell-samples/spring-shell-sample-commands/src/main/resources/application.yml similarity index 100% rename from spring-shell-samples/src/main/resources/application.yml rename to spring-shell-samples/spring-shell-sample-commands/src/main/resources/application.yml diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/AbstractSampleTests.java b/spring-shell-samples/spring-shell-sample-commands/src/test/java/org/springframework/shell/samples/AbstractSampleTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/AbstractSampleTests.java rename to spring-shell-samples/spring-shell-sample-commands/src/test/java/org/springframework/shell/samples/AbstractSampleTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/standard/ComponentCommandsTests.java b/spring-shell-samples/spring-shell-sample-commands/src/test/java/org/springframework/shell/samples/standard/ComponentCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/standard/ComponentCommandsTests.java rename to spring-shell-samples/spring-shell-sample-commands/src/test/java/org/springframework/shell/samples/standard/ComponentCommandsTests.java diff --git a/spring-shell-samples/spring-shell-samples.gradle b/spring-shell-samples/spring-shell-sample-e2e/spring-shell-sample-e2e.gradle similarity index 95% rename from spring-shell-samples/spring-shell-samples.gradle rename to spring-shell-samples/spring-shell-sample-e2e/spring-shell-sample-e2e.gradle index 474a1b63..0501ef60 100644 --- a/spring-shell-samples/spring-shell-samples.gradle +++ b/spring-shell-samples/spring-shell-sample-e2e/spring-shell-sample-e2e.gradle @@ -4,7 +4,7 @@ plugins { id 'org.graalvm.buildtools.native' } -description = 'Spring Shell Samples' +description = 'Spring Shell Sample E2E' dependencies { management platform(project(":spring-shell-management")) diff --git a/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/SpringShellSample.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/SpringShellSample.java new file mode 100644 index 00000000..a65b34fd --- /dev/null +++ b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/SpringShellSample.java @@ -0,0 +1,52 @@ +/* + * Copyright 2017-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.shell.samples; + +import org.jline.utils.AttributedString; +import org.jline.utils.AttributedStyle; + +import org.springframework.boot.Banner.Mode; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.shell.command.annotation.CommandScan; +import org.springframework.shell.jline.PromptProvider; + +/** + * Main entry point for the application. + * + *

Creates the application context and start the REPL.

+ * + * @author Eric Bottard + * @author Janne Valkealahti + */ +@SpringBootApplication +@CommandScan +public class SpringShellSample { + + public static void main(String[] args) throws Exception { + SpringApplication application = new SpringApplication(SpringShellSample.class); + application.setBannerMode(Mode.OFF); + application.run(args); + // TODO: follow up with boot why spring.main.banner-mode=off doesn't work + // SpringApplication.run(SpringShellSample.class, args); + } + + @Bean + public PromptProvider myPromptProvider() { + return () -> new AttributedString("my-shell:>", AttributedStyle.DEFAULT.foreground(AttributedStyle.YELLOW)); + } +} diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/AliasCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/AliasCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/AliasCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/AliasCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ArityCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ArityCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ArityCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ArityCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/AvailabilityCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/AvailabilityCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/AvailabilityCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/AvailabilityCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/BaseE2ECommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/BaseE2ECommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/BaseE2ECommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/BaseE2ECommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/DefaultValueCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/DefaultValueCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/DefaultValueCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/DefaultValueCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ErrorHandlingCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ErrorHandlingCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ErrorHandlingCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ErrorHandlingCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ExitCodeCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ExitCodeCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ExitCodeCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ExitCodeCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/HelpOptionCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/HelpOptionCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/HelpOptionCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/HelpOptionCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/HiddenCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/HiddenCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/HiddenCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/HiddenCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/InteractiveCompletionCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/InteractiveCompletionCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/InteractiveCompletionCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/InteractiveCompletionCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/OptionConversionCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/OptionConversionCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/OptionConversionCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/OptionConversionCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/OptionNamingCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/OptionNamingCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/OptionNamingCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/OptionNamingCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/OptionTypeCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/OptionTypeCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/OptionTypeCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/OptionTypeCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/OptionalValueCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/OptionalValueCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/OptionalValueCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/OptionalValueCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/RequiredValueCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/RequiredValueCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/RequiredValueCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/RequiredValueCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ShortOptionTypeCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ShortOptionTypeCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ShortOptionTypeCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ShortOptionTypeCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/UnrecognisedOptionCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/UnrecognisedOptionCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/UnrecognisedOptionCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/UnrecognisedOptionCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ValidatedValueCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ValidatedValueCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/ValidatedValueCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/ValidatedValueCommands.java diff --git a/spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/WriteCommands.java b/spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/WriteCommands.java similarity index 100% rename from spring-shell-samples/src/main/java/org/springframework/shell/samples/e2e/WriteCommands.java rename to spring-shell-samples/spring-shell-sample-e2e/src/main/java/org/springframework/shell/samples/e2e/WriteCommands.java diff --git a/spring-shell-samples/spring-shell-sample-e2e/src/main/resources/application.yml b/spring-shell-samples/spring-shell-sample-e2e/src/main/resources/application.yml new file mode 100644 index 00000000..25542e94 --- /dev/null +++ b/spring-shell-samples/spring-shell-sample-e2e/src/main/resources/application.yml @@ -0,0 +1,34 @@ +spring: + main: + banner-mode: off + shell: + ## pick global default option naming + # option: + # naming: + # case-type: noop + # case-type: camel + # case-type: snake + # case-type: kebab + # case-type: pascal + config: + env: SPRING_SHELL_SAMPLES_USER_HOME + location: "{userconfig}/spring-shell-samples" + history: + name: spring-shell-samples-history.log + command: + help: + grouping-mode: group + completion: + root-command: spring-shell-samples +## disable console logging +logging: + pattern: + console: +## log debug from a cli +# file: +# name: shell.log +# level: +# root: debug +# org: +# springframework: +# shell: debug diff --git a/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/AbstractSampleTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/AbstractSampleTests.java new file mode 100644 index 00000000..f8ff0549 --- /dev/null +++ b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/AbstractSampleTests.java @@ -0,0 +1,72 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.shell.samples; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +import org.assertj.core.api.Condition; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.shell.test.ShellAssertions; +import org.springframework.shell.test.ShellTestClient; +import org.springframework.shell.test.ShellTestClient.BaseShellSession; +import org.springframework.shell.test.ShellTestClient.InteractiveShellSession; +import org.springframework.shell.test.ShellTestClient.NonInteractiveShellSession; +import org.springframework.shell.test.autoconfigure.ShellTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.awaitility.Awaitility.await; + +@ShellTest(terminalWidth = 120) +@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +public class AbstractSampleTests { + + @Autowired + protected ShellTestClient client; + + protected void assertScreenContainsText(BaseShellSession session, String text) { + await().atMost(2, TimeUnit.SECONDS).untilAsserted(() -> { + ShellAssertions.assertThat(session.screen()).containsText(text); + }); + } + + protected void assertScreenNotContainsText(BaseShellSession session, String textFound, String textNotFound) { + Condition notCondition = new Condition<>(line -> line.contains(textNotFound), + String.format("Text '%s' not found", textNotFound)); + + await().atMost(2, TimeUnit.SECONDS).untilAsserted(() -> { + ShellAssertions.assertThat(session.screen()).containsText(textFound); + List lines = session.screen().lines(); + assertThat(lines).areNot(notCondition); + }); + } + + protected BaseShellSession createSession(String command, boolean interactive) { + if (interactive) { + InteractiveShellSession session = client.interactive().run(); + session.write(session.writeSequence().command(command).build()); + return session; + } + else { + String[] commands = command.split(" "); + NonInteractiveShellSession session = client.nonInterative(commands).run(); + return session; + } + } +} diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/AliasCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/AliasCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/AliasCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/AliasCommandsTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/ArityCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/ArityCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/ArityCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/ArityCommandsTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/DefaultValueCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/DefaultValueCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/DefaultValueCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/DefaultValueCommandsTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/E2EArgumentsProvider.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/E2EArgumentsProvider.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/E2EArgumentsProvider.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/E2EArgumentsProvider.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/E2ESource.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/E2ESource.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/E2ESource.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/E2ESource.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/ErrorHandlingCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/ErrorHandlingCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/ErrorHandlingCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/ErrorHandlingCommandsTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/HelpOptionCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/HelpOptionCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/HelpOptionCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/HelpOptionCommandsTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/HiddenCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/HiddenCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/HiddenCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/HiddenCommandsTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/OptionConversionCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/OptionConversionCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/OptionConversionCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/OptionConversionCommandsTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/OptionTypeCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/OptionTypeCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/OptionTypeCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/OptionTypeCommandsTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/OptionalValueCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/OptionalValueCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/OptionalValueCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/OptionalValueCommandsTests.java diff --git a/spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/RequiredValueCommandsTests.java b/spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/RequiredValueCommandsTests.java similarity index 100% rename from spring-shell-samples/src/test/java/org/springframework/shell/samples/e2e/RequiredValueCommandsTests.java rename to spring-shell-samples/spring-shell-sample-e2e/src/test/java/org/springframework/shell/samples/e2e/RequiredValueCommandsTests.java