165 lines
2.9 KiB
Bash
Executable File
165 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='shifted diff groups re-diffing during histogram diff'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'shifted/merged 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 'merged diff group with no shift' '
|
|
test_write_lines A Z B x >file1 &&
|
|
test_write_lines C D x Z E x >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,4 +1,6 @@
|
|
-A
|
|
+C
|
|
+D
|
|
+x
|
|
Z
|
|
-B
|
|
+E
|
|
x
|
|
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
|