1#!/bin/sh
2
3test_description='Test read_early_config()'
4
5. ./test-lib.sh
6
7test_expect_success 'read early config' '
8 test_config early.config correct &&
9 test-config read_early_config early.config >output &&
10 test correct = "$(cat output)"
11'
12
13test_expect_success 'in a sub-directory' '
14 test_config early.config sub &&
15 mkdir -p sub &&
16 (
17 cd sub &&
18 test-config read_early_config early.config
19 ) >output &&
20 test sub = "$(cat output)"
21'
22
23test_expect_success 'ceiling' '
24 test_config early.config ceiling &&
25 mkdir -p sub &&
26 (
27 GIT_CEILING_DIRECTORIES="$PWD" &&
28 export GIT_CEILING_DIRECTORIES &&
29 cd sub &&
30 test-config read_early_config early.config
31 ) >output &&
32 test -z "$(cat output)"
33'
34
35test_expect_success 'ceiling #2' '
36 mkdir -p xdg/git &&
37 git config -f xdg/git/config early.config xdg &&
38 test_config early.config ceiling &&
39 mkdir -p sub &&
40 (
41 XDG_CONFIG_HOME="$PWD"/xdg &&
42 GIT_CEILING_DIRECTORIES="$PWD" &&
43 export GIT_CEILING_DIRECTORIES XDG_CONFIG_HOME &&
44 cd sub &&
45 test-config read_early_config early.config
46 ) >output &&
47 test xdg = "$(cat output)"
48'
49
50test_with_config () {
51 rm -rf throwaway &&
52 git init throwaway &&
53 (
54 cd throwaway &&
55 echo "$*" >.git/config &&
56 test-config read_early_config early.config
57 )
58}
59
60test_expect_success 'ignore .git/ with incompatible repository version' '
61 test_with_config "[core]repositoryformatversion = 999999" 2>err &&
62 grep "warning:.* Expected git repo version <= [1-9]" err
63'
64
65test_expect_failure 'ignore .git/ with invalid repository version' '
66 test_with_config "[core]repositoryformatversion = invalid"
67'
68
69
70test_expect_failure 'ignore .git/ with invalid config' '
71 test_with_config "["
72'
73
74test_done