]> git.ipfire.org Git - thirdparty/git.git/blob - t/t4000-diff-format.sh
Merge branch 'en/fetch-negotiation-default-fix'
[thirdparty/git.git] / t / t4000-diff-format.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2005 Junio C Hamano
4 #
5
6 test_description='Test built-in diff output engine.
7
8 '
9
10 TEST_PASSES_SANITIZE_LEAK=true
11 . ./test-lib.sh
12 . "$TEST_DIRECTORY"/lib-diff.sh
13
14 echo >path0 'Line 1
15 Line 2
16 line 3'
17 cat path0 >path1
18 chmod +x path1
19
20 test_expect_success 'update-index --add two files with and without +x.' '
21 git update-index --add path0 path1
22 '
23
24 mv path0 path0-
25 sed -e 's/line/Line/' <path0- >path0
26 chmod +x path0
27 rm -f path1
28 test_expect_success 'git diff-files -p after editing work tree.' '
29 git diff-files -p >actual
30 '
31
32 # that's as far as it comes
33 if [ "$(git config --get core.filemode)" = false ]
34 then
35 say 'filemode disabled on the filesystem'
36 test_done
37 fi
38
39 cat >expected <<\EOF
40 diff --git a/path0 b/path0
41 old mode 100644
42 new mode 100755
43 --- a/path0
44 +++ b/path0
45 @@ -1,3 +1,3 @@
46 Line 1
47 Line 2
48 -line 3
49 +Line 3
50 diff --git a/path1 b/path1
51 deleted file mode 100755
52 --- a/path1
53 +++ /dev/null
54 @@ -1,3 +0,0 @@
55 -Line 1
56 -Line 2
57 -line 3
58 EOF
59
60 test_expect_success 'validate git diff-files -p output.' '
61 compare_diff_patch expected actual
62 '
63
64 test_expect_success 'git diff-files -s after editing work tree' '
65 git diff-files -s >actual 2>err &&
66 test_must_be_empty actual &&
67 test_must_be_empty err
68 '
69
70 test_expect_success 'git diff-files --no-patch as synonym for -s' '
71 git diff-files --no-patch >actual 2>err &&
72 test_must_be_empty actual &&
73 test_must_be_empty err
74 '
75
76 test_expect_success 'git diff-files --no-patch --patch shows the patch' '
77 git diff-files --no-patch --patch >actual &&
78 compare_diff_patch expected actual
79 '
80
81 test_expect_success 'git diff-files --no-patch --patch-with-raw shows the patch and raw data' '
82 git diff-files --no-patch --patch-with-raw >actual &&
83 grep -q "^:100644 100755 .* $ZERO_OID M path0\$" actual &&
84 tail -n +4 actual >actual-patch &&
85 compare_diff_patch expected actual-patch
86 '
87
88 test_expect_success 'git diff-files --patch --no-patch does not show the patch' '
89 git diff-files --patch --no-patch >actual 2>err &&
90 test_must_be_empty actual &&
91 test_must_be_empty err
92 '
93
94 test_done