stgit.el: Break out stgit-sort-patches to a separate function for future reuse
[stgit] / t / t2700-refresh.sh
1 #!/bin/sh
2
3 test_description='Run "stg refresh"'
4
5 . ./test-lib.sh
6
7 test_expect_success 'Initialize StGit stack' '
8 stg init &&
9 echo expected*.txt >> .git/info/exclude &&
10 echo patches.txt >> .git/info/exclude &&
11 echo show.txt >> .git/info/exclude &&
12 echo diff.txt >> .git/info/exclude &&
13 stg new p0 -m "base" &&
14 for i in 1 2 3; do
15 echo base >> foo$i.txt &&
16 git add foo$i.txt
17 done
18 stg refresh &&
19 for i in 1 2 3; do
20 stg new p$i -m "foo $i" &&
21 echo "foo $i" >> foo$i.txt &&
22 stg refresh
23 done
24 '
25
26 cat > expected.txt <<EOF
27 p0
28 p3
29 EOF
30 test_expect_success 'Refresh top patch' '
31 echo bar 3 >> foo3.txt &&
32 stg refresh &&
33 stg status &&
34 test -z "$(stg status)" &&
35 stg patches foo3.txt > patches.txt &&
36 test_cmp expected.txt patches.txt
37 '
38
39 cat > expected.txt <<EOF
40 p0
41 p2
42 EOF
43 test_expect_success 'Refresh middle patch' '
44 stg status &&
45 echo bar 2 >> foo2.txt &&
46 stg refresh -p p2 &&
47 stg status &&
48 test -z "$(stg status)" &&
49 stg patches foo2.txt > patches.txt &&
50 test_cmp expected.txt patches.txt
51 '
52
53 cat > expected.txt <<EOF
54 p0
55 p1
56 EOF
57 test_expect_success 'Refresh bottom patch' '
58 stg status &&
59 echo bar 1 >> foo1.txt &&
60 stg refresh -p p1 &&
61 stg status &&
62 test -z "$(stg status)" &&
63 stg patches foo1.txt > patches.txt &&
64 test_cmp expected.txt patches.txt
65 '
66
67 cat > expected.txt <<EOF
68 p0
69 p1
70 p4
71 EOF
72 cat > expected2.txt <<EOF
73 diff --git a/foo1.txt b/foo1.txt
74 index 728535d..6f34984 100644
75 --- a/foo1.txt
76 +++ b/foo1.txt
77 @@ -1,3 +1,4 @@
78 base
79 foo 1
80 bar 1
81 +baz 1
82 EOF
83 cat > expected3.txt <<EOF
84 diff --git a/foo1.txt b/foo1.txt
85 index 6f34984..a80eb63 100644
86 --- a/foo1.txt
87 +++ b/foo1.txt
88 @@ -2,3 +2,4 @@ base
89 foo 1
90 bar 1
91 baz 1
92 +blah 1
93 diff --git a/foo2.txt b/foo2.txt
94 index 415c9f5..43168f2 100644
95 --- a/foo2.txt
96 +++ b/foo2.txt
97 @@ -1,3 +1,4 @@
98 base
99 foo 2
100 bar 2
101 +baz 2
102 EOF
103 test_expect_success 'Refresh --index' '
104 stg status &&
105 stg new p4 -m "refresh_index" &&
106 echo baz 1 >> foo1.txt &&
107 git add foo1.txt &&
108 echo blah 1 >> foo1.txt &&
109 echo baz 2 >> foo2.txt &&
110 stg refresh --index &&
111 stg patches foo1.txt > patches.txt &&
112 git diff HEAD^..HEAD > show.txt &&
113 stg diff > diff.txt &&
114 test_cmp expected.txt patches.txt &&
115 test_cmp expected2.txt show.txt &&
116 test_cmp expected3.txt diff.txt &&
117 stg new p5 -m "cleanup again" &&
118 stg refresh
119 '
120
121 test_expect_success 'Refresh moved files' '
122 git mv foo1.txt foo1-new.txt &&
123 stg refresh
124 '
125
126 test_done