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