Skip to content

Commit

Permalink
Merge pull request #2303 from rbenv/print-command-tmpdir
Browse files Browse the repository at this point in the history
Fix commands printed when TMPDIR is empty
  • Loading branch information
mislav committed Nov 8, 2023
2 parents bb18f12 + c4f811a commit 3f46003
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
5 changes: 2 additions & 3 deletions bin/ruby-build
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,9 @@ colorize() {

print_command() {
local arg
local tmpdir="${TMPDIR%/}"
for arg; do
arg="${arg//$tmpdir\//\$TMPDIR/}"
arg="${arg//$HOME\//\$HOME/}"
[ "${#TMPDIR}" -le 1 ] || arg="${arg//$TMP\//\$TMPDIR/}"
[ "${#HOME}" -le 1 ] || arg="${arg//$HOME\//\$HOME/}"
case "$arg" in
*\'* | *\$* )
printf ' "%s"' "$arg" ;;
Expand Down
27 changes: 27 additions & 0 deletions test/output.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bats

load test_helper

@test "print_command" {
mkdir -p "$TMP"

cat <<EOF > "$TMP"/definition
print_command ./configure --prefix="\$PREFIX_PATH" --arg='with spaces'
EOF
# substitute $TMPDIR in command invocations
TMPDIR="/tmp/" run ruby-build "$TMP"/definition /tmp/path/to/prefix
assert_output " ./configure \"--prefix=\$TMPDIR/path/to/prefix\" '--arg=with spaces'"
# doesn't substitute TMPDIR if it didn't come from user's environment
TMPDIR="" run ruby-build "$TMP"/definition /tmp/path/to/prefix
assert_output " ./configure --prefix=/tmp/path/to/prefix '--arg=with spaces'"

cat <<EOF > "$TMP"/definition
print_command install --bindir="$TMP"/home/.local/bin
EOF
# substitute $HOME in command invocations
HOME="$TMP"/home TMPDIR="" run ruby-build "$TMP"/definition /tmp/path/to/prefix
assert_output " install \"--bindir=\$HOME/.local/bin\""
# do not substitute $HOME if it's root path
HOME="/" TMPDIR="" run ruby-build "$TMP"/definition /tmp/path/to/prefix
assert_output " install --bindir=${TMP}/home/.local/bin"
}

0 comments on commit 3f46003

Please sign in to comment.