From 8a1358cc3067ea0eebe4663725ef2bea5896bffc Mon Sep 17 00:00:00 2001 From: Elijah Newren Date: Wed, 13 Mar 2019 17:05:58 -0700 Subject: [PATCH] filter-repo: add tests checking whether we start in a clean clone Signed-off-by: Elijah Newren --- t/t9390-filter-repo.sh | 74 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/t/t9390-filter-repo.sh b/t/t9390-filter-repo.sh index 289c147..9017aa9 100755 --- a/t/t9390-filter-repo.sh +++ b/t/t9390-filter-repo.sh @@ -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