diff --git a/src/main/bash/sdkman-env-helpers.sh b/src/main/bash/sdkman-env-helpers.sh index 33244525..5f2b17b1 100644 --- a/src/main/bash/sdkman-env-helpers.sh +++ b/src/main/bash/sdkman-env-helpers.sh @@ -86,7 +86,7 @@ function __sdkman_determine_version() { echo "" __sdkman_echo_red "Stop! $candidate $version is not available. Possible causes:" __sdkman_echo_red " * $version is an invalid version" - __sdkman_echo_red " * $candidate binaries are incompatible with $SDKMAN_PLATFORM" + __sdkman_echo_red " * $candidate binaries are incompatible with your platform" __sdkman_echo_red " * $candidate has not been released yet" echo "" __sdkman_echo_yellow "Tip: see all available versions for your platform:" diff --git a/src/main/bash/sdkman-init.sh b/src/main/bash/sdkman-init.sh index 345f5716..eef5f7ec 100644 --- a/src/main/bash/sdkman-init.sh +++ b/src/main/bash/sdkman-init.sh @@ -87,7 +87,7 @@ function infer_platform() { esac } -SDKMAN_PLATFORM="$(infer_platform)" +SDKMAN_PLATFORM="$(infer_platform | tr '[:upper:]' '[:lower:]')" export SDKMAN_PLATFORM # OS specific support (must be 'true' or 'false'). diff --git a/src/test/groovy/sdkman/specs/PlatformSpec.groovy b/src/test/groovy/sdkman/specs/PlatformSpec.groovy index cb04daf4..f6ad9782 100644 --- a/src/test/groovy/sdkman/specs/PlatformSpec.groovy +++ b/src/test/groovy/sdkman/specs/PlatformSpec.groovy @@ -20,17 +20,17 @@ class PlatformSpec extends SdkmanEnvSpecification { where: kernel | machine | platform - "Linux" | "i686" | "LinuxX32" - "Linux" | "x86_64" | "LinuxX64" - "Linux" | "armv7l" | "LinuxARM32" - "Linux" | "armv8l" | "LinuxARM64" - "Linux" | "aarch64" | "LinuxARM64" - "Linux" | "" | "LinuxX64" - "Darwin" | "x86_64" | "DarwinX64" - "Darwin" | "arm64" | "DarwinARM64" - "Darwin" | "" | "DarwinX64" - "MSYS64" | "i686" | "MSYS64" - "MSYS64" | "" | "MSYS64" + "Linux" | "i686" | "linuxx32" + "Linux" | "x86_64" | "linuxx64" + "Linux" | "armv7l" | "linuxarm32" + "Linux" | "armv8l" | "linuxarm64" + "Linux" | "aarch64" | "linuxarm64" + "Linux" | "" | "linuxx64" + "Darwin" | "x86_64" | "darwinx64" + "Darwin" | "arm64" | "darwinarm64" + "Darwin" | "" | "darwinx64" + "MSYS64" | "i686" | "msys64" + "MSYS64" | "" | "msys64" } def "should enable rosetta 2 compatibility mode with environment variable"() { @@ -47,7 +47,7 @@ class PlatformSpec extends SdkmanEnvSpecification { bash.execute('echo $SDKMAN_PLATFORM') then: - !bash.output.contains("DarwinARM64") - bash.output.contains("DarwinX64") + !bash.output.contains("darwinarm64") + bash.output.contains("darwinx64") } } diff --git a/src/test/groovy/sdkman/steps/env.groovy b/src/test/groovy/sdkman/steps/env.groovy index 5bf86a7e..c92c0ea9 100644 --- a/src/test/groovy/sdkman/steps/env.groovy +++ b/src/test/groovy/sdkman/steps/env.groovy @@ -2,14 +2,12 @@ package sdkman.steps import com.github.tomakehurst.wiremock.client.WireMock import sdkman.support.FilesystemUtils -import sdkman.support.UnixUtils import sdkman.support.WireMockServerProvider import static cucumber.api.groovy.Hooks.After import static cucumber.api.groovy.Hooks.Before HTTP_PROXY = System.getProperty("httpProxy") ?: "" -PLATFORM = UnixUtils.platform.toLowerCase() FAKE_JDK_PATH = "/path/to/my/openjdk" SERVICE_UP_HOST = "localhost" diff --git a/src/test/groovy/sdkman/steps/initialisation_steps.groovy b/src/test/groovy/sdkman/steps/initialisation_steps.groovy index 21558cc8..f676638e 100644 --- a/src/test/groovy/sdkman/steps/initialisation_steps.groovy +++ b/src/test/groovy/sdkman/steps/initialisation_steps.groovy @@ -9,7 +9,6 @@ import java.util.zip.ZipFile import static cucumber.api.groovy.EN.And import static sdkman.stubs.WebServiceStub.primeEndpointWithString import static sdkman.stubs.WebServiceStub.primeSelfupdate -import static sdkman.support.UnixUtils.asSdkmanPlatform def BROADCAST_MESSAGE = "broadcast message" diff --git a/src/test/groovy/sdkman/steps/stub_steps.groovy b/src/test/groovy/sdkman/steps/stub_steps.groovy index e6ba5ecc..1e23863c 100644 --- a/src/test/groovy/sdkman/steps/stub_steps.groovy +++ b/src/test/groovy/sdkman/steps/stub_steps.groovy @@ -11,9 +11,9 @@ import static sdkman.support.FilesystemUtils.readVersionsCsvFromCandidateFolder And(~'^the default "([^"]*)" version is "([^"]*)"$') { String candidate, String version -> primeEndpointWithString("/candidates/default/${candidate}", version) - primeDownloadFor(SERVICE_UP_URL, candidate, version, PLATFORM) - primeEndpointWithString("/hooks/pre/${candidate}/${version}/${PLATFORM}", preInstallationHookSuccess()) - primeEndpointWithString("/hooks/post/${candidate}/${version}/${PLATFORM}", postInstallationHookSuccess()) + primeDownloadFor(SERVICE_UP_URL, candidate, version, UnixUtils.asSdkmanPlatform()) + primeEndpointWithString("/hooks/pre/${candidate}/${version}/${UnixUtils.asSdkmanPlatform()}", preInstallationHookSuccess()) + primeEndpointWithString("/hooks/post/${candidate}/${version}/${UnixUtils.asSdkmanPlatform()}", postInstallationHookSuccess()) } And(~'^an available selfupdate$') { -> @@ -21,67 +21,67 @@ And(~'^an available selfupdate$') { -> } And(~'^the candidate "([^"]*)" version "([^"]*)" is available for download$') { String candidate, String version -> - primeEndpointWithString("/candidates/validate/${candidate}/${version}/${PLATFORM}", "valid") - primeDownloadFor(SERVICE_UP_URL, candidate, version, PLATFORM) - primeEndpointWithString("/hooks/pre/${candidate}/${version}/${PLATFORM}", preInstallationHookSuccess()) - primeEndpointWithString("/hooks/post/${candidate}/${version}/${PLATFORM}", postInstallationHookSuccess()) + primeEndpointWithString("/candidates/validate/${candidate}/${version}/${UnixUtils.asSdkmanPlatform()}", "valid") + primeDownloadFor(SERVICE_UP_URL, candidate, version, UnixUtils.asSdkmanPlatform()) + primeEndpointWithString("/hooks/pre/${candidate}/${version}/${UnixUtils.asSdkmanPlatform()}", preInstallationHookSuccess()) + primeEndpointWithString("/hooks/post/${candidate}/${version}/${UnixUtils.asSdkmanPlatform()}", postInstallationHookSuccess()) } And(~/^the appropriate universal hooks are available for "([^"]*)" version "([^"]*)" on "([^"]*)"$/) { String candidate, String version, String platform -> - String lcPlatform = UnixUtils.asSdkmanPlatform(platform).toLowerCase() + String lcPlatform = UnixUtils.asSdkmanPlatform(platform) primeUniversalHookFor("pre", candidate, version, lcPlatform) primeUniversalHookFor("post", candidate, version, lcPlatform) } And(~/^the appropriate multi-platform hooks are available for "([^"]*)" version "([^"]*)" on "([^"]*)" with architecture "(.*)"$/) { String candidate, String version, String platform, String architecture -> - String lcPlatform = UnixUtils.asSdkmanPlatform(platform, architecture).toLowerCase() + String lcPlatform = UnixUtils.asSdkmanPlatform(platform, architecture) primePlatformSpecificHookFor("pre", candidate, version, lcPlatform) primePlatformSpecificHookFor("post", candidate, version, lcPlatform) } And(~'^the candidate "([^"]*)" version "([^"]*)" is not available for download$') { String candidate, String version -> - primeEndpointWithString("/candidates/validate/${candidate}/${version}/${PLATFORM}", "invalid") + primeEndpointWithString("/candidates/validate/${candidate}/${version}/${UnixUtils.asSdkmanPlatform()}", "invalid") } And(~/^the candidate "(.*)" version "(.*)" is available for download on "(.*)" with architecture "(.*)"$/) { String candidate, String version, String platform, String architecture -> - String lcPlatform = UnixUtils.asSdkmanPlatform(platform, architecture).toLowerCase() + String lcPlatform = UnixUtils.asSdkmanPlatform(platform, architecture) primeEndpointWithString("/candidates/validate/${candidate}/${version}/${lcPlatform}", "valid") primeDownloadFor(SERVICE_UP_URL, candidate, version, lcPlatform) } And(~/^a "([^"]*)" install hook is served for "([^"]*)" "([^"]*)" on "([^"]*)" with architecture "([^"]*)" that returns successfully$/) { String phase, String candidate, String version, String platform, String architecture -> - String lcPlatform = UnixUtils.asSdkmanPlatform(platform, architecture).toLowerCase() + String lcPlatform = UnixUtils.asSdkmanPlatform(platform, architecture) primeEndpointWithString("/hooks/${phase}/${candidate}/${version}/${lcPlatform}", phase == "pre" ? preInstallationHookSuccess() : postInstallationHookSuccess()) } And(~/^a "([^"]*)" install hook is served for "([^"]*)" "([^"]*)" on "([^"]*)" with architecture "([^"]*)" that returns a failure$/) { String phase, String candidate, String version, String platform, String architecture -> - String lcPlatform = UnixUtils.asSdkmanPlatform(platform, architecture).toLowerCase() + String lcPlatform = UnixUtils.asSdkmanPlatform(platform, architecture) primeEndpointWithString("/hooks/${phase}/${candidate}/${version}/${lcPlatform}", phase == "pre" ? preInstallationHookFailure() : postInstallationHookFailure()) } And(~/^the candidate "(.*?)" version "(.*?)" is not available for download on "(.*?)"$/) { String candidate, String version, String platform -> - String lcPlatform = UnixUtils.asSdkmanPlatform(platform).toLowerCase() + String lcPlatform = UnixUtils.asSdkmanPlatform(platform) primeEndpointWithString("/candidates/validate/${candidate}/${version}/${lcPlatform}", "invalid") } And(~'^a "([^"]*)" list view is available for consumption$') { String candidate -> - primeEndpointWithString("/candidates/${candidate}/${UnixUtils.platform}/versions/list?current=&installed=", "Available ${candidate.capitalize()} Versions") + primeEndpointWithString("/candidates/${candidate}/${UnixUtils.asSdkmanPlatform()}/versions/list?current=&installed=", "Available ${candidate.capitalize()} Versions") } And(~'^the candidate "([^"]*)" version "([^"]*)" is a valid candidate version$') { String candidate, String version -> - primeEndpointWithString("/candidates/validate/${candidate}/${version}/${PLATFORM}", "valid") + primeEndpointWithString("/candidates/validate/${candidate}/${version}/${UnixUtils.asSdkmanPlatform()}", "valid") } And(~'^the candidate "([^"]*)" version "([^"]*)" is not a valid candidate version$') { String candidate, String version -> - primeEndpointWithString("/candidates/validate/${candidate}/${version}/${PLATFORM}", "invalid") + primeEndpointWithString("/candidates/validate/${candidate}/${version}/${UnixUtils.asSdkmanPlatform()}", "invalid") } And(~/^the candidate "(.*?)" has a version list available$/) { String candidate -> def current = readCurrentFromCandidateFolder(candidatesDir, candidate) def versions = readVersionsCsvFromCandidateFolder(candidatesDir, candidate) - def url = "/candidates/${candidate}/${UnixUtils.platform}/versions/list?current=${current}&installed=${versions}" + def url = "/candidates/${candidate}/${UnixUtils.asSdkmanPlatform()}/versions/list?current=${current}&installed=${versions}" println("Priming url: $url") - primeEndpointWithString(url, "Candidate: $candidate; Versions: $versions; Current: $current; Platform: ${UnixUtils.platform}") + primeEndpointWithString(url, "Candidate: $candidate; Versions: $versions; Current: $current; Platform: ${UnixUtils.asSdkmanPlatform()}") } And(~/^The candidate list is available$/) { -> diff --git a/src/test/groovy/sdkman/stubs/UnameStub.groovy b/src/test/groovy/sdkman/stubs/UnameStub.groovy index b35efd68..a13a8a46 100644 --- a/src/test/groovy/sdkman/stubs/UnameStub.groovy +++ b/src/test/groovy/sdkman/stubs/UnameStub.groovy @@ -3,7 +3,6 @@ package sdkman.stubs class UnameStub { private File file - private platform = "Linux" private kernel = "Linux" private machine = "X86_64" @@ -28,11 +27,6 @@ class UnameStub { this } - UnameStub forPlatform(String uname) { - this.platform = uname - this - } - void build() { file << """ |if [[ "\$1" == '-m' ]]; then @@ -40,7 +34,7 @@ class UnameStub { |elif [[ "\$1" == '-s' ]]; then | echo "$kernel" |else - | echo "$platform" + | echo "$machine" |fi """.stripMargin('|') } diff --git a/src/test/groovy/sdkman/support/UnixUtils.groovy b/src/test/groovy/sdkman/support/UnixUtils.groovy index 610e6472..2b0d07e3 100644 --- a/src/test/groovy/sdkman/support/UnixUtils.groovy +++ b/src/test/groovy/sdkman/support/UnixUtils.groovy @@ -8,21 +8,12 @@ class UnixUtils { ], "Mac OS X": [ "x86_64": "DarwinX64", - ], - "FreeBSD": [ - "amd64": "FreeBSD_X64" ] ] - - static getPlatform() { - def sdkmanPlatform = asSdkmanPlatform(System.getProperty("os.name"), System.getProperty("os.arch")) - println("Setting platform for test: $sdkmanPlatform") - sdkmanPlatform - } static asSdkmanPlatform( platform = System.getProperty("os.name"), architecture = System.getProperty("os.arch")) { - platforms[platform][architecture] ?: platform + (platforms[platform][architecture] ?: platform).toLowerCase() } } diff --git a/src/test/resources/features/java_installation.feature b/src/test/resources/features/java_installation.feature index d6141672..16e406e0 100644 --- a/src/test/resources/features/java_installation.feature +++ b/src/test/resources/features/java_installation.feature @@ -41,27 +41,27 @@ Feature: Java Multi Platform Binary Distribution And I see "Cannot install java 8.0.101 at this time..." Scenario: Platform is not supported for specific version and user is notified - And an "amd64" machine with "FreeBSD" installed + And an "amd64" machine with "Linux" installed And the system is bootstrapped - And the candidate "java" version "8.0.111" is not available for download on "FreeBSD" + And the candidate "java" version "8.0.111" is not available for download on "Linux" When I enter "sdk install java 8.0.111" Then I see "Stop! java 8.0.111 is not available. Possible causes:" And I see " * 8.0.111 is an invalid version" - And I see " * java binaries are incompatible with FreeBSD" + And I see " * java binaries are incompatible with your platform" And I see " * java has not been released yet" And I see "Tip: see all available versions for your platform:" And I see "$ sdk list java" And the candidate "java" version "8.0.111" is not installed Scenario: Platform is not supported for default version and user is notified - And an "amd64" machine with "FreeBSD" installed + And an "amd64" machine with "Linux" installed And the system is bootstrapped And the default "java" version is "8.0.111" - And the candidate "java" version "8.0.111" is not available for download on "FreeBSD" + And the candidate "java" version "8.0.111" is not available for download on "Linux" When I enter "sdk install java" Then I see "Stop! java 8.0.111 is not available. Possible causes:" And I see " * 8.0.111 is an invalid version" - And I see " * java binaries are incompatible with FreeBSD" + And I see " * java binaries are incompatible with your platform" And I see " * java has not been released yet" And I see "Tip: see all available versions for your platform:" And I see "$ sdk list java"