t / t9901-git-web--browse.shon commit Merge branch 'sg/commit-graph-validate' (6ba06b5)
   1#!/bin/sh
   2#
   3
   4test_description='git web--browse basic tests
   5
   6This test checks that git web--browse can handle various valid URLs.'
   7
   8. ./test-lib.sh
   9
  10test_web_browse () {
  11        # browser=$1 url=$2
  12        git web--browse --browser="$1" "$2" >actual &&
  13        tr -d '\015' <actual >text &&
  14        test_cmp expect text
  15}
  16
  17test_expect_success \
  18        'URL with an ampersand in it' '
  19        echo http://example.com/foo\&bar >expect &&
  20        git config browser.custom.cmd echo &&
  21        test_web_browse custom http://example.com/foo\&bar
  22'
  23
  24test_expect_success \
  25        'URL with a semi-colon in it' '
  26        echo http://example.com/foo\;bar >expect &&
  27        git config browser.custom.cmd echo &&
  28        test_web_browse custom http://example.com/foo\;bar
  29'
  30
  31test_expect_success \
  32        'URL with a hash in it' '
  33        echo http://example.com/foo#bar >expect &&
  34        git config browser.custom.cmd echo &&
  35        test_web_browse custom http://example.com/foo#bar
  36'
  37
  38test_expect_success \
  39        'browser paths are properly quoted' '
  40        echo fake: http://example.com/foo >expect &&
  41        cat >"fake browser" <<-\EOF &&
  42        #!/bin/sh
  43        echo fake: "$@"
  44        EOF
  45        chmod +x "fake browser" &&
  46        git config browser.w3m.path "$(pwd)/fake browser" &&
  47        test_web_browse w3m http://example.com/foo
  48'
  49
  50test_expect_success \
  51        'browser command allows arbitrary shell code' '
  52        echo "arg: http://example.com/foo" >expect &&
  53        git config browser.custom.cmd "
  54                f() {
  55                        for i in \"\$@\"; do
  56                                echo arg: \$i
  57                        done
  58                }
  59                f" &&
  60        test_web_browse custom http://example.com/foo
  61'
  62
  63test_done