@matheusbsbs / matheus-bagliano / commits / beb172172f
Fork 0

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