add rebase patch id tests
Signed-off-by: Clemens Buchacher <drizzd@aon.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Clemens Buchacher committed
Sep 19, 2010 at 11:59 UTC
beb172172f3dc63b4e7ad671e34826fb812281f8
1 file changed
+109
t/t3419-rebase-patch-id.sh
new
+109
@@ -0,0 +1,109 @@
1
+#!/bin/bash
2
+
3
+test_description='git rebase - test patch id computation'
4
+
5
+. ./test-lib.sh
6
+
7
+test_set_prereq NOT_EXPENSIVE
8
+test -n "$GIT_PATCHID_TIMING_TESTS" && test_set_prereq EXPENSIVE
9
+test -x /usr/bin/time && test_set_prereq USR_BIN_TIME
10
+
11
+count()
12
+{
13
+ i=0
14
+ while test $i -lt $1
15
+ do
16
+ echo "$i"
17
+ i=$(($i+1))
18
+ done
19
+}
20
+
21
+scramble()
22
+{
23
+ i=0
24
+ while read x
25
+ do
26
+ if test $i -ne 0
27
+ then
28
+ echo "$x"
29
+ fi
30
+ i=$(((i+1) % 10))
31
+ done < "$1" > "$1.new"
32
+ mv -f "$1.new" "$1"
33
+}
34
+
35
+run()
36
+{
37
+ echo \$ "$@"
38
+ /usr/bin/time "$@" >/dev/null
39
+}
40
+
41
+test_expect_success 'setup' '
42
+ git commit --allow-empty -m initial
43
+ git tag root
44
+'
45
+
46
+do_tests()
47
+{
48
+ pr=$1
49
+ nlines=$2
50
+
51
+ test_expect_success $pr "setup: $nlines lines" "
52
+ rm -f .gitattributes &&
53
+ git checkout -q -f master &&
54
+ git reset --hard root &&
55
+ count $nlines >file &&
56
+ git add file &&
57
+ git commit -q -m initial &&
58
+ git branch -f other &&
59
+
60
+ scramble file &&
61
+ git add file &&
62
+ git commit -q -m 'change big file' &&
63
+
64
+ git checkout -q other &&
65
+ : >newfile &&
66
+ git add newfile &&
67
+ git commit -q -m 'add small file' &&
68
+
69
+ git cherry-pick master >/dev/null 2>&1
70
+ "
71
+
72
+ test_debug "
73
+ run git diff master^\!
74
+ "
75
+
76
+ test_expect_success $pr 'setup attributes' "
77
+ echo 'file binary' >.gitattributes
78
+ "
79
+
80
+ test_debug "
81
+ run git format-patch --stdout master &&
82
+ run git format-patch --stdout --ignore-if-in-upstream master
83
+ "
84
+
85
+ test_expect_success $pr 'detect upstream patch' "
86
+ git checkout -q master &&
87
+ scramble file &&
88
+ git add file &&
89
+ git commit -q -m 'change big file again' &&
90
+ git checkout -q other^{} &&
91
+ git rebase master &&
92
+ test_must_fail test -n \"\$(git rev-list master...HEAD~)\"
93
+ "
94
+
95
+ test_expect_success $pr 'do not drop patch' "
96
+ git branch -f squashed master &&
97
+ git checkout -q -f squashed &&
98
+ git reset -q --soft HEAD~2 &&
99
+ git commit -q -m squashed &&
100
+ git checkout -q other^{} &&
101
+ test_must_fail git rebase squashed &&
102
+ rm -rf .git/rebase-apply
103
+ "
104
+}
105
+
106
+do_tests NOT_EXPENSIVE 500
107
+do_tests EXPENSIVE 50000
108
+
109
+test_done