Fix git_config_bool_or_int
[git] / t / t0001-init.sh
1 #!/bin/sh
2
3 test_description='git init'
4
5 . ./test-lib.sh
6
7 check_config () {
8         if test -d "$1" && test -f "$1/config" && test -d "$1/refs"
9         then
10                 : happy
11         else
12                 echo "expected a directory $1, a file $1/config and $1/refs"
13                 return 1
14         fi
15         bare=$(GIT_CONFIG="$1/config" git config --bool core.bare)
16         worktree=$(GIT_CONFIG="$1/config" git config core.worktree) ||
17         worktree=unset
18
19         test "$bare" = "$2" && test "$worktree" = "$3" || {
20                 echo "expected bare=$2 worktree=$3"
21                 echo "     got bare=$bare worktree=$worktree"
22                 return 1
23         }
24 }
25
26 test_expect_success 'plain' '
27         (
28                 unset GIT_DIR GIT_WORK_TREE
29                 mkdir plain &&
30                 cd plain &&
31                 git init
32         ) &&
33         check_config plain/.git false unset
34 '
35
36 test_expect_success 'plain with GIT_WORK_TREE' '
37         if (
38                 unset GIT_DIR
39                 mkdir plain-wt &&
40                 cd plain-wt &&
41                 GIT_WORK_TREE=$(pwd) git init
42         )
43         then
44                 echo Should have failed -- GIT_WORK_TREE should not be used
45                 false
46         fi
47 '
48
49 test_expect_success 'plain bare' '
50         (
51                 unset GIT_DIR GIT_WORK_TREE GIT_CONFIG
52                 mkdir plain-bare-1 &&
53                 cd plain-bare-1 &&
54                 git --bare init
55         ) &&
56         check_config plain-bare-1 true unset
57 '
58
59 test_expect_success 'plain bare with GIT_WORK_TREE' '
60         if (
61                 unset GIT_DIR GIT_CONFIG
62                 mkdir plain-bare-2 &&
63                 cd plain-bare-2 &&
64                 GIT_WORK_TREE=$(pwd) git --bare init
65         )
66         then
67                 echo Should have failed -- GIT_WORK_TREE should not be used
68                 false
69         fi
70 '
71
72 test_expect_success 'GIT_DIR bare' '
73
74         (
75                 unset GIT_CONFIG
76                 mkdir git-dir-bare.git &&
77                 GIT_DIR=git-dir-bare.git git init
78         ) &&
79         check_config git-dir-bare.git true unset
80 '
81
82 test_expect_success 'GIT_DIR non-bare' '
83
84         (
85                 unset GIT_CONFIG
86                 mkdir non-bare &&
87                 cd non-bare &&
88                 GIT_DIR=.git git init
89         ) &&
90         check_config non-bare/.git false unset
91 '
92
93 test_expect_success 'GIT_DIR & GIT_WORK_TREE (1)' '
94
95         (
96                 unset GIT_CONFIG
97                 mkdir git-dir-wt-1.git &&
98                 GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-1.git git init
99         ) &&
100         check_config git-dir-wt-1.git false "$(pwd)"
101 '
102
103 test_expect_success 'GIT_DIR & GIT_WORK_TREE (2)' '
104
105         if (
106                 unset GIT_CONFIG
107                 mkdir git-dir-wt-2.git &&
108                 GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-2.git git --bare init
109         )
110         then
111                 echo Should have failed -- --bare should not be used
112                 false
113         fi
114 '
115
116 test_expect_success 'reinit' '
117
118         (
119                 unset GIT_CONFIG GIT_WORK_TREE GIT_CONFIG
120
121                 mkdir again &&
122                 cd again &&
123                 git init >out1 2>err1 &&
124                 git init >out2 2>err2
125         ) &&
126         grep "Initialized empty" again/out1 &&
127         grep "Reinitialized existing" again/out2 &&
128         >again/empty &&
129         test_cmp again/empty again/err1 &&
130         test_cmp again/empty again/err2
131 '
132
133 test_done