Unverified Commit 3f46003f authored by Mislav Marohnić's avatar Mislav Marohnić Committed by GitHub
Browse files

Merge pull request #2303 from rbenv/print-command-tmpdir

Fix commands printed when TMPDIR is empty
parents bb18f12e c4f811a2
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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" ;;

test/output.bats

0 → 100644
+27 −0
Original line number Diff line number Diff line
#!/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"
}