Merge branch 'jk/common-make-variables-export-safety'
[git] / t / t9901-git-web--browse.sh
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