| #!/bin/sh |
| |
| test_description='Test wacky input to git config' |
| . ./test-lib.sh |
| |
| setup() { |
| (printf "[section]\n" && |
| printf " key = foo") >.git/config |
| } |
| |
| check() { |
| echo "$2" >expected |
| git config --get "$1" >actual 2>&1 |
| test_cmp actual expected |
| } |
| |
| test_expect_success 'modify same key' ' |
| setup && |
| git config section.key bar && |
| check section.key bar |
| ' |
| |
| test_expect_success 'add key in same section' ' |
| setup && |
| git config section.other bar && |
| check section.key foo && |
| check section.other bar |
| ' |
| |
| test_expect_success 'add key in different section' ' |
| setup && |
| git config section2.key bar && |
| check section.key foo && |
| check section2.key bar |
| ' |
| |
| SECTION="test.q\"s\\sq'sp e.key" |
| test_expect_success 'make sure git config escapes section names properly' ' |
| git config "$SECTION" bar && |
| check "$SECTION" bar |
| ' |
| |
| LONG_VALUE=$(printf "x%01021dx a" 7) |
| test_expect_success 'do not crash on special long config line' ' |
| setup && |
| git config section.key "$LONG_VALUE" && |
| check section.key "fatal: bad config file line 2 in .git/config" |
| ' |
| |
| test_done |