Blame


1 de7a51b7 2023-04-15 mark #!/bin/sh
2 de7a51b7 2023-04-15 mark #
3 de7a51b7 2023-04-15 mark # Copyright (c) 2023 Mark Jamsek <mark@jamsek.dev>
4 de7a51b7 2023-04-15 mark #
5 de7a51b7 2023-04-15 mark # Permission to use, copy, modify, and distribute this software for any
6 de7a51b7 2023-04-15 mark # purpose with or without fee is hereby granted, provided that the above
7 de7a51b7 2023-04-15 mark # copyright notice and this permission notice appear in all copies.
8 de7a51b7 2023-04-15 mark #
9 de7a51b7 2023-04-15 mark # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 de7a51b7 2023-04-15 mark # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 de7a51b7 2023-04-15 mark # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 de7a51b7 2023-04-15 mark # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 de7a51b7 2023-04-15 mark # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 de7a51b7 2023-04-15 mark # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 de7a51b7 2023-04-15 mark # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 de7a51b7 2023-04-15 mark
17 de7a51b7 2023-04-15 mark . ./common.sh
18 de7a51b7 2023-04-15 mark
19 de7a51b7 2023-04-15 mark test_diff_contiguous_commits()
20 de7a51b7 2023-04-15 mark {
21 de7a51b7 2023-04-15 mark test_init diff_contiguous_commits
22 de7a51b7 2023-04-15 mark
23 de7a51b7 2023-04-15 mark local commit_id1=`git_show_head $testroot/repo`
24 de7a51b7 2023-04-15 mark local alpha_id_old=`get_blob_id $testroot/repo "" alpha`
25 de7a51b7 2023-04-15 mark
26 de7a51b7 2023-04-15 mark echo "modified alpha" > $testroot/repo/alpha
27 de7a51b7 2023-04-15 mark git_commit $testroot/repo -m "changed alpha"
28 de7a51b7 2023-04-15 mark local author_time=`git_show_author_time $testroot/repo`
29 de7a51b7 2023-04-15 mark local date=`date -u -r $author_time +"%a %b %e %X %Y UTC"`
30 de7a51b7 2023-04-15 mark local head_id=`git_show_head $testroot/repo`
31 de7a51b7 2023-04-15 mark local head_id_truncated=`trim_obj_id 13 $head_id`
32 de7a51b7 2023-04-15 mark local alpha_id=`get_blob_id $testroot/repo "" alpha`
33 de7a51b7 2023-04-15 mark
34 5bde4759 2023-04-15 mark cat <<EOF >$TOG_TEST_SCRIPT
35 de7a51b7 2023-04-15 mark SCREENDUMP
36 de7a51b7 2023-04-15 mark EOF
37 de7a51b7 2023-04-15 mark
38 de7a51b7 2023-04-15 mark cat <<EOF >$testroot/view.expected
39 de7a51b7 2023-04-15 mark [1/20] diff $commit_id1 $head_id_truncated
40 de7a51b7 2023-04-15 mark commit $head_id (master)
41 de7a51b7 2023-04-15 mark from: Flan Hacker <flan_hacker@openbsd.org>
42 de7a51b7 2023-04-15 mark date: $date
43 de7a51b7 2023-04-15 mark
44 de7a51b7 2023-04-15 mark changed alpha
45 de7a51b7 2023-04-15 mark
46 de7a51b7 2023-04-15 mark M alpha | 1+ 1-
47 de7a51b7 2023-04-15 mark
48 de7a51b7 2023-04-15 mark 1 file changed, 1 insertion(+), 1 deletion(-)
49 de7a51b7 2023-04-15 mark
50 de7a51b7 2023-04-15 mark commit - $commit_id1
51 de7a51b7 2023-04-15 mark commit + $head_id
52 de7a51b7 2023-04-15 mark blob - $alpha_id_old
53 de7a51b7 2023-04-15 mark blob + $alpha_id
54 de7a51b7 2023-04-15 mark --- alpha
55 de7a51b7 2023-04-15 mark +++ alpha
56 de7a51b7 2023-04-15 mark @@ -1 +1 @@
57 de7a51b7 2023-04-15 mark -alpha
58 de7a51b7 2023-04-15 mark +modified alpha
59 de7a51b7 2023-04-15 mark
60 de7a51b7 2023-04-15 mark
61 de7a51b7 2023-04-15 mark
62 de7a51b7 2023-04-15 mark (END)
63 de7a51b7 2023-04-15 mark EOF
64 de7a51b7 2023-04-15 mark
65 de7a51b7 2023-04-15 mark cd $testroot/repo && tog diff $commit_id1 $head_id
66 de7a51b7 2023-04-15 mark cmp -s $testroot/view.expected $testroot/view
67 de7a51b7 2023-04-15 mark ret=$?
68 de7a51b7 2023-04-15 mark if [ $ret -ne 0 ]; then
69 de7a51b7 2023-04-15 mark diff -u $testroot/view.expected $testroot/view
70 de7a51b7 2023-04-15 mark test_done "$testroot" "$ret"
71 de7a51b7 2023-04-15 mark return 1
72 de7a51b7 2023-04-15 mark fi
73 de7a51b7 2023-04-15 mark
74 de7a51b7 2023-04-15 mark test_done "$testroot" "$ret"
75 de7a51b7 2023-04-15 mark }
76 de7a51b7 2023-04-15 mark
77 de7a51b7 2023-04-15 mark test_diff_arbitrary_commits()
78 de7a51b7 2023-04-15 mark {
79 de7a51b7 2023-04-15 mark test_init diff_arbitrary_commits 80 18
80 de7a51b7 2023-04-15 mark
81 de7a51b7 2023-04-15 mark local commit_id1=`git_show_head $testroot/repo`
82 de7a51b7 2023-04-15 mark local alpha_id_old=`get_blob_id $testroot/repo "" alpha`
83 de7a51b7 2023-04-15 mark
84 de7a51b7 2023-04-15 mark echo "modified alpha" > $testroot/repo/alpha
85 de7a51b7 2023-04-15 mark git_commit $testroot/repo -m "changed alpha"
86 de7a51b7 2023-04-15 mark local commit_id2=`git_show_head $testroot/repo`
87 de7a51b7 2023-04-15 mark
88 de7a51b7 2023-04-15 mark echo "modified alpha again" > $testroot/repo/alpha
89 de7a51b7 2023-04-15 mark echo "new file" > $testroot/repo/new
90 de7a51b7 2023-04-15 mark (cd $testroot/repo && git add new)
91 de7a51b7 2023-04-15 mark git_commit $testroot/repo -m "new file"
92 de7a51b7 2023-04-15 mark local head_id=`git_show_head $testroot/repo`
93 de7a51b7 2023-04-15 mark local head_id_truncated=`trim_obj_id 13 $head_id`
94 de7a51b7 2023-04-15 mark local alpha_id=`get_blob_id $testroot/repo "" alpha`
95 de7a51b7 2023-04-15 mark local new_id=`get_blob_id $testroot/repo "" new`
96 de7a51b7 2023-04-15 mark
97 5bde4759 2023-04-15 mark cat <<EOF >$TOG_TEST_SCRIPT
98 de7a51b7 2023-04-15 mark SCREENDUMP
99 de7a51b7 2023-04-15 mark EOF
100 de7a51b7 2023-04-15 mark
101 de7a51b7 2023-04-15 mark cat <<EOF >$testroot/view.expected
102 de7a51b7 2023-04-15 mark [1/16] diff $commit_id1 $head_id_truncated
103 de7a51b7 2023-04-15 mark commit - $commit_id1
104 de7a51b7 2023-04-15 mark commit + $head_id
105 de7a51b7 2023-04-15 mark blob - $alpha_id_old
106 de7a51b7 2023-04-15 mark blob + $alpha_id
107 de7a51b7 2023-04-15 mark --- alpha
108 de7a51b7 2023-04-15 mark +++ alpha
109 de7a51b7 2023-04-15 mark @@ -1 +1 @@
110 de7a51b7 2023-04-15 mark -alpha
111 de7a51b7 2023-04-15 mark +modified alpha again
112 de7a51b7 2023-04-15 mark blob - /dev/null
113 de7a51b7 2023-04-15 mark blob + $new_id (mode 644)
114 de7a51b7 2023-04-15 mark --- /dev/null
115 de7a51b7 2023-04-15 mark +++ new
116 de7a51b7 2023-04-15 mark @@ -0,0 +1 @@
117 de7a51b7 2023-04-15 mark +new file
118 de7a51b7 2023-04-15 mark
119 de7a51b7 2023-04-15 mark (END)
120 de7a51b7 2023-04-15 mark EOF
121 de7a51b7 2023-04-15 mark
122 de7a51b7 2023-04-15 mark cd $testroot/repo && tog diff $commit_id1 $head_id
123 de7a51b7 2023-04-15 mark cmp -s $testroot/view.expected $testroot/view
124 de7a51b7 2023-04-15 mark ret=$?
125 de7a51b7 2023-04-15 mark if [ $ret -ne 0 ]; then
126 de7a51b7 2023-04-15 mark diff -u $testroot/view.expected $testroot/view
127 de7a51b7 2023-04-15 mark test_done "$testroot" "$ret"
128 de7a51b7 2023-04-15 mark return 1
129 de7a51b7 2023-04-15 mark fi
130 de7a51b7 2023-04-15 mark
131 de7a51b7 2023-04-15 mark test_done "$testroot" "$ret"
132 de7a51b7 2023-04-15 mark }
133 de7a51b7 2023-04-15 mark
134 c671dc65 2023-04-24 mark test_diff_J_keymap_on_last_loaded_commit()
135 c671dc65 2023-04-24 mark {
136 c671dc65 2023-04-24 mark test_init diff_J_keymap_on_last_loaded_commit 94 24
137 c671dc65 2023-04-24 mark
138 c671dc65 2023-04-24 mark local i=0
139 c671dc65 2023-04-24 mark
140 c671dc65 2023-04-24 mark cd $testroot/repo
141 c671dc65 2023-04-24 mark
142 c671dc65 2023-04-24 mark while [ "$i" -lt 32 ]; do
143 c671dc65 2023-04-24 mark echo $i > alpha
144 c671dc65 2023-04-24 mark git commit -aqm $i
145 c671dc65 2023-04-24 mark if [ $i -eq 6 ]; then
146 c671dc65 2023-04-24 mark local id6=$(git_show_head .)
147 c671dc65 2023-04-24 mark local blobid6=$(get_blob_id . "" alpha)
148 c671dc65 2023-04-24 mark elif [ $i -eq 7 ]; then
149 c671dc65 2023-04-24 mark local id7=$(git_show_head .)
150 c671dc65 2023-04-24 mark local blobid7=$(get_blob_id . "" alpha)
151 c671dc65 2023-04-24 mark local author_time=$(git_show_author_time .)
152 c671dc65 2023-04-24 mark fi
153 c671dc65 2023-04-24 mark i=$(( i + 1 ))
154 c671dc65 2023-04-24 mark done
155 c671dc65 2023-04-24 mark
156 c671dc65 2023-04-24 mark local date=`date -u -r $author_time +"%a %b %e %X %Y UTC"`
157 c671dc65 2023-04-24 mark
158 c671dc65 2023-04-24 mark cat <<EOF >$TOG_TEST_SCRIPT
159 c671dc65 2023-04-24 mark KEY_ENTER open diff view of selected commit
160 c671dc65 2023-04-24 mark S toggle horizontal split
161 c671dc65 2023-04-24 mark TAB tab back to log view
162 c671dc65 2023-04-24 mark 23j move to last loaded commit
163 c671dc65 2023-04-24 mark KEY_ENTER select last loaded commit
164 c671dc65 2023-04-24 mark F toggle fullscreen
165 c671dc65 2023-04-24 mark J move down to next commit in the log
166 c671dc65 2023-04-24 mark SCREENDUMP
167 c671dc65 2023-04-24 mark EOF
168 c671dc65 2023-04-24 mark
169 c671dc65 2023-04-24 mark cat <<EOF >$testroot/view.expected
170 c671dc65 2023-04-24 mark [1/20] diff $id6 $id7
171 c671dc65 2023-04-24 mark commit $id7
172 c671dc65 2023-04-24 mark from: Flan Hacker <flan_hacker@openbsd.org>
173 c671dc65 2023-04-24 mark date: $date
174 c671dc65 2023-04-24 mark
175 c671dc65 2023-04-24 mark 7
176 c671dc65 2023-04-24 mark
177 c671dc65 2023-04-24 mark M alpha | 1+ 1-
178 c671dc65 2023-04-24 mark
179 c671dc65 2023-04-24 mark 1 file changed, 1 insertion(+), 1 deletion(-)
180 c671dc65 2023-04-24 mark
181 c671dc65 2023-04-24 mark commit - $id6
182 c671dc65 2023-04-24 mark commit + $id7
183 c671dc65 2023-04-24 mark blob - $blobid6
184 c671dc65 2023-04-24 mark blob + $blobid7
185 c671dc65 2023-04-24 mark --- alpha
186 c671dc65 2023-04-24 mark +++ alpha
187 c671dc65 2023-04-24 mark @@ -1 +1 @@
188 c671dc65 2023-04-24 mark -6
189 c671dc65 2023-04-24 mark +7
190 c671dc65 2023-04-24 mark
191 c671dc65 2023-04-24 mark
192 c671dc65 2023-04-24 mark
193 c671dc65 2023-04-24 mark (END)
194 c671dc65 2023-04-24 mark EOF
195 c671dc65 2023-04-24 mark
196 c671dc65 2023-04-24 mark tog log
197 c671dc65 2023-04-24 mark cmp -s $testroot/view.expected $testroot/view
198 c671dc65 2023-04-24 mark ret=$?
199 c671dc65 2023-04-24 mark if [ $ret -ne 0 ]; then
200 c671dc65 2023-04-24 mark diff -u $testroot/view.expected $testroot/view
201 c671dc65 2023-04-24 mark test_done "$testroot" "$ret"
202 c671dc65 2023-04-24 mark return 1
203 c671dc65 2023-04-24 mark fi
204 c671dc65 2023-04-24 mark
205 c671dc65 2023-04-24 mark test_done "$testroot" "$ret"
206 c671dc65 2023-04-24 mark }
207 c671dc65 2023-04-24 mark
208 de7a51b7 2023-04-15 mark test_parseargs "$@"
209 de7a51b7 2023-04-15 mark run_test test_diff_contiguous_commits
210 de7a51b7 2023-04-15 mark run_test test_diff_arbitrary_commits
211 c671dc65 2023-04-24 mark run_test test_diff_J_keymap_on_last_loaded_commit