Fourth batch
[gitweb.git] / t / t4022-diff-rewrite.sh
index c00a94b9ba4498e72a31856aac9cf653bbce8ba3..6d1c3d949c78bc8fd5a82dbaee519163a8653e86 100755 (executable)
@@ -13,6 +13,8 @@ test_expect_success setup '
          "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" \
          <"$TEST_DIRECTORY"/../COPYING >test &&
        echo "to be deleted" >test2 &&
+       blob=$(git hash-object test2) &&
+       blob=$(git rev-parse --short $blob) &&
        git add test2
 
 '
@@ -20,17 +22,14 @@ test_expect_success setup '
 test_expect_success 'detect rewrite' '
 
        actual=$(git diff-files -B --summary test) &&
-       expr "$actual" : " rewrite test ([0-9]*%)$" || {
-               echo "Eh? <<$actual>>"
-               false
-       }
+       verbose expr "$actual" : " rewrite test ([0-9]*%)$"
 
 '
 
 cat >expect <<EOF
 diff --git a/test2 b/test2
 deleted file mode 100644
-index 4202011..0000000
+index $blob..0000000
 --- a/test2
 +++ /dev/null
 @@ -1 +0,0 @@
@@ -46,7 +45,7 @@ test_expect_success 'show deletion diff without -D' '
 cat >expect <<EOF
 diff --git a/test2 b/test2
 deleted file mode 100644
-index 4202011..0000000
+index $blob..0000000
 EOF
 test_expect_success 'suppress deletion diff with -D' '
 
@@ -66,5 +65,35 @@ test_expect_success 'suppress deletion diff with -B -D' '
        grep -v "Linus Torvalds" actual
 '
 
+test_expect_success 'prepare a file that ends with an incomplete line' '
+       test_seq 1 99 >seq &&
+       printf 100 >>seq &&
+       git add seq &&
+       git commit seq -m seq
+'
+
+test_expect_success 'rewrite the middle 90% of sequence file and terminate with newline' '
+       test_seq 1 5 >seq &&
+       test_seq 9331 9420 >>seq &&
+       test_seq 96 100 >>seq
+'
+
+test_expect_success 'confirm that sequence file is considered a rewrite' '
+       git diff -B seq >res &&
+       grep "dissimilarity index" res
+'
+
+test_expect_success 'no newline at eof is on its own line without -B' '
+       git diff seq >res &&
+       grep "^\\\\ " res &&
+       ! grep "^..*\\\\ " res
+'
+
+test_expect_success 'no newline at eof is on its own line with -B' '
+       git diff -B seq >res &&
+       grep "^\\\\ " res &&
+       ! grep "^..*\\\\ " res
+'
+
 test_done