diff-highlight: add some tests
[git.git] / contrib / diff-highlight / t / t9400-diff-highlight.sh
blob446b4daed873fed06f8a6ca09195016ab816f9cc
1 #!/bin/sh
3 test_description='Test diff-highlight'
5 CURR_DIR=$(pwd)
6 TEST_OUTPUT_DIRECTORY=$(pwd)
7 TEST_DIRECTORY="$CURR_DIR"/../../../t
8 DIFF_HIGHLIGHT="$CURR_DIR"/../diff-highlight
10 CW="$(printf "\033[7m")" # white
11 CR="$(printf "\033[27m")" # reset
13 . "$TEST_DIRECTORY"/test-lib.sh
15 if ! test_have_prereq PERL
16 then
17 skip_all='skipping diff-highlight tests; perl not available'
18 test_done
21 # dh_test is a test helper function which takes 3 file names as parameters. The
22 # first 2 files are used to generate diff and commit output, which is then
23 # piped through diff-highlight. The 3rd file should contain the expected output
24 # of diff-highlight (minus the diff/commit header, ie. everything after and
25 # including the first @@ line).
26 dh_test () {
27 a="$1" b="$2" &&
29 cat >patch.exp &&
32 cat "$a" >file &&
33 git add file &&
34 git commit -m "Add a file" &&
36 cat "$b" >file &&
37 git diff file >diff.raw &&
38 git commit -a -m "Update a file" &&
39 git show >commit.raw
40 } >/dev/null &&
42 "$DIFF_HIGHLIGHT" <diff.raw | test_strip_patch_header >diff.act &&
43 "$DIFF_HIGHLIGHT" <commit.raw | test_strip_patch_header >commit.act &&
44 test_cmp patch.exp diff.act &&
45 test_cmp patch.exp commit.act
48 test_strip_patch_header () {
49 sed -n '/^@@/,$p' $*
52 test_expect_success 'diff-highlight highlights the beginning of a line' '
53 cat >a <<-\EOF &&
54 aaa
55 bbb
56 ccc
57 EOF
59 cat >b <<-\EOF &&
60 aaa
61 0bb
62 ccc
63 EOF
65 dh_test a b <<-EOF
66 @@ -1,3 +1,3 @@
67 aaa
68 -${CW}b${CR}bb
69 +${CW}0${CR}bb
70 ccc
71 EOF
74 test_expect_success 'diff-highlight highlights the end of a line' '
75 cat >a <<-\EOF &&
76 aaa
77 bbb
78 ccc
79 EOF
81 cat >b <<-\EOF &&
82 aaa
83 bb0
84 ccc
85 EOF
87 dh_test a b <<-EOF
88 @@ -1,3 +1,3 @@
89 aaa
90 -bb${CW}b${CR}
91 +bb${CW}0${CR}
92 ccc
93 EOF
96 test_expect_success 'diff-highlight highlights the middle of a line' '
97 cat >a <<-\EOF &&
98 aaa
99 bbb
103 cat >b <<-\EOF &&
109 dh_test a b <<-EOF
110 @@ -1,3 +1,3 @@
112 -b${CW}b${CR}b
113 +b${CW}0${CR}b
118 test_expect_success 'diff-highlight does not highlight whole line' '
119 cat >a <<-\EOF &&
125 cat >b <<-\EOF &&
131 dh_test a b <<-EOF
132 @@ -1,3 +1,3 @@
134 -bbb
135 +000
140 test_expect_failure 'diff-highlight highlights mismatched hunk size' '
141 cat >a <<-\EOF &&
146 cat >b <<-\EOF &&
152 dh_test a b <<-EOF
153 @@ -1,3 +1,3 @@
155 -b${CW}b${CR}b
156 +b${CW}0${CR}b
157 +ccc
161 # TODO add multi-byte test
163 test_done