From a7e1975eeac32bec5a33d6c00277ce2b81c8bc9b Mon Sep 17 00:00:00 2001 From: Frank Cizmich Date: Tue, 13 Jan 2015 17:36:26 -0200 Subject: [PATCH 1/3] parse_options checks if HOME is set --- bin/pt-ioprofile | 5 ++++- bin/pt-mext | 5 ++++- bin/pt-mysql-summary | 5 ++++- bin/pt-pmp | 5 ++++- bin/pt-sift | 5 ++++- bin/pt-stalk | 5 ++++- bin/pt-summary | 5 ++++- lib/bash/parse_options.sh | 6 +++++- 8 files changed, 33 insertions(+), 8 deletions(-) diff --git a/bin/pt-ioprofile b/bin/pt-ioprofile index 41e3f3b7..5f73678e 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 [ ! -z "${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..9c170d79 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 [ ! -z "${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..59e1903f 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 [ ! -z "${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..a8814cc7 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 [ ! -z "${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..0c307606 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 [ ! -z "${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..db058c6d 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 [ ! -z "${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..9acef883 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 [ ! -z "${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..0bafca3f 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 [ ! -z "${HOME-}" ]; then + _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" + fi fi # Finally, parse the command line. From 18f85786ba8dbf3fa6a1ed99252846e9fe03a2b5 Mon Sep 17 00:00:00 2001 From: Frank Cizmich Date: Wed, 14 Jan 2015 14:36:44 -0200 Subject: [PATCH 2/3] added test. removed space --- bin/pt-ioprofile | 2 +- bin/pt-mext | 2 +- bin/pt-mysql-summary | 2 +- bin/pt-pmp | 2 +- bin/pt-sift | 2 +- bin/pt-stalk | 2 +- bin/pt-summary | 2 +- lib/bash/parse_options.sh | 2 +- t/lib/bash/parse_options.sh | 15 ++++++++++++++- 9 files changed, 22 insertions(+), 9 deletions(-) diff --git a/bin/pt-ioprofile b/bin/pt-ioprofile index 5f73678e..83951b18 100755 --- a/bin/pt-ioprofile +++ b/bin/pt-ioprofile @@ -201,7 +201,7 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" if [ ! -z "${HOME-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi diff --git a/bin/pt-mext b/bin/pt-mext index 9c170d79..60310a99 100755 --- a/bin/pt-mext +++ b/bin/pt-mext @@ -242,7 +242,7 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" if [ ! -z "${HOME-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi diff --git a/bin/pt-mysql-summary b/bin/pt-mysql-summary index 59e1903f..fab7fd91 100755 --- a/bin/pt-mysql-summary +++ b/bin/pt-mysql-summary @@ -203,7 +203,7 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" if [ ! -z "${HOME-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi diff --git a/bin/pt-pmp b/bin/pt-pmp index a8814cc7..2fed95fa 100755 --- a/bin/pt-pmp +++ b/bin/pt-pmp @@ -244,7 +244,7 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" if [ ! -z "${HOME-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi diff --git a/bin/pt-sift b/bin/pt-sift index 0c307606..4660fe0d 100755 --- a/bin/pt-sift +++ b/bin/pt-sift @@ -242,7 +242,7 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" if [ ! -z "${HOME-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi diff --git a/bin/pt-stalk b/bin/pt-stalk index db058c6d..ece14424 100755 --- a/bin/pt-stalk +++ b/bin/pt-stalk @@ -255,7 +255,7 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" if [ ! -z "${HOME-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi diff --git a/bin/pt-summary b/bin/pt-summary index 9acef883..1e045113 100755 --- a/bin/pt-summary +++ b/bin/pt-summary @@ -210,7 +210,7 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" + _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" if [ ! -z "${HOME-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi diff --git a/lib/bash/parse_options.sh b/lib/bash/parse_options.sh index 0bafca3f..d5a3fed0 100644 --- a/lib/bash/parse_options.sh +++ b/lib/bash/parse_options.sh @@ -213,7 +213,7 @@ parse_options() { _parse_config_files "$user_config_file" done else - _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$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 [ ! -z "${HOME-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" 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 # ############################################################################ From f8c8411297f46571e577fb236dadb195ad87a930 Mon Sep 17 00:00:00 2001 From: Frank Cizmich Date: Mon, 19 Jan 2015 14:58:47 -0200 Subject: [PATCH 3/3] simplified conditional for testing if HOME is set --- bin/pt-ioprofile | 2 +- bin/pt-mext | 2 +- bin/pt-mysql-summary | 2 +- bin/pt-pmp | 2 +- bin/pt-sift | 2 +- bin/pt-stalk | 2 +- bin/pt-summary | 2 +- lib/bash/parse_options.sh | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bin/pt-ioprofile b/bin/pt-ioprofile index 83951b18..123cd0a0 100755 --- a/bin/pt-ioprofile +++ b/bin/pt-ioprofile @@ -202,7 +202,7 @@ parse_options() { done else _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" - if [ ! -z "${HOME-}" ]; then + if [ "${HOME:-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi fi diff --git a/bin/pt-mext b/bin/pt-mext index 60310a99..0fb7e1fb 100755 --- a/bin/pt-mext +++ b/bin/pt-mext @@ -243,7 +243,7 @@ parse_options() { done else _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" - if [ ! -z "${HOME-}" ]; then + if [ "${HOME:-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi fi diff --git a/bin/pt-mysql-summary b/bin/pt-mysql-summary index fab7fd91..287d39ad 100755 --- a/bin/pt-mysql-summary +++ b/bin/pt-mysql-summary @@ -204,7 +204,7 @@ parse_options() { done else _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" - if [ ! -z "${HOME-}" ]; then + if [ "${HOME:-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi fi diff --git a/bin/pt-pmp b/bin/pt-pmp index 2fed95fa..8f029967 100755 --- a/bin/pt-pmp +++ b/bin/pt-pmp @@ -245,7 +245,7 @@ parse_options() { done else _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" - if [ ! -z "${HOME-}" ]; then + if [ "${HOME:-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi fi diff --git a/bin/pt-sift b/bin/pt-sift index 4660fe0d..53f5e4d8 100755 --- a/bin/pt-sift +++ b/bin/pt-sift @@ -243,7 +243,7 @@ parse_options() { done else _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" - if [ ! -z "${HOME-}" ]; then + if [ "${HOME:-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi fi diff --git a/bin/pt-stalk b/bin/pt-stalk index ece14424..568f4587 100755 --- a/bin/pt-stalk +++ b/bin/pt-stalk @@ -256,7 +256,7 @@ parse_options() { done else _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" - if [ ! -z "${HOME-}" ]; then + if [ "${HOME:-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi fi diff --git a/bin/pt-summary b/bin/pt-summary index 1e045113..af68ccf7 100755 --- a/bin/pt-summary +++ b/bin/pt-summary @@ -211,7 +211,7 @@ parse_options() { done else _parse_config_files "/etc/percona-toolkit/percona-toolkit.conf" "/etc/percona-toolkit/$TOOL.conf" - if [ ! -z "${HOME-}" ]; then + if [ "${HOME:-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi fi diff --git a/lib/bash/parse_options.sh b/lib/bash/parse_options.sh index d5a3fed0..eee9e154 100644 --- a/lib/bash/parse_options.sh +++ b/lib/bash/parse_options.sh @@ -215,7 +215,7 @@ parse_options() { else _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 [ ! -z "${HOME-}" ]; then + if [ "${HOME:-}" ]; then _parse_config_files "$HOME/.percona-toolkit.conf" "$HOME/.$TOOL.conf" fi fi