tvl-depot/third_party/git/t/t1307-config-blob.sh
Vincent Ambo f4609b896f merge(3p/git): Merge git subtree at v2.29.2
This also bumps the stable nixpkgs to 20.09 as of 2020-11-21, because
there is some breakage in the git build related to the netrc
credentials helper which someone has taken care of in nixpkgs.

The stable channel is not used for anything other than git, so this
should be fine.

Change-Id: I3575a19dab09e1e9556cf8231d717de9890484fb
2020-11-21 19:45:56 +01:00

80 lines
2 KiB
Bash
Executable file

#!/bin/sh
test_description='support for reading config from a blob'
. ./test-lib.sh
test_expect_success 'create config blob' '
cat >config <<-\EOF &&
[some]
value = 1
EOF
git add config &&
git commit -m foo
'
test_expect_success 'list config blob contents' '
echo some.value=1 >expect &&
git config --blob=HEAD:config --list >actual &&
test_cmp expect actual
'
test_expect_success 'fetch value from blob' '
echo true >expect &&
git config --blob=HEAD:config --bool some.value >actual &&
test_cmp expect actual
'
test_expect_success 'reading non-existing value from blob is an error' '
test_must_fail git config --blob=HEAD:config non.existing
'
test_expect_success 'reading from blob and file is an error' '
test_must_fail git config --blob=HEAD:config --system --list
'
test_expect_success 'reading from missing ref is an error' '
test_must_fail git config --blob=HEAD:doesnotexist --list
'
test_expect_success 'reading from non-blob is an error' '
test_must_fail git config --blob=HEAD --list
'
test_expect_success 'setting a value in a blob is an error' '
test_must_fail git config --blob=HEAD:config some.value foo
'
test_expect_success 'deleting a value in a blob is an error' '
test_must_fail git config --blob=HEAD:config --unset some.value
'
test_expect_success 'editing a blob is an error' '
test_must_fail git config --blob=HEAD:config --edit
'
test_expect_success 'parse errors in blobs are properly attributed' '
cat >config <<-\EOF &&
[some]
value = "
EOF
git add config &&
git commit -m broken &&
test_must_fail git config --blob=HEAD:config some.value 2>err &&
test_i18ngrep "HEAD:config" err
'
test_expect_success 'can parse blob ending with CR' '
printf "[some]key = value\\r" >config &&
git add config &&
git commit -m CR &&
echo value >expect &&
git config --blob=HEAD:config some.key >actual &&
test_cmp expect actual
'
test_expect_success 'config --blob outside of a repository is an error' '
nongit test_must_fail git config --blob=foo --list
'
test_done