summaryrefslogtreecommitdiff
path: root/t/t1300-config.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-05-08 06:59:26 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-05-08 06:59:26 (GMT)
commite3e042b185ce3037acb61382da53521ac0beebbf (patch)
tree33c09f9387057932cd749a667294c4fe52dd8b79 /t/t1300-config.sh
parent278c2511476533ad4680e3589b19ded01957ab48 (diff)
parentfb0dc3bac135e9f6243bd6d293e8c9293c73b9cd (diff)
downloadgit-e3e042b185ce3037acb61382da53521ac0beebbf.zip
git-e3e042b185ce3037acb61382da53521ac0beebbf.tar.gz
git-e3e042b185ce3037acb61382da53521ac0beebbf.tar.bz2
Merge branch 'tb/config-type'
The "git config" command uses separate options e.g. "--int", "--bool", etc. to specify what type the caller wants the value to be interpreted as. A new "--type=<typename>" option has been introduced, which would make it cleaner to define new types. * tb/config-type: builtin/config.c: support `--type=<type>` as preferred alias for `--<type>` builtin/config.c: treat type specifiers singularly
Diffstat (limited to 't/t1300-config.sh')
-rwxr-xr-xt/t1300-config.sh65
1 files changed, 64 insertions, 1 deletions
diff --git a/t/t1300-config.sh b/t/t1300-config.sh
index 5acf12f..e7e6d07 100755
--- a/t/t1300-config.sh
+++ b/t/t1300-config.sh
@@ -742,7 +742,7 @@ test_expect_success bool '
do
git config --bool --get bool.true$i >>result
git config --bool --get bool.false$i >>result
- done &&
+ done &&
test_cmp expect result'
test_expect_success 'invalid bool (--get)' '
@@ -1686,6 +1686,69 @@ test_expect_success '--local requires a repo' '
test_expect_code 128 nongit git config --local foo.bar
'
+cat >.git/config <<-\EOF &&
+[core]
+foo = true
+number = 10
+big = 1M
+EOF
+
+test_expect_success 'identical modern --type specifiers are allowed' '
+ git config --type=int --type=int core.big >actual &&
+ echo 1048576 >expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'identical legacy --type specifiers are allowed' '
+ git config --int --int core.big >actual &&
+ echo 1048576 >expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'identical mixed --type specifiers are allowed' '
+ git config --int --type=int core.big >actual &&
+ echo 1048576 >expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'non-identical modern --type specifiers are not allowed' '
+ test_must_fail git config --type=int --type=bool core.big 2>error &&
+ test_i18ngrep "only one type at a time" error
+'
+
+test_expect_success 'non-identical legacy --type specifiers are not allowed' '
+ test_must_fail git config --int --bool core.big 2>error &&
+ test_i18ngrep "only one type at a time" error
+'
+
+test_expect_success 'non-identical mixed --type specifiers are not allowed' '
+ test_must_fail git config --type=int --bool core.big 2>error &&
+ test_i18ngrep "only one type at a time" error
+'
+
+test_expect_success '--type allows valid type specifiers' '
+ echo "true" >expect &&
+ git config --type=bool core.foo >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success '--no-type unsets type specifiers' '
+ echo "10" >expect &&
+ git config --type=bool --no-type core.number >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'unset type specifiers may be reset to conflicting ones' '
+ echo 1048576 >expect &&
+ git config --type=bool --no-type --type=int core.big >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success '--type rejects unknown specifiers' '
+ test_must_fail git config --type=nonsense core.foo 2>error &&
+ test_i18ngrep "unrecognized --type argument" error
+'
+
test_expect_success '--replace-all does not invent newlines' '
q_to_tab >.git/config <<-\EOF &&
[abc]key