Skip to content

Commit 23fe64e

Browse files
labkey-willmclaude
andcommitted
fix bash 3 incompatibilities to allow tests to run on macOS
Three bash 4+ constructs broke test runs on macOS (bash 3.2): - `${var^^}` (uppercase expansion) in _skip_step and test_internals.sh replaced with `tr '[:lower:]' '[:upper:]'` - `free -m` (Linux-only memory command) in step_default_envs now falls back to 1024M when free is not available - `${var::-7}` (negative-offset substring) replaced with `${var%.tar.gz}` and `${var%-embedded.tar.gz}` throughout CI (Ubuntu, bash 5) is unaffected. These changes make the test suite runnable locally on macOS without requiring homebrew bash. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
1 parent e3d0881 commit 23fe64e

3 files changed

Lines changed: 17 additions & 8 deletions

File tree

install-labkey.bash

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ PRODUCT='LabKey Server'
3333
#
3434
function _skip_step() {
3535
local step_name="$1"
36+
local step_upper
37+
step_upper=$(echo "$step_name" | tr '[:lower:]' '[:upper:]')
3638

37-
if ! eval "[ -z \"\${LABKEY_INSTALL_SKIP_${step_name^^}_STEP:-}\" ]"; then
39+
if ! eval "[ -z \"\${LABKEY_INSTALL_SKIP_${step_upper}_STEP:-}\" ]"; then
3840
echo "skipping '${step_name}' step"
3941
else
4042
return 1
@@ -142,7 +144,11 @@ function step_default_envs() {
142144

143145
# set default heap min/max to 50% (w/ <= 8G) or 75% of total mem
144146
DEFAULT_JAVA_HEAP_SIZE="$(
145-
total="$(free -m | grep ^Mem | tr -s ' ' | cut -d ' ' -f 2)"
147+
if command -v free &>/dev/null; then
148+
total="$(free -m | grep ^Mem | tr -s ' ' | cut -d ' ' -f 2)"
149+
else
150+
total=1024
151+
fi
146152
147153
if [ "$total" -ge 8192 ]; then
148154
heap_modifier='75'
@@ -173,7 +179,7 @@ function step_default_envs() {
173179
LABKEY_DIST_REGION="${LABKEY_DIST_REGION:-us-west-2}"
174180
LABKEY_DIST_URL="${LABKEY_DIST_URL:-https://${LABKEY_DIST_BUCKET}.s3.${LABKEY_DIST_REGION}.amazonaws.com/downloads/release/${LABKEY_DISTRIBUTION}/${LABKEY_VERSION}/LabKey${LABKEY_VERSION}-${LABKEY_BUILD}-${LABKEY_DISTRIBUTION}.tar.gz}"
175181
LABKEY_DIST_FILENAME="${LABKEY_DIST_FILENAME:-LabKey${LABKEY_VERSION}-${LABKEY_BUILD}-${LABKEY_DISTRIBUTION}.tar.gz}"
176-
LABKEY_DIST_DIR="${LABKEY_DIST_DIR:-${LABKEY_DIST_FILENAME::-7}}"
182+
LABKEY_DIST_DIR="${LABKEY_DIST_DIR:-${LABKEY_DIST_FILENAME%.tar.gz}}"
177183
LABKEY_HTTPS_PORT="${LABKEY_HTTPS_PORT:-8443}"
178184
LABKEY_HTTP_PORT="${LABKEY_HTTP_PORT:-8080}"
179185
LABKEY_LOG_DIR="${LABKEY_LOG_DIR:-${LABKEY_INSTALL_HOME}/logs}"
@@ -205,7 +211,7 @@ function step_default_envs() {
205211
TOMCAT_USE_PRIVILEGED_PORTS="${TOMCAT_USE_PRIVILEGED_PORTS:-FALSE}"
206212
TOMCAT_CONTEXT_PATH="${TOMCAT_CONTEXT_PATH:-ROOT}"
207213
# Used for non-embedded distributions
208-
LABKEY_INSTALLER_CMD="$LABKEY_SRC_HOME/${LABKEY_DIST_FILENAME::-7}/manual-upgrade.sh -l $LABKEY_INSTALL_HOME/ -d $LABKEY_SRC_HOME/${LABKEY_DIST_FILENAME::-7} -c $TOMCAT_INSTALL_HOME -u $TOMCAT_USERNAME --noPrompt --tomcat_lk --skip_tomcat"
214+
LABKEY_INSTALLER_CMD="$LABKEY_SRC_HOME/${LABKEY_DIST_FILENAME%.tar.gz}/manual-upgrade.sh -l $LABKEY_INSTALL_HOME/ -d $LABKEY_SRC_HOME/${LABKEY_DIST_FILENAME%.tar.gz} -c $TOMCAT_INSTALL_HOME -u $TOMCAT_USERNAME --noPrompt --tomcat_lk --skip_tomcat"
209215

210216
# Generate password if none is provided
211217
TOMCAT_KEYSTORE_PASSWORD="${TOMCAT_KEYSTORE_PASSWORD:-$(openssl rand -base64 64 | tr -dc _A-Z-a-z-0-9 | fold -w 32 | head -n1)}"
@@ -1021,9 +1027,9 @@ function step_configure_labkey() {
10211027
chown -R "$TOMCAT_USERNAME":"$TOMCAT_USERNAME" "/work/Tomcat/"
10221028
# handle DIST_DIR with or without -embedded in DIR name
10231029
if echo "$LABKEY_DIST_FILENAME" | grep -iq '-embedded.tar.gz'; then
1024-
LABKEY_DIST_DIR="${LABKEY_DIST_FILENAME::-16}"
1030+
LABKEY_DIST_DIR="${LABKEY_DIST_FILENAME%-embedded.tar.gz}"
10251031
else
1026-
LABKEY_DIST_DIR="${LABKEY_DIST_FILENAME::-7}"
1032+
LABKEY_DIST_DIR="${LABKEY_DIST_FILENAME%.tar.gz}"
10271033
fi
10281034

10291035
# skip copy labkeyServer.jar if its already in ${LABKEY_INSTALL_HOME}

install-wcp.bash

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ SKIP_MAIN=1 source "${LABKEY_INSTALL_SCRIPT_PATH}"
3939
#
4040
function _skip_step() {
4141
local step_name="$1"
42+
local step_upper
43+
step_upper=$(echo "$step_name" | tr '[:lower:]' '[:upper:]')
4244

43-
if ! eval "[ -z \"\${WCP_INSTALL_SKIP_${step_name^^}_STEP:-}\" ]"; then
45+
if ! eval "[ -z \"\${WCP_INSTALL_SKIP_${step_upper}_STEP:-}\" ]"; then
4446
echo "skipping '${step_name}' step"
4547
else
4648
return 1

test/test_internals.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ function test_step_skipping() {
2121
'Intro not skipped despite provided ENV.' \
2222
"skipping 'intro' step" \
2323
"$(
24-
export "${TEST_PRODUCT^^}_INSTALL_SKIP_INTRO_STEP=1"
24+
prod_upper=$(echo "${TEST_PRODUCT}" | tr '[:lower:]' '[:upper:]')
25+
export "${prod_upper}_INSTALL_SKIP_INTRO_STEP=1"
2526
step_intro
2627
)"
2728
}

0 commit comments

Comments
 (0)