Blob


1 #!/bin/sh
2 #
3 # Copyright (c) 2019 Stefan Sperling <stsp@openbsd.org>
4 #
5 # Permission to use, copy, modify, and distribute this software for any
6 # purpose with or without fee is hereby granted, provided that the above
7 # copyright notice and this permission notice appear in all copies.
8 #
9 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 . ./common.sh
19 function test_diff_basic {
20 local testroot=`test_init diff_basic`
21 local head_rev=`git_show_head $testroot/repo`
23 got checkout $testroot/repo $testroot/wt > /dev/null
24 ret="$?"
25 if [ "$ret" != "0" ]; then
26 test_done "$testroot" "$ret"
27 return 1
28 fi
30 echo "modified alpha" > $testroot/wt/alpha
31 (cd $testroot/wt && got rm beta >/dev/null)
32 echo "new file" > $testroot/wt/new
33 (cd $testroot/wt && got add new >/dev/null)
35 echo "diff $head_rev $testroot/wt" > $testroot/stdout.expected
36 echo -n 'blob - ' >> $testroot/stdout.expected
37 got tree -r $testroot/repo -i | grep 'alpha$' | cut -d' ' -f 1 \
38 >> $testroot/stdout.expected
39 echo 'file + alpha' >> $testroot/stdout.expected
40 echo '--- alpha' >> $testroot/stdout.expected
41 echo '+++ alpha' >> $testroot/stdout.expected
42 echo '@@ -1 +1 @@' >> $testroot/stdout.expected
43 echo '-alpha' >> $testroot/stdout.expected
44 echo '+modified alpha' >> $testroot/stdout.expected
45 echo -n 'blob - ' >> $testroot/stdout.expected
46 got tree -r $testroot/repo -i | grep 'beta$' | cut -d' ' -f 1 \
47 >> $testroot/stdout.expected
48 echo 'file + /dev/null' >> $testroot/stdout.expected
49 echo '--- beta' >> $testroot/stdout.expected
50 echo '+++ beta' >> $testroot/stdout.expected
51 echo '@@ -1 +0,0 @@' >> $testroot/stdout.expected
52 echo '-beta' >> $testroot/stdout.expected
53 echo 'blob - /dev/null' >> $testroot/stdout.expected
54 echo 'file + new' >> $testroot/stdout.expected
55 echo '--- new' >> $testroot/stdout.expected
56 echo '+++ new' >> $testroot/stdout.expected
57 echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
58 echo '+new file' >> $testroot/stdout.expected
60 (cd $testroot/wt && got diff > $testroot/stdout)
61 cmp $testroot/stdout.expected $testroot/stdout
62 ret="$?"
63 if [ "$ret" != "0" ]; then
64 diff -u $testroot/stdout.expected $testroot/stdout
65 fi
66 test_done "$testroot" "$ret"
67 }
69 function test_diff_shows_conflict {
70 local testroot=`test_init diff_shows_conflict 1`
72 echo "1" > $testroot/repo/numbers
73 echo "2" >> $testroot/repo/numbers
74 echo "3" >> $testroot/repo/numbers
75 echo "4" >> $testroot/repo/numbers
76 echo "5" >> $testroot/repo/numbers
77 echo "6" >> $testroot/repo/numbers
78 echo "7" >> $testroot/repo/numbers
79 echo "8" >> $testroot/repo/numbers
80 (cd $testroot/repo && git add numbers)
81 git_commit $testroot/repo -m "added numbers file"
83 got checkout $testroot/repo $testroot/wt > /dev/null
84 ret="$?"
85 if [ "$ret" != "0" ]; then
86 test_done "$testroot" "$ret"
87 return 1
88 fi
90 sed -i 's/2/22/' $testroot/repo/numbers
91 git_commit $testroot/repo -m "modified line 2"
92 local head_rev=`git_show_head $testroot/repo`
94 # modify line 2 in a conflicting way
95 sed -i 's/2/77/' $testroot/wt/numbers
97 echo "C numbers" > $testroot/stdout.expected
98 echo -n "Updated to commit $head_rev" >> $testroot/stdout.expected
99 echo >> $testroot/stdout.expected
101 (cd $testroot/wt && got update > $testroot/stdout)
103 cmp $testroot/stdout.expected $testroot/stdout
104 ret="$?"
105 if [ "$ret" != "0" ]; then
106 diff -u $testroot/stdout.expected $testroot/stdout
107 test_done "$testroot" "$ret"
108 return 1
109 fi
111 echo "diff $head_rev $testroot/wt" > $testroot/stdout.expected
112 echo -n 'blob - ' >> $testroot/stdout.expected
113 got tree -r $testroot/repo -i | grep 'numbers$' | cut -d' ' -f 1 \
114 >> $testroot/stdout.expected
115 echo 'file + numbers' >> $testroot/stdout.expected
116 echo '--- numbers' >> $testroot/stdout.expected
117 echo '+++ numbers' >> $testroot/stdout.expected
118 echo '@@ -1,5 +1,9 @@' >> $testroot/stdout.expected
119 echo ' 1' >> $testroot/stdout.expected
120 echo "+<<<<<<< commit $head_rev" >> $testroot/stdout.expected
121 echo ' 22' >> $testroot/stdout.expected
122 echo '+=======' >> $testroot/stdout.expected
123 echo '+77' >> $testroot/stdout.expected
124 echo '+>>>>>>> numbers' >> $testroot/stdout.expected
125 echo ' 3' >> $testroot/stdout.expected
126 echo ' 4' >> $testroot/stdout.expected
127 echo ' 5' >> $testroot/stdout.expected
129 (cd $testroot/wt && got diff > $testroot/stdout)
131 cmp $testroot/stdout.expected $testroot/stdout
132 ret="$?"
133 if [ "$ret" != "0" ]; then
134 diff -u $testroot/stdout.expected $testroot/stdout
135 fi
136 test_done "$testroot" "$ret"
139 run_test test_diff_basic
140 run_test test_diff_shows_conflict