#!/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 "$LONG_VALUE" ' test_done