3 test_description
='test direct comparison of blobs via git-diff'
7 # use full-index to make it easy to match the index line
8 git
diff --full-index "$@" >diff
12 grep "^index $1\\.\\.$2" diff
16 grep "^old mode $1" diff &&
17 grep "^new mode $2" diff
21 grep "^diff --git a/$1 b/$2" diff
24 test_expect_success
'create some blobs' '
30 # cover systems where modes are ignored
31 git update-index --chmod=+x two &&
35 sha1_one=$(git rev-parse HEAD:one) &&
36 sha1_two=$(git rev-parse HEAD:two)
39 test_expect_success
'diff by sha1' '
40 run_diff $sha1_one $sha1_two
42 test_expect_success
'index of sha1 diff' '
43 check_index $sha1_one $sha1_two
45 test_expect_success
'sha1 diff uses arguments as paths' '
46 check_paths $sha1_one $sha1_two
48 test_expect_success
'sha1 diff has no mode change' '
52 test_expect_success
'diff by tree:path (run)' '
53 run_diff HEAD:one HEAD:two
55 test_expect_success
'index of tree:path diff' '
56 check_index $sha1_one $sha1_two
58 test_expect_success
'tree:path diff uses filenames as paths' '
61 test_expect_success
'tree:path diff shows mode change' '
62 check_mode 100644 100755
65 test_expect_success
'diff by ranged tree:path' '
66 run_diff HEAD:one..HEAD:two
68 test_expect_success
'index of ranged tree:path diff' '
69 check_index $sha1_one $sha1_two
71 test_expect_success
'ranged tree:path diff uses filenames as paths' '
74 test_expect_success
'ranged tree:path diff shows mode change' '
75 check_mode 100644 100755
78 test_expect_success
'diff blob against file' '
81 test_expect_success
'index of blob-file diff' '
82 check_index $sha1_one $sha1_two
84 test_expect_success
'blob-file diff uses filename as paths' '
87 test_expect_success FILEMODE
'blob-file diff shows mode change' '
88 check_mode 100644 100755
91 test_expect_success
'blob-file diff prefers filename to sha1' '
92 run_diff $sha1_one two &&