1#!/bin/sh
2
3test_description='help'
4
5. ./test-lib.sh
6
7configure_help () {
8 test_config help.format html &&
9
10 # Unless the path has "://" in it, Git tries to make sure
11 # the documentation directory locally exists. Avoid it as
12 # we are only interested in seeing an attempt to correctly
13 # invoke a help browser in this test.
14 test_config help.htmlpath test://html &&
15
16 # Name a custom browser
17 test_config browser.test.cmd ./test-browser &&
18 test_config help.browser test
19}
20
21test_expect_success "setup" '
22 # Just write out which page gets requested
23 write_script test-browser <<-\EOF
24 echo "$*" >test-browser.log
25 EOF
26'
27
28# make sure to exercise these code paths, the output is a bit tricky
29# to verify
30test_expect_success 'basic help commands' '
31 git help >/dev/null &&
32 git help -a --no-verbose >/dev/null &&
33 git help -g >/dev/null &&
34 git help -a >/dev/null
35'
36
37test_expect_success "works for commands and guides by default" '
38 configure_help &&
39 git help status &&
40 echo "test://html/git-status.html" >expect &&
41 test_cmp expect test-browser.log &&
42 git help revisions &&
43 echo "test://html/gitrevisions.html" >expect &&
44 test_cmp expect test-browser.log
45'
46
47test_expect_success "--exclude-guides does not work for guides" '
48 >test-browser.log &&
49 test_must_fail git help --exclude-guides revisions &&
50 test_must_be_empty test-browser.log
51'
52
53test_expect_success "--help does not work for guides" "
54 cat <<-EOF >expect &&
55 git: 'revisions' is not a git command. See 'git --help'.
56 EOF
57 test_must_fail git revisions --help 2>actual &&
58 test_i18ncmp expect actual
59"
60
61test_expect_success 'git help' '
62 git help >help.output &&
63 test_i18ngrep "^ clone " help.output &&
64 test_i18ngrep "^ add " help.output &&
65 test_i18ngrep "^ log " help.output &&
66 test_i18ngrep "^ commit " help.output &&
67 test_i18ngrep "^ fetch " help.output
68'
69test_expect_success 'git help -g' '
70 git help -g >help.output &&
71 test_i18ngrep "^ attributes " help.output &&
72 test_i18ngrep "^ everyday " help.output &&
73 test_i18ngrep "^ tutorial " help.output
74'
75
76test_expect_success 'generate builtin list' '
77 git --list-cmds=builtins >builtins
78'
79
80while read builtin
81do
82 test_expect_success "$builtin can handle -h" '
83 test_expect_code 129 git $builtin -h >output 2>&1 &&
84 test_i18ngrep usage output
85 '
86done <builtins
87
88test_done