Merge branch 'rs/maint-diff-fd-leak' into maint
[git] / t / t1303-wacky-config.sh
1 #!/bin/sh
2
3 test_description='Test wacky input to git config'
4 . ./test-lib.sh
5
6 setup() {
7         (printf "[section]\n" &&
8         printf "  key = foo") >.git/config
9 }
10
11 check() {
12         echo "$2" >expected
13         git config --get "$1" >actual 2>&1
14         test_cmp actual expected
15 }
16
17 test_expect_success 'modify same key' '
18         setup &&
19         git config section.key bar &&
20         check section.key bar
21 '
22
23 test_expect_success 'add key in same section' '
24         setup &&
25         git config section.other bar &&
26         check section.key foo &&
27         check section.other bar
28 '
29
30 test_expect_success 'add key in different section' '
31         setup &&
32         git config section2.key bar &&
33         check section.key foo &&
34         check section2.key bar
35 '
36
37 SECTION="test.q\"s\\sq'sp e.key"
38 test_expect_success 'make sure git config escapes section names properly' '
39         git config "$SECTION" bar &&
40         check "$SECTION" bar
41 '
42
43 LONG_VALUE=$(printf "x%01021dx a" 7)
44 test_expect_success 'do not crash on special long config line' '
45         setup &&
46         git config section.key "$LONG_VALUE" &&
47         check section.key "fatal: bad config file line 2 in .git/config"
48 '
49
50 test_done