1#!/bin/sh
2
3test_description='merge fast-forward and up to date'
4
5. ./test-lib.sh
6
7test_expect_success setup '
8	>file &&
9	git add file &&
10	test_tick &&
11	git commit -m initial &&
12	git tag c0 &&
13
14	echo second >file &&
15	git add file &&
16	test_tick &&
17	git commit -m second &&
18	git tag c1 &&
19	git branch test &&
20	echo third >file &&
21	git add file &&
22	test_tick &&
23	git commit -m third &&
24	git tag c2
25'
26
27test_expect_success 'merge -s recursive up-to-date' '
28
29	git reset --hard c1 &&
30	test_tick &&
31	git merge -s recursive c0 &&
32	expect=$(git rev-parse c1) &&
33	current=$(git rev-parse HEAD) &&
34	test "$expect" = "$current"
35
36'
37
38test_expect_success 'merge -s recursive fast-forward' '
39
40	git reset --hard c0 &&
41	test_tick &&
42	git merge -s recursive c1 &&
43	expect=$(git rev-parse c1) &&
44	current=$(git rev-parse HEAD) &&
45	test "$expect" = "$current"
46
47'
48
49test_expect_success 'merge -s ours up-to-date' '
50
51	git reset --hard c1 &&
52	test_tick &&
53	git merge -s ours c0 &&
54	expect=$(git rev-parse c1) &&
55	current=$(git rev-parse HEAD) &&
56	test "$expect" = "$current"
57
58'
59
60test_expect_success 'merge -s ours fast-forward' '
61
62	git reset --hard c0 &&
63	test_tick &&
64	git merge -s ours c1 &&
65	expect=$(git rev-parse c0^{tree}) &&
66	current=$(git rev-parse HEAD^{tree}) &&
67	test "$expect" = "$current"
68
69'
70
71test_expect_success 'merge -s subtree up-to-date' '
72
73	git reset --hard c1 &&
74	test_tick &&
75	git merge -s subtree c0 &&
76	expect=$(git rev-parse c1) &&
77	current=$(git rev-parse HEAD) &&
78	test "$expect" = "$current"
79
80'
81
82test_expect_success 'merge fast-forward octopus' '
83
84	git reset --hard c0 &&
85	test_tick &&
86	git merge c1 c2 &&
87	expect=$(git rev-parse c2) &&
88	current=$(git rev-parse HEAD) &&
89	test "$expect" = "$current"
90'
91
92test_done
93