t1309: test read_early_config()

So far, we had no explicit tests of that function. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Johannes Schindelin committed Mar 13, 2017 at 21:11 UTC 1a6ec1eb38ce1ee77991da665a1872da57e38292
2 files changed +65
t/helper/test-config.c
+15
@@ -66,6 +66,16 @@ static int iterate_cb(const char *var, const char *value, void *data)
66 return 0;
67 }
68
69 +static int early_config_cb(const char *var, const char *value, void *vdata)
70 +{
71 + const char *key = vdata;
72 +
73 + if (!strcmp(key, var))
74 + printf("%s\n", value);
75 +
76 + return 0;
77 +}
78 +
79 int cmd_main(int argc, const char **argv)
80 {
81 int i, val;
@@ -73,6 +83,11 @@ int cmd_main(int argc, const char **argv)
83 const struct string_list *strptr;
84 struct config_set cs;
85
86 + if (argc == 3 && !strcmp(argv[1], "read_early_config")) {
87 + read_early_config(early_config_cb, (void *)argv[2]);
88 + return 0;
89 + }
90 +
91 setup_git_directory();
92
93 git_configset_init(&cs);
t/t1309-early-config.sh new
+50
@@ -0,0 +1,50 @@
1 +#!/bin/sh
2 +
3 +test_description='Test read_early_config()'
4 +
5 +. ./test-lib.sh
6 +
7 +test_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 +
13 +test_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 +
23 +test_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 +
35 +test_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 +
50 +test_done