Git fork
at reftables-rust 101 lines 2.1 kB view raw
1#!/bin/sh 2 3test_description='rewrite diff' 4 5. ./test-lib.sh 6. "$TEST_DIRECTORY"/lib-diff-data.sh 7 8test_expect_success setup ' 9 10 COPYING_test_data >test.data && 11 cp test.data test && 12 git add test && 13 tr \ 14 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" \ 15 "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" \ 16 <test.data >test && 17 echo "to be deleted" >test2 && 18 blob=$(git hash-object test2) && 19 blob=$(git rev-parse --short $blob) && 20 git add test2 21 22' 23 24test_expect_success 'detect rewrite' ' 25 26 actual=$(git diff-files -B --summary test) && 27 expr "$actual" : " rewrite test ([0-9]*%)$" 28 29' 30 31cat >expect <<EOF 32diff --git a/test2 b/test2 33deleted file mode 100644 34index $blob..0000000 35--- a/test2 36+++ /dev/null 37@@ -1 +0,0 @@ 38-to be deleted 39EOF 40test_expect_success 'show deletion diff without -D' ' 41 42 rm test2 && 43 git diff -- test2 >actual && 44 test_cmp expect actual 45' 46 47cat >expect <<EOF 48diff --git a/test2 b/test2 49deleted file mode 100644 50index $blob..0000000 51EOF 52test_expect_success 'suppress deletion diff with -D' ' 53 54 git diff -D -- test2 >actual && 55 test_cmp expect actual 56' 57 58test_expect_success 'show deletion diff with -B' ' 59 60 git diff -B -- test >actual && 61 grep "Linus Torvalds" actual 62' 63 64test_expect_success 'suppress deletion diff with -B -D' ' 65 66 git diff -B -D -- test >actual && 67 grep -v "Linus Torvalds" actual 68' 69 70test_expect_success 'prepare a file that ends with an incomplete line' ' 71 test_seq 1 99 >seq && 72 printf 100 >>seq && 73 git add seq && 74 git commit seq -m seq 75' 76 77test_expect_success 'rewrite the middle 90% of sequence file and terminate with newline' ' 78 test_seq 1 5 >seq && 79 test_seq 9331 9420 >>seq && 80 test_seq 96 100 >>seq 81' 82 83test_expect_success 'confirm that sequence file is considered a rewrite' ' 84 git diff -B seq >res && 85 grep "dissimilarity index" res 86' 87 88test_expect_success 'no newline at eof is on its own line without -B' ' 89 git diff seq >res && 90 grep "^\\\\ " res && 91 ! grep "^..*\\\\ " res 92' 93 94test_expect_success 'no newline at eof is on its own line with -B' ' 95 git diff -B seq >res && 96 grep "^\\\\ " res && 97 ! grep "^..*\\\\ " res 98' 99 100test_done 101