filter-repo: add tests checking whether we start in a clean clone

Signed-off-by: Elijah Newren <newren@gmail.com>
This commit is contained in:
Elijah Newren 2019-03-13 17:05:58 -07:00
parent 8ecd7a0d88
commit 8a1358cc30

View File

@ -643,4 +643,78 @@ test_expect_success 'commit message rewrite unsuccessful' '
)
'
test_expect_success 'startup sanity checks' '
(
git clone file://"$(pwd)"/analyze_me startup_sanity_checks &&
cd startup_sanity_checks &&
echo foobar | git hash-object -w --stdin &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "expected freshly packed repo" err &&
git prune &&
git remote add another_remote /dev/null &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "expected one remote, origin" err &&
git remote rm another_remote &&
git remote rename origin another_remote &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "expected one remote, origin" err &&
git remote rename another_remote origin &&
cd words &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "GIT_DIR must be .git" err &&
rm err &&
cd .. &&
git config core.bare true &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "GIT_DIR must be ." err &&
git config core.bare false &&
git update-ref -m "Just Testing" refs/heads/master HEAD &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "expected at most one entry in the reflog" err &&
git reflog expire --expire=now &&
echo yes >>words/know &&
git stash save random change &&
rm -rf .git/logs/ &&
git gc &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "has stashed changes" err &&
git update-ref -d refs/stash &&
echo yes >>words/know &&
git add words/know &&
git gc --prune=now &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "you have uncommitted changes" err &&
git checkout HEAD words/know &&
echo yes >>words/know &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "you have unstaged changes" err &&
git checkout -- words/know &&
test_must_fail git filter-repo --path numbers 2>err &&
test_i18ngrep "you have untracked changes" err &&
rm err &&
git update-ref -d refs/remotes/origin/master &&
test_must_fail git filter-repo --path numbers 2>../err &&
test_i18ngrep "refs/heads/master exists, but refs/remotes/origin/master not found" ../err &&
git update-ref -m restoring refs/remotes/origin/master refs/heads/master &&
rm ../err &&
rm .git/logs/refs/remotes/origin/master &&
git update-ref -m funsies refs/remotes/origin/master refs/heads/master~1 &&
test_must_fail git filter-repo --path numbers 2>../err &&
test_i18ngrep "refs/heads/master does not match refs/remotes/origin/master" ../err &&
rm ../err
)
'
test_done