diff options
author | Denton Liu <liu.denton@gmail.com> | 2019-08-25 12:11:57 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-08-26 22:34:56 +0300 |
commit | 359ecebc346eeb3c74af82f25d8fce94d3ce35a4 (patch) | |
tree | f9f5b89d6f134db3d5a5554cdce18a0d54dee2d0 /t/t3431-rebase-fork-point.sh | |
parent | 745f6812895b31c02b29bdfe4ae8e5498f776c26 (diff) |
t3431: add rebase --fork-point tests
Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3431-rebase-fork-point.sh')
-rwxr-xr-x | t/t3431-rebase-fork-point.sh | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/t/t3431-rebase-fork-point.sh b/t/t3431-rebase-fork-point.sh new file mode 100755 index 0000000000..2d5c6e641e --- /dev/null +++ b/t/t3431-rebase-fork-point.sh @@ -0,0 +1,53 @@ +#!/bin/sh +# +# Copyright (c) 2019 Denton Liu +# + +test_description='git rebase --fork-point test' + +. ./test-lib.sh + +# A---B---D---E (master) +# \ +# C*---F---G (side) +# +# C was formerly part of master but master was rewound to remove C +# +test_expect_success setup ' + test_commit A && + test_commit B && + test_commit C && + git branch -t side && + git reset --hard HEAD^ && + test_commit D && + test_commit E && + git checkout side && + test_commit F && + test_commit G +' + +test_rebase () { + expected="$1" && + shift && + test_expect_success "git rebase $*" " + git checkout master && + git reset --hard E && + git checkout side && + git reset --hard G && + git rebase $* && + test_write_lines $expected >expect && + git log --pretty=%s >actual && + test_cmp expect actual + " +} + +test_rebase 'G F E D B A' +test_rebase 'G F D B A' --onto D +test_rebase 'G F C E D B A' --no-fork-point +test_rebase 'G F C D B A' --no-fork-point --onto D +test_rebase 'G F E D B A' --fork-point refs/heads/master +test_rebase 'G F D B A' --fork-point --onto D refs/heads/master +test_rebase 'G F C E D B A' refs/heads/master +test_rebase 'G F C D B A' --onto D refs/heads/master + +test_done |