You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.4 KiB
102 lines
2.4 KiB
#!/bin/sh |
|
|
|
test_description='Test read_early_config()' |
|
|
|
. ./test-lib.sh |
|
|
|
test_expect_success 'read early config' ' |
|
test_config early.config correct && |
|
test-tool config read_early_config early.config >output && |
|
test correct = "$(cat output)" |
|
' |
|
|
|
test_expect_success 'in a sub-directory' ' |
|
test_config early.config sub && |
|
mkdir -p sub && |
|
( |
|
cd sub && |
|
test-tool config read_early_config early.config |
|
) >output && |
|
test sub = "$(cat output)" |
|
' |
|
|
|
test_expect_success 'ceiling' ' |
|
test_config early.config ceiling && |
|
mkdir -p sub && |
|
( |
|
GIT_CEILING_DIRECTORIES="$PWD" && |
|
export GIT_CEILING_DIRECTORIES && |
|
cd sub && |
|
test-tool config read_early_config early.config |
|
) >output && |
|
test_must_be_empty output |
|
' |
|
|
|
test_expect_success 'ceiling #2' ' |
|
mkdir -p xdg/git && |
|
git config -f xdg/git/config early.config xdg && |
|
test_config early.config ceiling && |
|
mkdir -p sub && |
|
( |
|
XDG_CONFIG_HOME="$PWD"/xdg && |
|
GIT_CEILING_DIRECTORIES="$PWD" && |
|
export GIT_CEILING_DIRECTORIES XDG_CONFIG_HOME && |
|
cd sub && |
|
test-tool config read_early_config early.config |
|
) >output && |
|
test xdg = "$(cat output)" |
|
' |
|
|
|
cmdline_config="'test.source=cmdline'" |
|
test_expect_success 'read config file in right order' ' |
|
echo "[test]source = home" >>.gitconfig && |
|
git init foo && |
|
( |
|
cd foo && |
|
echo "[test]source = repo" >>.git/config && |
|
GIT_CONFIG_PARAMETERS=$cmdline_config test-tool config \ |
|
read_early_config test.source >actual && |
|
cat >expected <<-\EOF && |
|
home |
|
repo |
|
cmdline |
|
EOF |
|
test_cmp expected actual |
|
) |
|
' |
|
|
|
test_with_config () { |
|
rm -rf throwaway && |
|
git init throwaway && |
|
( |
|
cd throwaway && |
|
echo "$*" >.git/config && |
|
test-tool config read_early_config early.config |
|
) |
|
} |
|
|
|
test_expect_success 'ignore .git/ with incompatible repository version' ' |
|
test_with_config "[core]repositoryformatversion = 999999" 2>err && |
|
test_i18ngrep "warning:.* Expected git repo version <= [1-9]" err |
|
' |
|
|
|
test_expect_failure 'ignore .git/ with invalid repository version' ' |
|
test_with_config "[core]repositoryformatversion = invalid" |
|
' |
|
|
|
|
|
test_expect_failure 'ignore .git/ with invalid config' ' |
|
test_with_config "[" |
|
' |
|
|
|
test_expect_success 'early config and onbranch' ' |
|
echo "[broken" >broken && |
|
test_with_config "[includeif \"onbranch:master\"]path=../broken" |
|
' |
|
|
|
test_expect_success 'onbranch config outside of git repo' ' |
|
test_config_global includeIf.onbranch:master.path non-existent && |
|
nongit git help |
|
' |
|
|
|
test_done
|
|
|