Nguyễn Thái Ngọc Duy [off-list ref] writes:
+test_expect_success 'rebase on dirty worktree' '
+ echo dirty >> A &&
+ ! git rebase master'
It is a good defensive way to use "test_must_fail" instead of "!" when
testing git itself; test_must_fail does not allow the program to terminate
with non-zero value by segfaulting, while "!" does.
+test_expect_success 'rebase on dirty cache' '
+ git add A &&
Two-spaces?
+ ! git rebase master'
+
test_expect_success 'rebase against master' '
+ git reset HEAD &&
+ git checkout -f &&
Hmm, why not "reset --hard HEAD". Not asking to change (yet), but just
asking if there is a reason.
git rebase master'
+test_expect_success 'rebase against master twice' '
+ git rebase master 2>&1|grep "Current branch my-topic-branch is up to date\\."
+'
+
+test_expect_success 'rebase against master twice with --force' '
+ git rebase --force-rebase master 2>&1|grep "Current branch my-topic-branch is up to date, rebase forced"
Do not to use any pipe while testing, i.e.
git rebase >out 2>err &&
grep "what you expect in 'out'" out &&
grep "what you expect in 'err'" err
so that you can catch exit status from the command you placed in the
upstream of the pipe.
These new tests make sure I don't miss any check being performed before
rebase is proceeded (which is well tested by other tests)
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
---
Fixed pipe stuff, test_must_fail and spaces
t/t3400-rebase.sh | 31 +++++++++++++++++++++++++++++++
1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh
index 6e391a3..7f62bfb 100755
--- a/t/t3400-rebase.sh
+++ b/t/t3400-rebase.sh
@@ -41,9 +41,40 @@ test_expect_success \
git tag topic
'
+test_expect_success 'rebase on dirty worktree' '
+ echo dirty >> A &&
+ test_must_fail git rebase master'
+
+test_expect_success 'rebase on dirty cache' '
+ git add A &&
+ test_must_fail git rebase master'
+
test_expect_success 'rebase against master' '
+ git reset --hard HEAD &&
git rebase master'
+test_expect_success 'rebase against master twice' '
+ git rebase master 2>err &&
+ grep "Current branch my-topic-branch is up to date" err
+'
+
+test_expect_success 'rebase against master twice with --force' '
+ git rebase --force-rebase master >out &&
+ grep "Current branch my-topic-branch is up to date, rebase forced" out
+'
+
+test_expect_success 'rebase against master twice from another branch' '
+ git checkout my-topic-branch^ &&
+ git rebase master my-topic-branch 2>err &&
+ grep "Current branch my-topic-branch is up to date" err
+'
+
+test_expect_success 'rebase fast-forward to master' '
+ git checkout my-topic-branch^ &&
+ git rebase my-topic-branch 2>err &&
+ grep "Fast-forwarded HEAD to my-topic-branch" err
+'
+
test_expect_success \
'the rebase operation should not have destroyed author information' \
'! (git log | grep "Author:" | grep "<>")'--
test