| 1 | #!/bin/sh |
| 2 | # |
| 3 | |
| 4 | test_description='git web--browse basic tests |
| 5 | |
| 6 | This test checks that git web--browse can handle various valid URLs.' |
| 7 | |
| 8 | . ./test-lib.sh |
| 9 | |
| 10 | test_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 | |
| 17 | test_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 | |
| 24 | test_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 | |
| 31 | test_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 | |
| 38 | test_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 | |
| 50 | test_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 | |
| 63 | test_done |