t5303: use printf to generate delta bases
[gitweb.git] / t / t1300-config.sh
index e7e6d07b3a85ce08e351da3d54077d94e779beea..cdf1fed5d1c33e659b5d2c9bfb64423b13f05e94 100755 (executable)
@@ -346,12 +346,9 @@ test_expect_success 'working --list' '
        git config --list > output &&
        test_cmp expect output
 '
-cat > expect << EOF
-EOF
-
 test_expect_success '--list without repo produces empty output' '
        git --git-dir=nonexistent config --list >output &&
-       test_cmp expect output
+       test_must_be_empty output
 '
 
 cat > expect << EOF
@@ -888,7 +885,7 @@ EOF
 
 test_expect_success !MINGW 'get --path copes with unset $HOME' '
        (
-               unset HOME;
+               sane_unset HOME &&
                test_must_fail git config --get --path path.home \
                        >result 2>msg &&
                git config --get --path path.normal >>result &&
@@ -933,6 +930,36 @@ test_expect_success 'get --expiry-date' '
        test_must_fail git config --expiry-date date.invalid1
 '
 
+test_expect_success 'get --type=color' '
+       rm .git/config &&
+       git config foo.color "red" &&
+       git config --get --type=color foo.color >actual.raw &&
+       test_decode_color <actual.raw >actual &&
+       echo "<RED>" >expect &&
+       test_cmp expect actual
+'
+
+cat >expect << EOF
+[foo]
+       color = red
+EOF
+
+test_expect_success 'set --type=color' '
+       rm .git/config &&
+       git config --type=color foo.color "red" &&
+       test_cmp expect .git/config
+'
+
+test_expect_success 'get --type=color barfs on non-color' '
+       echo "[foo]bar=not-a-color" >.git/config &&
+       test_must_fail git config --get --type=color foo.bar
+'
+
+test_expect_success 'set --type=color barfs on non-color' '
+       test_must_fail git config --type=color foo.color "not-a-color" 2>error &&
+       test_i18ngrep "cannot parse color" error
+'
+
 cat > expect << EOF
 [quote]
        leading = " test"
@@ -1188,6 +1215,93 @@ test_expect_success 'last one wins: three level vars' '
        test_cmp expect actual
 '
 
+test_expect_success 'old-fashioned settings are case insensitive' '
+       test_when_finished "rm -f testConfig testConfig_expect testConfig_actual" &&
+
+       cat >testConfig_actual <<-EOF &&
+               [V.A]
+               r = value1
+       EOF
+       q_to_tab >testConfig_expect <<-EOF &&
+               [V.A]
+               Qr = value2
+       EOF
+       git config -f testConfig_actual "v.a.r" value2 &&
+       test_cmp testConfig_expect testConfig_actual &&
+
+       cat >testConfig_actual <<-EOF &&
+               [V.A]
+               r = value1
+       EOF
+       q_to_tab >testConfig_expect <<-EOF &&
+               [V.A]
+               QR = value2
+       EOF
+       git config -f testConfig_actual "V.a.R" value2 &&
+       test_cmp testConfig_expect testConfig_actual &&
+
+       cat >testConfig_actual <<-EOF &&
+               [V.A]
+               r = value1
+       EOF
+       q_to_tab >testConfig_expect <<-EOF &&
+               [V.A]
+               r = value1
+               Qr = value2
+       EOF
+       git config -f testConfig_actual "V.A.r" value2 &&
+       test_cmp testConfig_expect testConfig_actual &&
+
+       cat >testConfig_actual <<-EOF &&
+               [V.A]
+               r = value1
+       EOF
+       q_to_tab >testConfig_expect <<-EOF &&
+               [V.A]
+               r = value1
+               Qr = value2
+       EOF
+       git config -f testConfig_actual "v.A.r" value2 &&
+       test_cmp testConfig_expect testConfig_actual
+'
+
+test_expect_success 'setting different case sensitive subsections ' '
+       test_when_finished "rm -f testConfig testConfig_expect testConfig_actual" &&
+
+       cat >testConfig_actual <<-EOF &&
+               [V "A"]
+               R = v1
+               [K "E"]
+               Y = v1
+               [a "b"]
+               c = v1
+               [d "e"]
+               f = v1
+       EOF
+       q_to_tab >testConfig_expect <<-EOF &&
+               [V "A"]
+               Qr = v2
+               [K "E"]
+               Qy = v2
+               [a "b"]
+               Qc = v2
+               [d "e"]
+               f = v1
+               [d "E"]
+               Qf = v2
+       EOF
+       # exact match
+       git config -f testConfig_actual a.b.c v2 &&
+       # match section and subsection, key is cased differently.
+       git config -f testConfig_actual K.E.y v2 &&
+       # section and key are matched case insensitive, but subsection needs
+       # to match; When writing out new values only the key is adjusted
+       git config -f testConfig_actual v.A.r v2 &&
+       # subsection is not matched:
+       git config -f testConfig_actual d.E.f v2 &&
+       test_cmp testConfig_expect testConfig_actual
+'
+
 for VAR in a .a a. a.0b a."b c". a."b c".0d
 do
        test_expect_success "git -c $VAR=VAL rejects invalid '$VAR'" '