-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
teach config --blob option to parse config from database
This can be used to read configuration values directly from git's database. For example it is useful for reading to be checked out .gitmodules files directly from the database. Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Heiko Voigt
authored and
Junio C Hamano
committed
Jul 12, 2013
1 parent
4d8dd14
commit 1bc8881
Showing
5 changed files
with
193 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
#!/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 && | ||
# just grep for our token as the exact error message is likely to | ||
# change or be internationalized | ||
grep "HEAD:config" err | ||
' | ||
|
||
test_done |