Skip to content

Commit 6346b67

Browse files
Oliver Weilermarc0der
authored andcommitted
Add test for .sdkmanrc generation
1 parent dab9741 commit 6346b67

File tree

3 files changed

+57
-24
lines changed

3 files changed

+57
-24
lines changed

src/main/bash/sdkman-env.sh

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,17 @@
1616
# limitations under the License.
1717
#
1818

19-
readonly sdkmanrc=".sdkmanrc"
20-
readonly java_fallback_version="11.0.7.hs-adpt"
21-
2219
function __sdk_env() {
20+
SDKMANRC=".sdkmanrc"
21+
2322
if [[ "$1" == "init" ]]; then
2423
__sdkman_generate_sdkmanrc
2524

2625
return 0
2726
fi
2827

29-
if [[ ! -f "$sdkmanrc" ]]; then
30-
__sdkman_echo_red "Could not find $sdkmanrc in the current directory."
28+
if [[ ! -f "$SDKMANRC" ]]; then
29+
__sdkman_echo_red "Could not find $SDKMANRC in the current directory."
3130
echo ""
3231
__sdkman_echo_yellow "Run 'sdk env init' to create it."
3332

@@ -36,7 +35,7 @@ function __sdk_env() {
3635

3736
while IFS= read -r line || [[ -n "$line" ]]; do
3837
local normalised_line
39-
normalised_line=$(__sdkman_normalise "$line")
38+
normalised_line="$(__sdkman_normalise "$line")"
4039

4140
__sdkman_is_blank_line "$normalised_line" && continue
4241

@@ -49,21 +48,24 @@ function __sdk_env() {
4948
fi
5049

5150
__sdk_use "${normalised_line%=*}" "${normalised_line#*=}"
52-
done < "$sdkmanrc"
51+
done < "$SDKMANRC"
5352
}
5453

5554
function __sdkman_generate_sdkmanrc() {
56-
if [[ -f "$sdkmanrc" ]]; then
57-
__sdkman_echo_red "$sdkmanrc already exists!"
55+
if [[ -f "$SDKMANRC" ]]; then
56+
__sdkman_echo_red "$SDKMANRC already exists!"
5857

5958
return 1
6059
fi
6160

6261
__sdkman_determine_current_version "java"
6362

64-
echo "java=${CURRENT:-${java_fallback_version}}" > "$sdkmanrc"
63+
local version
64+
[[ -n "$CURRENT" ]] && version="$CURRENT" || version="$(__sdkman_secure_curl "${SDKMAN_CANDIDATES_API}/candidates/default/java")"
65+
66+
echo "java=$version" > "$SDKMANRC"
6567

66-
__sdkman_echo_green "$sdkmanrc created."
68+
__sdkman_echo_green "$SDKMANRC created."
6769
}
6870

6971
function __sdkman_is_blank_line() {

src/main/bash/sdkman-upgrade.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ function __sdkman_determine_upgradable_version() {
103103
fi
104104

105105
# Resolve remote default version
106-
remote_default_version="$(__sdkman_secure_curl "${SDKMAN_CANDIDATES_API}/candidates/default/${candidate}")"
106+
remote_default_version=x
107107
if [ -z "$remote_default_version" ]; then
108108
return 2
109109
fi

src/test/groovy/sdkman/specs/EnvCommandSpec.groovy

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,28 @@ package sdkman.specs
33
import sdkman.support.SdkmanEnvSpecification
44

55
class EnvCommandSpec extends SdkmanEnvSpecification {
6+
static final String CANDIDATES_API = "http://localhost:8080/2"
7+
8+
static final String BROADCAST_API_LATEST_ID_ENDPOINT = "$CANDIDATES_API/broadcast/latest/id"
9+
static final String CANDIDATES_DEFAULT_JAVA = "$CANDIDATES_API/candidates/default/java"
10+
11+
def "should generate an .sdkmanrc when called with 'init'"() {
12+
given:
13+
curlStub.primeWith(BROADCAST_API_LATEST_ID_ENDPOINT, "echo dbfb025be9f97fda2052b5febcca0155")
14+
.primeWith(CANDIDATES_DEFAULT_JAVA, "echo 11.0.6.hs-adpt")
615

7-
def setup() {
816
bash = sdkmanBashEnvBuilder
9-
.withVersionCache("x.y.z")
10-
.withOfflineMode(true)
11-
.build()
17+
.withVersionCache("x.y.z")
18+
.build()
19+
1220
bash.start()
1321
bash.execute("source $bootstrapScript")
14-
}
1522

16-
def "should generate an .sdkmanrc when called with 'init'"() {
1723
when:
1824
bash.execute("sdk env init")
25+
1926
then:
20-
new File(bash.workDir,'.sdkmanrc').text == "java=11.0.7.hs-adpt\n"
27+
new File(bash.workDir, '.sdkmanrc').text == "java=11.0.6.hs-adpt\n"
2128
}
2229

2330
def "should use the candidates contained in .sdkmanrc"() {
@@ -31,8 +38,16 @@ class EnvCommandSpec extends SdkmanEnvSpecification {
3138
}
3239
}
3340

34-
new File(bash.workDir, '.sdkmanrc').text = sdkrc
41+
bash = sdkmanBashEnvBuilder
42+
.withVersionCache("x.y.z")
43+
.withOfflineMode(true)
44+
.build()
3545

46+
new File(bash.workDir, '.sdkmanrc').text = sdkmanrc
47+
48+
bash.start()
49+
bash.execute("source $bootstrapScript")
50+
3651
when:
3752
bash.execute("sdk env")
3853

@@ -43,7 +58,7 @@ class EnvCommandSpec extends SdkmanEnvSpecification {
4358
}
4459

4560
where:
46-
sdkrc << [
61+
sdkmanrc << [
4762
"grails=2.1.0\ngroovy=2.4.1",
4863
"grails=2.1.0\ngroovy=2.4.1\n",
4964
" grails=2.1.0\ngroovy=2.4.1\n",
@@ -52,10 +67,18 @@ class EnvCommandSpec extends SdkmanEnvSpecification {
5267
]
5368
}
5469

55-
def "should issue an error if .sdkmanrc contains malformed candidate versions"() {
70+
def "should issue an error if .sdkmanrc contains a malformed candidate version"() {
5671
given:
72+
bash = sdkmanBashEnvBuilder
73+
.withVersionCache("x.y.z")
74+
.withOfflineMode(true)
75+
.build()
76+
5777
new File(bash.workDir, ".sdkmanrc").text = "groovy 2.4.1"
5878

79+
bash.start()
80+
bash.execute("source $bootstrapScript")
81+
5982
when:
6083
bash.execute("sdk env")
6184

@@ -74,7 +97,15 @@ class EnvCommandSpec extends SdkmanEnvSpecification {
7497
}
7598
}
7699

77-
new File(bash.workDir, ".sdkmanrc").text = sdkrc
100+
bash = sdkmanBashEnvBuilder
101+
.withVersionCache("x.y.z")
102+
.withOfflineMode(true)
103+
.build()
104+
105+
new File(bash.workDir, ".sdkmanrc").text = sdkmanrc
106+
107+
bash.start()
108+
bash.execute("source $bootstrapScript")
78109

79110
when:
80111
bash.execute("sdk env")
@@ -83,7 +114,7 @@ class EnvCommandSpec extends SdkmanEnvSpecification {
83114
bash.output.contains("Using groovy version 2.4.1 in this shell.")
84115

85116
where:
86-
sdkrc << [
117+
sdkmanrc << [
87118
"\ngroovy=2.4.1\n",
88119
"# this is a comment\ngroovy=2.4.1\n",
89120
"groovy=2.4.1 # this is a comment too\n"

0 commit comments

Comments
 (0)