Firefox on Windows by default is placed in "C:\Program Files\Mozilla Firefox" folder, i.e. its path contains spaces. Before running this browser "git-web--browse" tests version of Firefox to decide whether to use "-new-tab" option or not. Quote browser path to avoid error during this test. Signed-off-by: Alexey Shumkin <Alex.Crezoff@xxxxxxxxx> Reviewed-by: Jeff King <peff@xxxxxxxx> --- git-web--browse.sh | 2 +- t/t9901-git-web--browse.sh | 53 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/git-web--browse.sh b/git-web--browse.sh index 1e82726..f96e5bd 100755 --- a/git-web--browse.sh +++ b/git-web--browse.sh @@ -149,7 +149,7 @@ fi case "$browser" in firefox|iceweasel|seamonkey|iceape) # Check version because firefox < 2.0 does not support "-new-tab". - vers=$(expr "$($browser_path -version)" : '.* \([0-9][0-9]*\)\..*') + vers=$(expr "$("$browser_path" -version)" : '.* \([0-9][0-9]*\)\..*') NEWTAB='-new-tab' test "$vers" -lt 2 && NEWTAB='' "$browser_path" $NEWTAB "$@" & diff --git a/t/t9901-git-web--browse.sh b/t/t9901-git-web--browse.sh index b0dabf7..c1ee813 100755 --- a/t/t9901-git-web--browse.sh +++ b/t/t9901-git-web--browse.sh @@ -8,8 +8,23 @@ This test checks that git web--browse can handle various valid URLs.' . ./test-lib.sh test_web_browse () { - # browser=$1 url=$2 + # browser=$1 url=$2 sleep_timeout=$3 + sleep_timeout="$3" + rm -f fake_browser_ran && git web--browse --browser="$1" "$2" >actual && + # if $3 is set + # as far as Firefox is run in background (it is run with &) + # we trying to avoid race condition + # by waiting for "$sleep_timeout" seconds of timeout for 'fake_browser_ran' file appearance + if test -n "$sleep_timeout" + then + for timeout in $(test_seq $sleep_timeout) + do + test -f fake_browser_ran && break + sleep 1 + done + test $timeout -ne $sleep_timeout + fi && tr -d '\015' <actual >text && test_cmp expect text } @@ -46,6 +61,42 @@ test_expect_success \ ' test_expect_success \ + 'Paths are properly quoted for Firefox. Version older then v2.0' ' + echo "fake: http://example.com/foo" >expect && + write_script "fake browser" <<-\EOF && + + if test "$1" = "-version"; then + echo "Fake Firefox browser version 1.2.3" + else + # Firefox (in contrast to w3m) is run in background (with &) + # so redirect output to "actual" + echo "fake: ""$@" >actual + fi + : >fake_browser_ran + EOF + git config browser.firefox.path "$(pwd)/fake browser" && + test_web_browse firefox http://example.com/foo 5 +' + +test_expect_success \ + 'Paths are properly quoted for Firefox. Version v2.0 and above' ' + echo "fake: -new-tab http://example.com/foo" >expect && + write_script "fake browser" <<-\EOF && + + if test "$1" = "-version"; then + echo "Fake Firefox browser version 2.0.0" + else + # Firefox (in contrast to w3m) is run in background (with &) + # so redirect output to "actual" + echo "fake: ""$@" >actual + fi + : >fake_browser_ran + EOF + git config browser.firefox.path "$(pwd)/fake browser" && + test_web_browse firefox http://example.com/foo 5 +' + +test_expect_success \ 'browser command allows arbitrary shell code' ' echo "arg: http://example.com/foo" >expect && git config browser.custom.cmd " -- 1.8.1.1.10.g71fa0b7 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html