t3431: add rebase --fork-point tests

Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Denton Liu committed Aug 25, 2019 at 05:11 UTC 359ecebc346eeb3c74af82f25d8fce94d3ce35a4
1 file changed +53
t/t3431-rebase-fork-point.sh new
+53
@@ -0,0 +1,53 @@
1 +#!/bin/sh
2 +#
3 +# Copyright (c) 2019 Denton Liu
4 +#
5 +
6 +test_description='git rebase --fork-point test'
7 +
8 +. ./test-lib.sh
9 +
10 +# A---B---D---E (master)
11 +# \
12 +# C*---F---G (side)
13 +#
14 +# C was formerly part of master but master was rewound to remove C
15 +#
16 +test_expect_success setup '
17 + test_commit A &&
18 + test_commit B &&
19 + test_commit C &&
20 + git branch -t side &&
21 + git reset --hard HEAD^ &&
22 + test_commit D &&
23 + test_commit E &&
24 + git checkout side &&
25 + test_commit F &&
26 + test_commit G
27 +'
28 +
29 +test_rebase () {
30 + expected="$1" &&
31 + shift &&
32 + test_expect_success "git rebase $*" "
33 + git checkout master &&
34 + git reset --hard E &&
35 + git checkout side &&
36 + git reset --hard G &&
37 + git rebase $* &&
38 + test_write_lines $expected >expect &&
39 + git log --pretty=%s >actual &&
40 + test_cmp expect actual
41 + "
42 +}
43 +
44 +test_rebase 'G F E D B A'
45 +test_rebase 'G F D B A' --onto D
46 +test_rebase 'G F C E D B A' --no-fork-point
47 +test_rebase 'G F C D B A' --no-fork-point --onto D
48 +test_rebase 'G F E D B A' --fork-point refs/heads/master
49 +test_rebase 'G F D B A' --fork-point --onto D refs/heads/master
50 +test_rebase 'G F C E D B A' refs/heads/master
51 +test_rebase 'G F C D B A' --onto D refs/heads/master
52 +
53 +test_done