Blame


1 c5f4d357 2023-04-22 thomas #!/bin/sh
2 c5f4d357 2023-04-22 thomas #
3 c5f4d357 2023-04-22 thomas # Copyright (c) 2023 Mark Jamsek <mark@jamsek.dev>
4 c5f4d357 2023-04-22 thomas #
5 c5f4d357 2023-04-22 thomas # Permission to use, copy, modify, and distribute this software for any
6 c5f4d357 2023-04-22 thomas # purpose with or without fee is hereby granted, provided that the above
7 c5f4d357 2023-04-22 thomas # copyright notice and this permission notice appear in all copies.
8 c5f4d357 2023-04-22 thomas #
9 c5f4d357 2023-04-22 thomas # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 c5f4d357 2023-04-22 thomas # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 c5f4d357 2023-04-22 thomas # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 c5f4d357 2023-04-22 thomas # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 c5f4d357 2023-04-22 thomas # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 c5f4d357 2023-04-22 thomas # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 c5f4d357 2023-04-22 thomas # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 c5f4d357 2023-04-22 thomas
17 c5f4d357 2023-04-22 thomas . ./common.sh
18 c5f4d357 2023-04-22 thomas
19 c5f4d357 2023-04-22 thomas test_diff_contiguous_commits()
20 c5f4d357 2023-04-22 thomas {
21 c5f4d357 2023-04-22 thomas test_init diff_contiguous_commits
22 c5f4d357 2023-04-22 thomas
23 c5f4d357 2023-04-22 thomas local commit_id1=`git_show_head $testroot/repo`
24 c5f4d357 2023-04-22 thomas local alpha_id_old=`get_blob_id $testroot/repo "" alpha`
25 c5f4d357 2023-04-22 thomas
26 c5f4d357 2023-04-22 thomas echo "modified alpha" > $testroot/repo/alpha
27 c5f4d357 2023-04-22 thomas git_commit $testroot/repo -m "changed alpha"
28 c5f4d357 2023-04-22 thomas local author_time=`git_show_author_time $testroot/repo`
29 c5f4d357 2023-04-22 thomas local date=`date -u -r $author_time +"%a %b %e %X %Y UTC"`
30 c5f4d357 2023-04-22 thomas local head_id=`git_show_head $testroot/repo`
31 c5f4d357 2023-04-22 thomas local head_id_truncated=`trim_obj_id 13 $head_id`
32 c5f4d357 2023-04-22 thomas local alpha_id=`get_blob_id $testroot/repo "" alpha`
33 c5f4d357 2023-04-22 thomas
34 fa9bb690 2023-04-22 thomas cat <<EOF >$TOG_TEST_SCRIPT
35 c5f4d357 2023-04-22 thomas SCREENDUMP
36 c5f4d357 2023-04-22 thomas EOF
37 c5f4d357 2023-04-22 thomas
38 c5f4d357 2023-04-22 thomas cat <<EOF >$testroot/view.expected
39 c5f4d357 2023-04-22 thomas [1/20] diff $commit_id1 $head_id_truncated
40 c5f4d357 2023-04-22 thomas commit $head_id (master)
41 c5f4d357 2023-04-22 thomas from: Flan Hacker <flan_hacker@openbsd.org>
42 c5f4d357 2023-04-22 thomas date: $date
43 c5f4d357 2023-04-22 thomas
44 c5f4d357 2023-04-22 thomas changed alpha
45 c5f4d357 2023-04-22 thomas
46 c5f4d357 2023-04-22 thomas M alpha | 1+ 1-
47 c5f4d357 2023-04-22 thomas
48 c5f4d357 2023-04-22 thomas 1 file changed, 1 insertion(+), 1 deletion(-)
49 c5f4d357 2023-04-22 thomas
50 c5f4d357 2023-04-22 thomas commit - $commit_id1
51 c5f4d357 2023-04-22 thomas commit + $head_id
52 c5f4d357 2023-04-22 thomas blob - $alpha_id_old
53 c5f4d357 2023-04-22 thomas blob + $alpha_id
54 c5f4d357 2023-04-22 thomas --- alpha
55 c5f4d357 2023-04-22 thomas +++ alpha
56 c5f4d357 2023-04-22 thomas @@ -1 +1 @@
57 c5f4d357 2023-04-22 thomas -alpha
58 c5f4d357 2023-04-22 thomas +modified alpha
59 c5f4d357 2023-04-22 thomas
60 c5f4d357 2023-04-22 thomas
61 c5f4d357 2023-04-22 thomas
62 c5f4d357 2023-04-22 thomas (END)
63 c5f4d357 2023-04-22 thomas EOF
64 c5f4d357 2023-04-22 thomas
65 c5f4d357 2023-04-22 thomas cd $testroot/repo && tog diff $commit_id1 $head_id
66 c5f4d357 2023-04-22 thomas cmp -s $testroot/view.expected $testroot/view
67 c5f4d357 2023-04-22 thomas ret=$?
68 c5f4d357 2023-04-22 thomas if [ $ret -ne 0 ]; then
69 c5f4d357 2023-04-22 thomas diff -u $testroot/view.expected $testroot/view
70 c5f4d357 2023-04-22 thomas test_done "$testroot" "$ret"
71 c5f4d357 2023-04-22 thomas return 1
72 c5f4d357 2023-04-22 thomas fi
73 c5f4d357 2023-04-22 thomas
74 c5f4d357 2023-04-22 thomas test_done "$testroot" "$ret"
75 c5f4d357 2023-04-22 thomas }
76 c5f4d357 2023-04-22 thomas
77 c5f4d357 2023-04-22 thomas test_diff_arbitrary_commits()
78 c5f4d357 2023-04-22 thomas {
79 c5f4d357 2023-04-22 thomas test_init diff_arbitrary_commits 80 18
80 c5f4d357 2023-04-22 thomas
81 c5f4d357 2023-04-22 thomas local commit_id1=`git_show_head $testroot/repo`
82 c5f4d357 2023-04-22 thomas local alpha_id_old=`get_blob_id $testroot/repo "" alpha`
83 c5f4d357 2023-04-22 thomas
84 c5f4d357 2023-04-22 thomas echo "modified alpha" > $testroot/repo/alpha
85 c5f4d357 2023-04-22 thomas git_commit $testroot/repo -m "changed alpha"
86 c5f4d357 2023-04-22 thomas local commit_id2=`git_show_head $testroot/repo`
87 c5f4d357 2023-04-22 thomas
88 c5f4d357 2023-04-22 thomas echo "modified alpha again" > $testroot/repo/alpha
89 c5f4d357 2023-04-22 thomas echo "new file" > $testroot/repo/new
90 c5f4d357 2023-04-22 thomas (cd $testroot/repo && git add new)
91 c5f4d357 2023-04-22 thomas git_commit $testroot/repo -m "new file"
92 c5f4d357 2023-04-22 thomas local head_id=`git_show_head $testroot/repo`
93 c5f4d357 2023-04-22 thomas local head_id_truncated=`trim_obj_id 13 $head_id`
94 c5f4d357 2023-04-22 thomas local alpha_id=`get_blob_id $testroot/repo "" alpha`
95 c5f4d357 2023-04-22 thomas local new_id=`get_blob_id $testroot/repo "" new`
96 c5f4d357 2023-04-22 thomas
97 fa9bb690 2023-04-22 thomas cat <<EOF >$TOG_TEST_SCRIPT
98 c5f4d357 2023-04-22 thomas SCREENDUMP
99 c5f4d357 2023-04-22 thomas EOF
100 c5f4d357 2023-04-22 thomas
101 c5f4d357 2023-04-22 thomas cat <<EOF >$testroot/view.expected
102 c5f4d357 2023-04-22 thomas [1/16] diff $commit_id1 $head_id_truncated
103 c5f4d357 2023-04-22 thomas commit - $commit_id1
104 c5f4d357 2023-04-22 thomas commit + $head_id
105 c5f4d357 2023-04-22 thomas blob - $alpha_id_old
106 c5f4d357 2023-04-22 thomas blob + $alpha_id
107 c5f4d357 2023-04-22 thomas --- alpha
108 c5f4d357 2023-04-22 thomas +++ alpha
109 c5f4d357 2023-04-22 thomas @@ -1 +1 @@
110 c5f4d357 2023-04-22 thomas -alpha
111 c5f4d357 2023-04-22 thomas +modified alpha again
112 c5f4d357 2023-04-22 thomas blob - /dev/null
113 c5f4d357 2023-04-22 thomas blob + $new_id (mode 644)
114 c5f4d357 2023-04-22 thomas --- /dev/null
115 c5f4d357 2023-04-22 thomas +++ new
116 c5f4d357 2023-04-22 thomas @@ -0,0 +1 @@
117 c5f4d357 2023-04-22 thomas +new file
118 c5f4d357 2023-04-22 thomas
119 c5f4d357 2023-04-22 thomas (END)
120 c5f4d357 2023-04-22 thomas EOF
121 c5f4d357 2023-04-22 thomas
122 c5f4d357 2023-04-22 thomas cd $testroot/repo && tog diff $commit_id1 $head_id
123 c5f4d357 2023-04-22 thomas cmp -s $testroot/view.expected $testroot/view
124 c5f4d357 2023-04-22 thomas ret=$?
125 c5f4d357 2023-04-22 thomas if [ $ret -ne 0 ]; then
126 c5f4d357 2023-04-22 thomas diff -u $testroot/view.expected $testroot/view
127 c5f4d357 2023-04-22 thomas test_done "$testroot" "$ret"
128 c5f4d357 2023-04-22 thomas return 1
129 c5f4d357 2023-04-22 thomas fi
130 c5f4d357 2023-04-22 thomas
131 c5f4d357 2023-04-22 thomas test_done "$testroot" "$ret"
132 c5f4d357 2023-04-22 thomas }
133 c5f4d357 2023-04-22 thomas
134 c5f4d357 2023-04-22 thomas test_parseargs "$@"
135 c5f4d357 2023-04-22 thomas run_test test_diff_contiguous_commits
136 c5f4d357 2023-04-22 thomas run_test test_diff_arbitrary_commits