ec10b018e7
Using 'test_must_be_empty' is preferable to '! test -s', because it gives a helpful error message if the given file is unexpectedly not empty, while the latter remains completely silent. Furthermore, it also catches cases when the given file unexpectedly does not exist at all. This patch was basically created by: sed -i -e 's/! test -s/test_must_be_empty/' t[0-9]*.sh with the following notable exceptions: - The '! test -s' check in '.gitmodules ignore=dirty suppresses submodules with untracked content' in 't7508-status.sh' is left as-is, because it's bogus and, therefore, it's subject of a dedicated patch. - The '! test -s' checks in 't9131-git-svn-empty-symlink.sh' and 't9135-git-svn-moved-branch-empty-file.sh' are immediately preceeded by a 'test -f' to ensure that the files exist in the first place. 'test_must_be_empty' ensures that as well, so those 'test -f' commands are removed as well. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
76 lines
2.1 KiB
Bash
Executable File
76 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='checkout can handle submodules'
|
|
|
|
. ./test-lib.sh
|
|
. "$TEST_DIRECTORY"/lib-submodule-update.sh
|
|
|
|
test_expect_success 'setup' '
|
|
mkdir submodule &&
|
|
(cd submodule &&
|
|
git init &&
|
|
test_commit first) &&
|
|
git add submodule &&
|
|
test_tick &&
|
|
git commit -m superproject &&
|
|
(cd submodule &&
|
|
test_commit second) &&
|
|
git add submodule &&
|
|
test_tick &&
|
|
git commit -m updated.superproject
|
|
'
|
|
|
|
test_expect_success '"reset <submodule>" updates the index' '
|
|
git update-index --refresh &&
|
|
git diff-files --quiet &&
|
|
git diff-index --quiet --cached HEAD &&
|
|
git reset HEAD^ submodule &&
|
|
test_must_fail git diff-files --quiet &&
|
|
git reset submodule &&
|
|
git diff-files --quiet
|
|
'
|
|
|
|
test_expect_success '"checkout <submodule>" updates the index only' '
|
|
git update-index --refresh &&
|
|
git diff-files --quiet &&
|
|
git diff-index --quiet --cached HEAD &&
|
|
git checkout HEAD^ submodule &&
|
|
test_must_fail git diff-files --quiet &&
|
|
git checkout HEAD submodule &&
|
|
git diff-files --quiet
|
|
'
|
|
|
|
test_expect_success '"checkout <submodule>" honors diff.ignoreSubmodules' '
|
|
git config diff.ignoreSubmodules dirty &&
|
|
echo x> submodule/untracked &&
|
|
git checkout HEAD >actual 2>&1 &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .gitmodules' '
|
|
git config diff.ignoreSubmodules none &&
|
|
git config -f .gitmodules submodule.submodule.path submodule &&
|
|
git config -f .gitmodules submodule.submodule.ignore untracked &&
|
|
git checkout HEAD >actual 2>&1 &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .git/config' '
|
|
git config -f .gitmodules submodule.submodule.ignore none &&
|
|
git config submodule.submodule.path submodule &&
|
|
git config submodule.submodule.ignore all &&
|
|
git checkout HEAD >actual 2>&1 &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS=1
|
|
test_submodule_switch_recursing_with_args "checkout"
|
|
|
|
test_submodule_forced_switch_recursing_with_args "checkout -f"
|
|
|
|
test_submodule_switch "git checkout"
|
|
|
|
test_submodule_forced_switch "git checkout -f"
|
|
|
|
test_done
|