]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | ||
3 | test_description='messages from rebase operation' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | test_expect_success 'setup' ' | |
8 | test_commit O fileO && | |
9 | test_commit X fileX && | |
10 | test_commit A fileA && | |
11 | test_commit B fileB && | |
12 | test_commit Y fileY && | |
13 | ||
14 | git checkout -b topic O && | |
15 | git cherry-pick A B && | |
16 | test_commit Z fileZ && | |
17 | git tag start | |
18 | ' | |
19 | ||
20 | test_expect_success 'rebase -m' ' | |
21 | git rebase -m master >report && | |
22 | >expect && | |
23 | sed -n -e "/^Already applied: /p" \ | |
24 | -e "/^Committed: /p" report >actual && | |
25 | test_cmp expect actual | |
26 | ' | |
27 | ||
28 | test_expect_success 'rebase against master twice' ' | |
29 | git rebase master >out && | |
30 | test_i18ngrep "Current branch topic is up to date" out | |
31 | ' | |
32 | ||
33 | test_expect_success 'rebase against master twice with --force' ' | |
34 | git rebase --force-rebase master >out && | |
35 | test_i18ngrep "Current branch topic is up to date, rebase forced" out | |
36 | ' | |
37 | ||
38 | test_expect_success 'rebase against master twice from another branch' ' | |
39 | git checkout topic^ && | |
40 | git rebase master topic >out && | |
41 | test_i18ngrep "Current branch topic is up to date" out | |
42 | ' | |
43 | ||
44 | test_expect_success 'rebase fast-forward to master' ' | |
45 | git checkout topic^ && | |
46 | git rebase topic >out && | |
47 | test_i18ngrep "Fast-forwarded HEAD to topic" out | |
48 | ' | |
49 | ||
50 | test_expect_success 'rebase --stat' ' | |
51 | git reset --hard start && | |
52 | git rebase --stat master >diffstat.txt && | |
53 | grep "^ fileX | *1 +$" diffstat.txt | |
54 | ' | |
55 | ||
56 | test_expect_success 'rebase w/config rebase.stat' ' | |
57 | git reset --hard start && | |
58 | git config rebase.stat true && | |
59 | git rebase master >diffstat.txt && | |
60 | grep "^ fileX | *1 +$" diffstat.txt | |
61 | ' | |
62 | ||
63 | test_expect_success 'rebase -n overrides config rebase.stat config' ' | |
64 | git reset --hard start && | |
65 | git config rebase.stat true && | |
66 | git rebase -n master >diffstat.txt && | |
67 | ! grep "^ fileX | *1 +$" diffstat.txt | |
68 | ' | |
69 | ||
70 | # Output to stderr: | |
71 | # | |
72 | # "Does not point to a valid commit: invalid-ref" | |
73 | # | |
74 | # NEEDSWORK: This "grep" is fine in real non-C locales, but | |
75 | # GIT_TEST_GETTEXT_POISON poisons the refname along with the enclosing | |
76 | # error message. | |
77 | test_expect_success 'rebase --onto outputs the invalid ref' ' | |
78 | test_must_fail git rebase --onto invalid-ref HEAD HEAD 2>err && | |
79 | test_i18ngrep "invalid-ref" err | |
80 | ' | |
81 | ||
82 | test_expect_success 'error out early upon -C<n> or --whitespace=<bad>' ' | |
83 | test_must_fail git rebase -Cnot-a-number HEAD 2>err && | |
84 | test_i18ngrep "numerical value" err && | |
85 | test_must_fail git rebase --whitespace=bad HEAD 2>err && | |
86 | test_i18ngrep "Invalid whitespace option" err | |
87 | ' | |
88 | ||
89 | test_expect_success 'GIT_REFLOG_ACTION' ' | |
90 | git checkout start && | |
91 | test_commit reflog-onto && | |
92 | git checkout -b reflog-topic start && | |
93 | test_commit reflog-to-rebase && | |
94 | ||
95 | git rebase reflog-onto && | |
96 | git log -g --format=%gs -3 >actual && | |
97 | cat >expect <<-\EOF && | |
98 | rebase finished: returning to refs/heads/reflog-topic | |
99 | rebase: reflog-to-rebase | |
100 | rebase: checkout reflog-onto | |
101 | EOF | |
102 | test_cmp expect actual && | |
103 | ||
104 | git checkout -b reflog-prefix reflog-to-rebase && | |
105 | GIT_REFLOG_ACTION=change-the-reflog git rebase reflog-onto && | |
106 | git log -g --format=%gs -3 >actual && | |
107 | cat >expect <<-\EOF && | |
108 | rebase finished: returning to refs/heads/reflog-prefix | |
109 | change-the-reflog: reflog-to-rebase | |
110 | change-the-reflog: checkout reflog-onto | |
111 | EOF | |
112 | test_cmp expect actual | |
113 | ' | |
114 | ||
115 | test_expect_success 'rebase -i onto unrelated history' ' | |
116 | git init unrelated && | |
117 | test_commit -C unrelated 1 && | |
118 | git -C unrelated remote add -f origin "$PWD" && | |
119 | git -C unrelated branch --set-upstream-to=origin/master && | |
120 | git -C unrelated -c core.editor=true rebase -i -v --stat >actual && | |
121 | test_i18ngrep "Changes to " actual && | |
122 | test_i18ngrep "5 files changed" actual | |
123 | ' | |
124 | ||
125 | test_done |