Skip to content

Commit

Permalink
add simple tests of consistency across rebase types
Browse files Browse the repository at this point in the history
Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Martin von Zweigbergk authored and Junio C Hamano committed Jun 7, 2013
1 parent edca415 commit 2aad7ca
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 0 deletions.
16 changes: 16 additions & 0 deletions t/lib-rebase.sh
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,19 @@ EOF
test_set_editor "$(pwd)/fake-editor.sh"
chmod a+x fake-editor.sh
}

# checks that the revisions in "$2" represent a linear range with the
# subjects in "$1"
test_linear_range () {
revlist_merges=$(git rev-list --merges "$2") &&
test -z "$revlist_merges" &&
expected=$1
set -- $(git log --reverse --format=%s "$2")
test "$expected" = "$*"
}

reset_rebase () {
test_might_fail git rebase --abort &&
git reset --hard &&
git clean -f
}
78 changes: 78 additions & 0 deletions t/t3421-rebase-topology-linear.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#!/bin/sh

test_description='basic rebase topology tests'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-rebase.sh

# a---b---c
# \
# d---e
test_expect_success 'setup' '
test_commit a &&
test_commit b &&
test_commit c &&
git checkout b &&
test_commit d &&
test_commit e
'

test_run_rebase () {
result=$1
shift
test_expect_$result "simple rebase $*" "
reset_rebase &&
git rebase $* c e &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'd e' c..
"
}
test_run_rebase success ''
test_run_rebase success -m
test_run_rebase success -i
test_run_rebase success -p

test_run_rebase () {
result=$1
shift
test_expect_$result "rebase $* is no-op if upstream is an ancestor" "
reset_rebase &&
git rebase $* b e &&
test_cmp_rev e HEAD
"
}
test_run_rebase success ''
test_run_rebase success -m
test_run_rebase success -i
test_run_rebase success -p

test_run_rebase () {
result=$1
shift
test_expect_$result "rebase $* -f rewrites even if upstream is an ancestor" "
reset_rebase &&
git rebase $* -f b e &&
! test_cmp_rev e HEAD &&
test_cmp_rev b HEAD~2 &&
test_linear_range 'd e' b..
"
}
test_run_rebase success ''
test_run_rebase success -m
test_run_rebase success -i
test_run_rebase failure -p

test_run_rebase () {
result=$1
shift
test_expect_$result "rebase $* fast-forwards from ancestor of upstream" "
reset_rebase &&
git rebase $* e b &&
test_cmp_rev e HEAD
"
}
test_run_rebase success ''
test_run_rebase success -m
test_run_rebase success -i
test_run_rebase success -p

test_done

0 comments on commit 2aad7ca

Please sign in to comment.