diff --git a/bin/pt-ioprofile b/bin/pt-ioprofile index 41e3f3b7..123cd0a0 100755 --- a/bin/pt-ioprofile +++ b/bin/pt-ioprofile @@ -201,7 +201,10 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + if [ "${HOME:-}" ]; then + _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + fi fi _parse_command_line "${@:-""}" diff --git a/bin/pt-mext b/bin/pt-mext index 088ca107..0fb7e1fb 100755 --- a/bin/pt-mext +++ b/bin/pt-mext @@ -242,7 +242,10 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + if [ "${HOME:-}" ]; then + _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + fi fi _parse_command_line "${@:-""}" diff --git a/bin/pt-mysql-summary b/bin/pt-mysql-summary index df639463..287d39ad 100755 --- a/bin/pt-mysql-summary +++ b/bin/pt-mysql-summary @@ -203,7 +203,10 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + if [ "${HOME:-}" ]; then + _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + fi fi _parse_command_line "${@:-""}" diff --git a/bin/pt-pmp b/bin/pt-pmp index 63504fbe..8f029967 100755 --- a/bin/pt-pmp +++ b/bin/pt-pmp @@ -244,7 +244,10 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + if [ "${HOME:-}" ]; then + _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + fi fi _parse_command_line "${@:-""}" diff --git a/bin/pt-sift b/bin/pt-sift index e21a4a2e..53f5e4d8 100755 --- a/bin/pt-sift +++ b/bin/pt-sift @@ -242,7 +242,10 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + if [ "${HOME:-}" ]; then + _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + fi fi _parse_command_line "${@:-""}" diff --git a/bin/pt-stalk b/bin/pt-stalk index 653614fc..568f4587 100755 --- a/bin/pt-stalk +++ b/bin/pt-stalk @@ -255,7 +255,10 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + if [ "${HOME:-}" ]; then + _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + fi fi _parse_command_line "${@:-""}" diff --git a/bin/pt-summary b/bin/pt-summary index 0582e253..af68ccf7 100755 --- a/bin/pt-summary +++ b/bin/pt-summary @@ -210,7 +210,10 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + if [ "${HOME:-}" ]; then + _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + fi fi _parse_command_line "${@:-""}" diff --git a/lib/bash/parse_options.sh b/lib/bash/parse_options.sh index b07074ec..eee9e154 100644 --- a/lib/bash/parse_options.sh +++ b/lib/bash/parse_options.sh @@ -213,7 +213,11 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + # conditional in case $HOME isn't set; e.g. tool launched from init + if [ "${HOME:-}" ]; then + _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + fi fi # Finally, parse the command line. diff --git a/t/lib/bash/parse_options.sh b/t/lib/bash/parse_options.sh index ca6326c8..4beba5a0 100644 --- a/t/lib/bash/parse_options.sh +++ b/t/lib/bash/parse_options.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -plan 83 +plan 84 TMPFILE="$TEST_PT_TMPDIR/parse-opts-output" TOOL="pt-stalk" @@ -258,6 +258,19 @@ is "$OPT_NOTIFY_BY_EMAIL" "" "Bug 1038995: --notify-by-email is empty by default parse_options "$T_LIB_DIR/samples/bash/po005.sh" --notify-by-email foo@bar.com is "$OPT_NOTIFY_BY_EMAIL" "foo@bar.com" "Bug 1038995: ...but gets set without errors if specified" +# ############################################################################ +# Bug 1266869: fails when $HOME unset +# https://bugs.launchpad.net/percona-toolkit/+bug/1266869 +# ############################################################################ + +TMP_HOME="$HOME" +unset HOME +OUTPUT=`parse_options $T_LIB_DIR/samples/bash/po001.sh 2>&1` +echo "$OUTPUT" > "$TMPFILE" +cmd_ok "grep -q -v unbound $TMPFILE" "No error when \$HOME is not set" +HOME="$TMP_HOME" # just in case further tests below need it + + # ############################################################################ # Done # ############################################################################