@@ -8,7 +8,8 @@ test_expect_success 'setup' '
88 echo content >file1 &&
99 mkdir subdir &&
1010 echo other content >subdir/file2 &&
11- blob=$(git hash-object subdir/file2) &&
11+ blob_file1=$(git hash-object file1) &&
12+ blob_file2=$(git hash-object subdir/file2) &&
1213 git add . &&
1314 git commit -m one
1415'
@@ -18,7 +19,7 @@ check_diff () {
1819 shift
1920 expect=$1
2021 shift
21- short_blob=$( git rev-parse --short $blob )
22+ short_blob=$( git rev-parse --short $blob_file2 )
2223 cat > expected << -EOF
2324 diff --git a/$expect b/$expect
2425 new file mode 100644
@@ -70,7 +71,7 @@ check_raw () {
7071 expect=$1
7172 shift
7273 cat > expected << -EOF
73- :000000 100644 $ZERO_OID $blob A $expect
74+ :000000 100644 $ZERO_OID $blob_file2 A $expect
7475 EOF
7576 test_expect_success " --raw $* " "
7677 git -C '$dir ' diff --no-abbrev --raw $* HEAD^ >actual &&
8687 check_$type . dir/file2 --relative=sub
8788done
8889
90+ check_diff_relative_option () {
91+ dir=$1
92+ shift
93+ expect=$1
94+ shift
95+ relative_opt=$1
96+ shift
97+ test_expect_success " config diff.relative $relative_opt -p $* " "
98+ short_blob=\$ (git rev-parse --short $blob_file2 ) &&
99+ cat >expected <<-EOF &&
100+ diff --git a/$expect b/$expect
101+ new file mode 100644
102+ index 0000000..\$ short_blob
103+ --- /dev/null
104+ +++ b/$expect
105+ @@ -0,0 +1 @@
106+ +other content
107+ EOF
108+ test_config -C $dir diff.relative $relative_opt &&
109+ git -C '$dir ' diff -p $* HEAD^ >actual &&
110+ test_cmp expected actual
111+ "
112+ }
113+
114+ check_diff_no_relative_option () {
115+ dir=$1
116+ shift
117+ expect=$1
118+ shift
119+ relative_opt=$1
120+ shift
121+ test_expect_success " config diff.relative $relative_opt -p $* " "
122+ short_blob_file1=\$ (git rev-parse --short $blob_file1 ) &&
123+ short_blob_file2=\$ (git rev-parse --short $blob_file2 ) &&
124+ cat >expected <<-EOF &&
125+ diff --git a/file1 b/file1
126+ new file mode 100644
127+ index 0000000..\$ short_blob_file1
128+ --- /dev/null
129+ +++ b/file1
130+ @@ -0,0 +1 @@
131+ +content
132+ diff --git a/$expect b/$expect
133+ new file mode 100644
134+ index 0000000..\$ short_blob_file2
135+ --- /dev/null
136+ +++ b/$expect
137+ @@ -0,0 +1 @@
138+ +other content
139+ EOF
140+ test_config -C $dir diff.relative $relative_opt &&
141+ git -C '$dir ' diff -p $* HEAD^ >actual &&
142+ test_cmp expected actual
143+ "
144+ }
145+
146+ check_diff_no_relative_option . subdir/file2 false
147+ check_diff_no_relative_option . subdir/file2 true --no-relative
148+ check_diff_no_relative_option . subdir/file2 false --no-relative
149+ check_diff_no_relative_option subdir subdir/file2 false
150+ check_diff_no_relative_option subdir subdir/file2 true --no-relative
151+ check_diff_no_relative_option subdir subdir/file2 false --no-relative
152+
153+ check_diff_relative_option . file2 false --relative=subdir/
154+ check_diff_relative_option . file2 false --relative=subdir
155+ check_diff_relative_option . file2 true --relative=subdir/
156+ check_diff_relative_option . file2 true --relative=subdir
157+ check_diff_relative_option subdir file2 false --relative
158+ check_diff_relative_option subdir file2 true --relative
159+ check_diff_relative_option subdir file2 true
160+ check_diff_relative_option subdir file2 false --no-relative --relative
161+ check_diff_relative_option subdir file2 true --no-relative --relative
162+ check_diff_relative_option . file2 false --no-relative --relative=subdir
163+ check_diff_relative_option . file2 true --no-relative --relative=subdir
164+
89165test_done
0 commit comments