Code

d31887f9bf35a7fa9e31b1eb859a9cf21c918d6c
[git.git] / t / t0001-init.sh
1 #!/bin/sh
3 test_description='git init'
5 . ./test-lib.sh
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
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 }
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 '
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 '
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 '
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 '
72 test_expect_success 'GIT_DIR bare' '
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 '
82 test_expect_success 'init --bare' '
84         (
85                 unset GIT_DIR GIT_WORK_TREE GIT_CONFIG
86                 mkdir git-init-bare.git &&
87                 cd git-init-bare.git &&
88                 git init --bare
89         ) &&
90         check_config git-init-bare.git true unset
91 '
93 test_expect_success 'GIT_DIR non-bare' '
95         (
96                 unset GIT_CONFIG
97                 mkdir non-bare &&
98                 cd non-bare &&
99                 GIT_DIR=.git git init
100         ) &&
101         check_config non-bare/.git false unset
104 test_expect_success 'GIT_DIR & GIT_WORK_TREE (1)' '
106         (
107                 unset GIT_CONFIG
108                 mkdir git-dir-wt-1.git &&
109                 GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-1.git git init
110         ) &&
111         check_config git-dir-wt-1.git false "$(pwd)"
114 test_expect_success 'GIT_DIR & GIT_WORK_TREE (2)' '
116         if (
117                 unset GIT_CONFIG
118                 mkdir git-dir-wt-2.git &&
119                 GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-2.git git --bare init
120         )
121         then
122                 echo Should have failed -- --bare should not be used
123                 false
124         fi
127 test_expect_success 'reinit' '
129         (
130                 unset GIT_CONFIG GIT_WORK_TREE GIT_CONFIG
132                 mkdir again &&
133                 cd again &&
134                 git init >out1 2>err1 &&
135                 git init >out2 2>err2
136         ) &&
137         grep "Initialized empty" again/out1 &&
138         grep "Reinitialized existing" again/out2 &&
139         >again/empty &&
140         test_cmp again/empty again/err1 &&
141         test_cmp again/empty again/err2
144 test_done