blob: 0e915b78a6e971f0b65e83a65fc0ccd0db8e150a [file] [log] [blame] [edit]
#!/bin/sh
test_description='shifted diff groups re-diffing during histogram diff'
. ./test-lib.sh
test_expect_success 'shifted diff group should re-diff to minimize patch' '
test_write_lines A x A A A x A A A >file1 &&
test_write_lines A x A Z A x A A A >file2 &&
file1_h=$(git rev-parse --short $(git hash-object file1)) &&
file2_h=$(git rev-parse --short $(git hash-object file2)) &&
cat >expect <<-EOF &&
diff --git a/file1 b/file2
index $file1_h..$file2_h 100644
--- a/file1
+++ b/file2
@@ -1,7 +1,7 @@
A
x
A
-A
+Z
A
x
A
EOF
test_expect_code 1 git diff --no-index --histogram file1 file2 >output &&
test_cmp expect output
'
test_expect_success 're-diff should preserve diff flags' '
test_write_lines a b c a b c >file1 &&
test_write_lines x " b" z a b c >file2 &&
file1_h=$(git rev-parse --short $(git hash-object file1)) &&
file2_h=$(git rev-parse --short $(git hash-object file2)) &&
cat >expect <<-EOF &&
diff --git a/file1 b/file2
index $file1_h..$file2_h 100644
--- a/file1
+++ b/file2
@@ -1,6 +1,6 @@
-a
-b
-c
+x
+ b
+z
a
b
c
EOF
test_expect_code 1 git diff --no-index --histogram file1 file2 >output &&
test_cmp expect output &&
cat >expect_iwhite <<-EOF &&
diff --git a/file1 b/file2
index $file1_h..$file2_h 100644
--- a/file1
+++ b/file2
@@ -1,6 +1,6 @@
-a
+x
b
-c
+z
a
b
c
EOF
test_expect_code 1 git diff --no-index --histogram --ignore-all-space file1 file2 >output_iwhite &&
test_cmp expect_iwhite output_iwhite
'
test_expect_success 'shifting on either side should trigger re-diff properly' '
test_write_lines a b c a b c a b c >file1 &&
test_write_lines a b c a1 a2 a3 b c1 a b c >file2 &&
file1_h=$(git rev-parse --short $(git hash-object file1)) &&
file2_h=$(git rev-parse --short $(git hash-object file2)) &&
cat >expect1 <<-EOF &&
diff --git a/file1 b/file2
index $file1_h..$file2_h 100644
--- a/file1
+++ b/file2
@@ -1,9 +1,11 @@
a
b
c
-a
+a1
+a2
+a3
b
-c
+c1
a
b
c
EOF
test_expect_code 1 git diff --no-index --histogram file1 file2 >output1 &&
test_cmp expect1 output1 &&
cat >expect2 <<-EOF &&
diff --git a/file2 b/file1
index $file2_h..$file1_h 100644
--- a/file2
+++ b/file1
@@ -1,11 +1,9 @@
a
b
c
-a1
-a2
-a3
+a
b
-c1
+c
a
b
c
EOF
test_expect_code 1 git diff --no-index --histogram file2 file1 >output2 &&
test_cmp expect2 output2
'
test_done