Merge branch 'bc/hash-independent-tests-part-6'

Test updates to prepare for SHA-2 transition continues.

* bc/hash-independent-tests-part-6:
  t4048: abstract away SHA-1-specific constants
  t4045: make hash-size independent
  t4044: update test to work with SHA-256
  t4039: abstract away SHA-1-specific constants
  t4038: abstract away SHA-1 specific constants
  t4034: abstract away SHA-1-specific constants
  t4027: make hash-size independent
  t4015: abstract away SHA-1-specific constants
  t4011: abstract away SHA-1-specific constants
  t4010: abstract away SHA-1-specific constants
  t3429: remove SHA1 annotation
  t1305: avoid comparing extensions
  rev-parse: add a --show-object-format option
  t/oid-info: add empty tree and empty blob values
  t/oid-info: allow looking up hash algorithm name
This commit is contained in:
Junio C Hamano 2019-11-10 18:02:17 +09:00
Родитель 57b530125e fa26d5ede6
Коммит 28014c1084
16 изменённых файлов: 278 добавлений и 156 удалений

Просмотреть файл

@ -274,6 +274,13 @@ print a message to stderr and exit with nonzero status.
Show the path to the shared index file in split index mode, or Show the path to the shared index file in split index mode, or
empty if not in split-index mode. empty if not in split-index mode.
--show-object-format[=(storage|input|output)]::
Show the object format (hash algorithm) used for the repository
for storage inside the `.git` directory, input, or output. For
input, multiple algorithms may be printed, space-separated.
If not specified, the default is "storage".
Other Options Other Options
~~~~~~~~~~~~~ ~~~~~~~~~~~~~

Просмотреть файл

@ -919,6 +919,17 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
show_datestring("--min-age=", arg); show_datestring("--min-age=", arg);
continue; continue;
} }
if (opt_with_value(arg, "--show-object-format", &arg)) {
const char *val = arg ? arg : "storage";
if (strcmp(val, "storage") &&
strcmp(val, "input") &&
strcmp(val, "output"))
die("unknown mode for --show-object-format: %s",
arg);
puts(the_hash_algo->name);
continue;
}
if (show_flag(arg) && verify) if (show_flag(arg) && verify)
die_no_single_rev(quiet); die_no_single_rev(quiet);
continue; continue;

Просмотреть файл

@ -6,3 +6,12 @@ hexsz sha256:64
zero sha1:0000000000000000000000000000000000000000 zero sha1:0000000000000000000000000000000000000000
zero sha256:0000000000000000000000000000000000000000000000000000000000000000 zero sha256:0000000000000000000000000000000000000000000000000000000000000000
algo sha1:sha1
algo sha256:sha256
empty_blob sha1:e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
empty_blob sha256:473a0f4c3be8a93681a267e3b1e9a7dcda1185436fe141f7749120a303721813
empty_tree sha1:4b825dc642cb6eb9a060e54bf8d69288fbee4904
empty_tree sha256:6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321

Просмотреть файл

@ -63,7 +63,7 @@ test_expect_success 'listing includes option and expansion' '
test.one=1 test.one=1
EOF EOF
git config --list >actual.full && git config --list >actual.full &&
grep -v ^core actual.full >actual && grep -v -e ^core -e ^extensions actual.full >actual &&
test_cmp expect actual test_cmp expect actual
' '

Просмотреть файл

@ -59,6 +59,7 @@ test_rev_parse () {
ROOT=$(pwd) ROOT=$(pwd)
test_expect_success 'setup' ' test_expect_success 'setup' '
test_oid_init &&
mkdir -p sub/dir work && mkdir -p sub/dir work &&
cp -R .git repo.git cp -R .git repo.git
' '
@ -131,6 +132,20 @@ test_expect_success 'rev-parse --is-shallow-repository in non-shallow repo' '
test_cmp expect actual test_cmp expect actual
' '
test_expect_success 'rev-parse --show-object-format in repo' '
echo "$(test_oid algo)" >expect &&
git rev-parse --show-object-format >actual &&
test_cmp expect actual &&
git rev-parse --show-object-format=storage >actual &&
test_cmp expect actual &&
git rev-parse --show-object-format=input >actual &&
test_cmp expect actual &&
git rev-parse --show-object-format=output >actual &&
test_cmp expect actual &&
test_must_fail git rev-parse --show-object-format=squeamish-ossifrage 2>err &&
grep "unknown mode for --show-object-format: squeamish-ossifrage" err
'
test_expect_success 'showing the superproject correctly' ' test_expect_success 'showing the superproject correctly' '
git rev-parse --show-superproject-working-tree >out && git rev-parse --show-superproject-working-tree >out &&
test_must_be_empty out && test_must_be_empty out &&

Просмотреть файл

@ -17,7 +17,7 @@ test_expect_success 'rebase exec modifies rebase-todo' '
test -e F test -e F
' '
test_expect_success SHA1 'loose object cache vs re-reading todo list' ' test_expect_success 'loose object cache vs re-reading todo list' '
GIT_REBASE_TODO=.git/rebase-merge/git-rebase-todo && GIT_REBASE_TODO=.git/rebase-merge/git-rebase-todo &&
export GIT_REBASE_TODO && export GIT_REBASE_TODO &&
write_script append-todo.sh <<-\EOS && write_script append-todo.sh <<-\EOS &&

Просмотреть файл

@ -17,11 +17,15 @@ test_expect_success \
'echo frotz >file0 && 'echo frotz >file0 &&
mkdir path1 && mkdir path1 &&
echo rezrov >path1/file1 && echo rezrov >path1/file1 &&
before0=$(git hash-object file0) &&
before1=$(git hash-object path1/file1) &&
git update-index --add file0 path1/file1 && git update-index --add file0 path1/file1 &&
tree=$(git write-tree) && tree=$(git write-tree) &&
echo "$tree" && echo "$tree" &&
echo nitfol >file0 && echo nitfol >file0 &&
echo yomin >path1/file1 && echo yomin >path1/file1 &&
after0=$(git hash-object file0) &&
after1=$(git hash-object path1/file1) &&
git update-index file0 path1/file1' git update-index file0 path1/file1'
cat >expected <<\EOF cat >expected <<\EOF
@ -31,32 +35,32 @@ test_expect_success \
'git diff-index --cached $tree -- path >current && 'git diff-index --cached $tree -- path >current &&
compare_diff_raw current expected' compare_diff_raw current expected'
cat >expected <<\EOF cat >expected <<EOF
:100644 100644 766498d93a4b06057a8e49d23f4068f1170ff38f 0a41e115ab61be0328a19b29f18cdcb49338d516 M path1/file1 :100644 100644 $before1 $after1 M path1/file1
EOF EOF
test_expect_success \ test_expect_success \
'limit to path1 should show path1/file1' \ 'limit to path1 should show path1/file1' \
'git diff-index --cached $tree -- path1 >current && 'git diff-index --cached $tree -- path1 >current &&
compare_diff_raw current expected' compare_diff_raw current expected'
cat >expected <<\EOF cat >expected <<EOF
:100644 100644 766498d93a4b06057a8e49d23f4068f1170ff38f 0a41e115ab61be0328a19b29f18cdcb49338d516 M path1/file1 :100644 100644 $before1 $after1 M path1/file1
EOF EOF
test_expect_success \ test_expect_success \
'limit to path1/ should show path1/file1' \ 'limit to path1/ should show path1/file1' \
'git diff-index --cached $tree -- path1/ >current && 'git diff-index --cached $tree -- path1/ >current &&
compare_diff_raw current expected' compare_diff_raw current expected'
cat >expected <<\EOF cat >expected <<EOF
:100644 100644 766498d93a4b06057a8e49d23f4068f1170ff38f 0a41e115ab61be0328a19b29f18cdcb49338d516 M path1/file1 :100644 100644 $before1 $after1 M path1/file1
EOF EOF
test_expect_success \ test_expect_success \
'"*file1" should show path1/file1' \ '"*file1" should show path1/file1' \
'git diff-index --cached $tree -- "*file1" >current && 'git diff-index --cached $tree -- "*file1" >current &&
compare_diff_raw current expected' compare_diff_raw current expected'
cat >expected <<\EOF cat >expected <<EOF
:100644 100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df dca6b92303befc93086aa025d90a5facd7eb2812 M file0 :100644 100644 $before0 $after0 M file0
EOF EOF
test_expect_success \ test_expect_success \
'limit to file0 should show file0' \ 'limit to file0 should show file0' \

Просмотреть файл

@ -9,11 +9,24 @@ test_description='Test diff of symlinks.
. ./test-lib.sh . ./test-lib.sh
. "$TEST_DIRECTORY"/diff-lib.sh . "$TEST_DIRECTORY"/diff-lib.sh
# Print the short OID of a symlink with the given name.
symlink_oid () {
local oid=$(printf "%s" "$1" | git hash-object --stdin) &&
git rev-parse --short "$oid"
}
# Print the short OID of the given file.
short_oid () {
local oid=$(git hash-object "$1") &&
git rev-parse --short "$oid"
}
test_expect_success 'diff new symlink and file' ' test_expect_success 'diff new symlink and file' '
cat >expected <<-\EOF && symlink=$(symlink_oid xyzzy) &&
cat >expected <<-EOF &&
diff --git a/frotz b/frotz diff --git a/frotz b/frotz
new file mode 120000 new file mode 120000
index 0000000..7c465af index 0000000..$symlink
--- /dev/null --- /dev/null
+++ b/frotz +++ b/frotz
@@ -0,0 +1 @@ @@ -0,0 +1 @@
@ -21,7 +34,7 @@ test_expect_success 'diff new symlink and file' '
\ No newline at end of file \ No newline at end of file
diff --git a/nitfol b/nitfol diff --git a/nitfol b/nitfol
new file mode 100644 new file mode 100644
index 0000000..7c465af index 0000000..$symlink
--- /dev/null --- /dev/null
+++ b/nitfol +++ b/nitfol
@@ -0,0 +1 @@ @@ -0,0 +1 @@
@ -46,10 +59,10 @@ test_expect_success 'diff unchanged symlink and file' '
' '
test_expect_success 'diff removed symlink and file' ' test_expect_success 'diff removed symlink and file' '
cat >expected <<-\EOF && cat >expected <<-EOF &&
diff --git a/frotz b/frotz diff --git a/frotz b/frotz
deleted file mode 120000 deleted file mode 120000
index 7c465af..0000000 index $symlink..0000000
--- a/frotz --- a/frotz
+++ /dev/null +++ /dev/null
@@ -1 +0,0 @@ @@ -1 +0,0 @@
@ -57,7 +70,7 @@ test_expect_success 'diff removed symlink and file' '
\ No newline at end of file \ No newline at end of file
diff --git a/nitfol b/nitfol diff --git a/nitfol b/nitfol
deleted file mode 100644 deleted file mode 100644
index 7c465af..0000000 index $symlink..0000000
--- a/nitfol --- a/nitfol
+++ /dev/null +++ /dev/null
@@ -1 +0,0 @@ @@ -1 +0,0 @@
@ -90,9 +103,10 @@ test_expect_success 'diff identical, but newly created symlink and file' '
' '
test_expect_success 'diff different symlink and file' ' test_expect_success 'diff different symlink and file' '
cat >expected <<-\EOF && new=$(symlink_oid yxyyz) &&
cat >expected <<-EOF &&
diff --git a/frotz b/frotz diff --git a/frotz b/frotz
index 7c465af..df1db54 120000 index $symlink..$new 120000
--- a/frotz --- a/frotz
+++ b/frotz +++ b/frotz
@@ -1 +1 @@ @@ -1 +1 @@
@ -101,7 +115,7 @@ test_expect_success 'diff different symlink and file' '
+yxyyz +yxyyz
\ No newline at end of file \ No newline at end of file
diff --git a/nitfol b/nitfol diff --git a/nitfol b/nitfol
index 7c465af..df1db54 100644 index $symlink..$new 100644
--- a/nitfol --- a/nitfol
+++ b/nitfol +++ b/nitfol
@@ -1 +1 @@ @@ -1 +1 @@
@ -137,14 +151,16 @@ test_expect_success SYMLINKS 'setup symlinks with attributes' '
' '
test_expect_success SYMLINKS 'symlinks do not respect userdiff config by path' ' test_expect_success SYMLINKS 'symlinks do not respect userdiff config by path' '
cat >expect <<-\EOF && file=$(short_oid file.bin) &&
link=$(symlink_oid file.bin) &&
cat >expect <<-EOF &&
diff --git a/file.bin b/file.bin diff --git a/file.bin b/file.bin
new file mode 100644 new file mode 100644
index 0000000..d95f3ad index 0000000..$file
Binary files /dev/null and b/file.bin differ Binary files /dev/null and b/file.bin differ
diff --git a/link.bin b/link.bin diff --git a/link.bin b/link.bin
new file mode 120000 new file mode 120000
index 0000000..dce41ec index 0000000..$link
--- /dev/null --- /dev/null
+++ b/link.bin +++ b/link.bin
@@ -0,0 +1 @@ @@ -0,0 +1 @@

Просмотреть файл

@ -16,6 +16,7 @@ test_expect_success "Ray Lehtiniemi's example" '
} while (0); } while (0);
EOF EOF
git update-index --add x && git update-index --add x &&
before=$(git rev-parse --short $(git hash-object x)) &&
cat <<-\EOF >x && cat <<-\EOF >x &&
do do
@ -24,10 +25,11 @@ test_expect_success "Ray Lehtiniemi's example" '
} }
while (0); while (0);
EOF EOF
after=$(git rev-parse --short $(git hash-object x)) &&
cat <<-\EOF >expect && cat <<-EOF >expect &&
diff --git a/x b/x diff --git a/x b/x
index adf3937..6edc172 100644 index $before..$after 100644
--- a/x --- a/x
+++ b/x +++ b/x
@@ -1,3 +1,5 @@ @@ -1,3 +1,5 @@
@ -61,6 +63,7 @@ test_expect_success 'another test, without options' '
EOF EOF
git update-index x && git update-index x &&
before=$(git rev-parse --short $(git hash-object x)) &&
tr "_" " " <<-\EOF >x && tr "_" " " <<-\EOF >x &&
_ whitespace at beginning _ whitespace at beginning
@ -70,10 +73,11 @@ test_expect_success 'another test, without options' '
unchanged line unchanged line
CR at end CR at end
EOF EOF
after=$(git rev-parse --short $(git hash-object x)) &&
tr "Q_" "\015 " <<-\EOF >expect && tr "Q_" "\015 " <<-EOF >expect &&
diff --git a/x b/x diff --git a/x b/x
index d99af23..22d9f73 100644 index $before..$after 100644
--- a/x --- a/x
+++ b/x +++ b/x
@@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
@ -108,9 +112,9 @@ test_expect_success 'another test, without options' '
git diff -w --ignore-cr-at-eol >out && git diff -w --ignore-cr-at-eol >out &&
test_must_be_empty out && test_must_be_empty out &&
tr "Q_" "\015 " <<-\EOF >expect && tr "Q_" "\015 " <<-EOF >expect &&
diff --git a/x b/x diff --git a/x b/x
index d99af23..22d9f73 100644 index $before..$after 100644
--- a/x --- a/x
+++ b/x +++ b/x
@@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
@ -132,9 +136,9 @@ test_expect_success 'another test, without options' '
git diff -b --ignore-cr-at-eol >out && git diff -b --ignore-cr-at-eol >out &&
test_cmp expect out && test_cmp expect out &&
tr "Q_" "\015 " <<-\EOF >expect && tr "Q_" "\015 " <<-EOF >expect &&
diff --git a/x b/x diff --git a/x b/x
index d99af23..22d9f73 100644 index $before..$after 100644
--- a/x --- a/x
+++ b/x +++ b/x
@@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
@ -154,9 +158,9 @@ test_expect_success 'another test, without options' '
git diff --ignore-space-at-eol --ignore-cr-at-eol >out && git diff --ignore-space-at-eol --ignore-cr-at-eol >out &&
test_cmp expect out && test_cmp expect out &&
tr "Q_" "\015 " <<-\EOF >expect && tr "Q_" "\015 " <<-EOF >expect &&
diff --git a/x b/x diff --git a/x b/x
index_d99af23..22d9f73 100644 index_$before..$after 100644
--- a/x --- a/x
+++ b/x +++ b/x
@@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
@ -786,23 +790,25 @@ test_expect_success 'whitespace-only changes not reported' '
test_must_be_empty actual test_must_be_empty actual
' '
cat <<EOF >expect
diff --git a/x b/z
similarity index NUM%
rename from x
rename to z
index 380c32a..a97b785 100644
EOF
test_expect_success 'whitespace-only changes reported across renames' ' test_expect_success 'whitespace-only changes reported across renames' '
git reset --hard && git reset --hard &&
for i in 1 2 3 4 5 6 7 8 9; do echo "$i$i$i$i$i$i"; done >x && for i in 1 2 3 4 5 6 7 8 9; do echo "$i$i$i$i$i$i"; done >x &&
git add x && git add x &&
before=$(git rev-parse --short $(git hash-object x)) &&
git commit -m "base" && git commit -m "base" &&
sed -e "5s/^/ /" x >z && sed -e "5s/^/ /" x >z &&
git rm x && git rm x &&
git add z && git add z &&
after=$(git rev-parse --short $(git hash-object z)) &&
git diff -w -M --cached | git diff -w -M --cached |
sed -e "/^similarity index /s/[0-9][0-9]*/NUM/" >actual && sed -e "/^similarity index /s/[0-9][0-9]*/NUM/" >actual &&
cat <<-EOF >expect &&
diff --git a/x b/z
similarity index NUM%
rename from x
rename to z
index $before..$after 100644
EOF
test_cmp expect actual test_cmp expect actual
' '
@ -858,13 +864,15 @@ test_expect_success 'diff that introduces a line with only tabs' '
git config core.whitespace blank-at-eol && git config core.whitespace blank-at-eol &&
git reset --hard && git reset --hard &&
echo "test" >x && echo "test" >x &&
before=$(git rev-parse --short $(git hash-object x)) &&
git commit -m "initial" x && git commit -m "initial" x &&
echo "{NTN}" | tr "NT" "\n\t" >>x && echo "{NTN}" | tr "NT" "\n\t" >>x &&
after=$(git rev-parse --short $(git hash-object x)) &&
git diff --color | test_decode_color >current && git diff --color | test_decode_color >current &&
cat >expected <<-\EOF && cat >expected <<-EOF &&
<BOLD>diff --git a/x b/x<RESET> <BOLD>diff --git a/x b/x<RESET>
<BOLD>index 9daeafb..2874b91 100644<RESET> <BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET> <BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET> <BOLD>+++ b/x<RESET>
<CYAN>@@ -1 +1,4 @@<RESET> <CYAN>@@ -1 +1,4 @@<RESET>
@ -883,19 +891,21 @@ test_expect_success 'diff that introduces and removes ws breakages' '
echo "0. blank-at-eol " && echo "0. blank-at-eol " &&
echo "1. blank-at-eol " echo "1. blank-at-eol "
} >x && } >x &&
before=$(git rev-parse --short $(git hash-object x)) &&
git commit -a --allow-empty -m preimage && git commit -a --allow-empty -m preimage &&
{ {
echo "0. blank-at-eol " && echo "0. blank-at-eol " &&
echo "1. still-blank-at-eol " && echo "1. still-blank-at-eol " &&
echo "2. and a new line " echo "2. and a new line "
} >x && } >x &&
after=$(git rev-parse --short $(git hash-object x)) &&
git diff --color | git diff --color |
test_decode_color >current && test_decode_color >current &&
cat >expected <<-\EOF && cat >expected <<-EOF &&
<BOLD>diff --git a/x b/x<RESET> <BOLD>diff --git a/x b/x<RESET>
<BOLD>index d0233a2..700886e 100644<RESET> <BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET> <BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET> <BOLD>+++ b/x<RESET>
<CYAN>@@ -1,2 +1,3 @@<RESET> <CYAN>@@ -1,2 +1,3 @@<RESET>
@ -915,16 +925,18 @@ test_expect_success 'ws-error-highlight test setup' '
echo "0. blank-at-eol " && echo "0. blank-at-eol " &&
echo "1. blank-at-eol " echo "1. blank-at-eol "
} >x && } >x &&
before=$(git rev-parse --short $(git hash-object x)) &&
git commit -a --allow-empty -m preimage && git commit -a --allow-empty -m preimage &&
{ {
echo "0. blank-at-eol " && echo "0. blank-at-eol " &&
echo "1. still-blank-at-eol " && echo "1. still-blank-at-eol " &&
echo "2. and a new line " echo "2. and a new line "
} >x && } >x &&
after=$(git rev-parse --short $(git hash-object x)) &&
cat >expect.default-old <<-\EOF && cat >expect.default-old <<-EOF &&
<BOLD>diff --git a/x b/x<RESET> <BOLD>diff --git a/x b/x<RESET>
<BOLD>index d0233a2..700886e 100644<RESET> <BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET> <BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET> <BOLD>+++ b/x<RESET>
<CYAN>@@ -1,2 +1,3 @@<RESET> <CYAN>@@ -1,2 +1,3 @@<RESET>
@ -934,9 +946,9 @@ test_expect_success 'ws-error-highlight test setup' '
<GREEN>+<RESET><GREEN>2. and a new line<RESET><BLUE> <RESET> <GREEN>+<RESET><GREEN>2. and a new line<RESET><BLUE> <RESET>
EOF EOF
cat >expect.all <<-\EOF && cat >expect.all <<-EOF &&
<BOLD>diff --git a/x b/x<RESET> <BOLD>diff --git a/x b/x<RESET>
<BOLD>index d0233a2..700886e 100644<RESET> <BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET> <BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET> <BOLD>+++ b/x<RESET>
<CYAN>@@ -1,2 +1,3 @@<RESET> <CYAN>@@ -1,2 +1,3 @@<RESET>
@ -946,9 +958,9 @@ test_expect_success 'ws-error-highlight test setup' '
<GREEN>+<RESET><GREEN>2. and a new line<RESET><BLUE> <RESET> <GREEN>+<RESET><GREEN>2. and a new line<RESET><BLUE> <RESET>
EOF EOF
cat >expect.none <<-\EOF cat >expect.none <<-EOF
<BOLD>diff --git a/x b/x<RESET> <BOLD>diff --git a/x b/x<RESET>
<BOLD>index d0233a2..700886e 100644<RESET> <BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET> <BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET> <BOLD>+++ b/x<RESET>
<CYAN>@@ -1,2 +1,3 @@<RESET> <CYAN>@@ -1,2 +1,3 @@<RESET>
@ -1022,14 +1034,15 @@ test_expect_success 'detect moved code, complete file' '
EOF EOF
git add test.c && git add test.c &&
git commit -m "add main function" && git commit -m "add main function" &&
file=$(git rev-parse --short HEAD:test.c) &&
git mv test.c main.c && git mv test.c main.c &&
test_config color.diff.oldMoved "normal red" && test_config color.diff.oldMoved "normal red" &&
test_config color.diff.newMoved "normal green" && test_config color.diff.newMoved "normal green" &&
git diff HEAD --color-moved=zebra --color --no-renames | test_decode_color >actual && git diff HEAD --color-moved=zebra --color --no-renames | test_decode_color >actual &&
cat >expected <<-\EOF && cat >expected <<-EOF &&
<BOLD>diff --git a/main.c b/main.c<RESET> <BOLD>diff --git a/main.c b/main.c<RESET>
<BOLD>new file mode 100644<RESET> <BOLD>new file mode 100644<RESET>
<BOLD>index 0000000..a986c57<RESET> <BOLD>index 0000000..$file<RESET>
<BOLD>--- /dev/null<RESET> <BOLD>--- /dev/null<RESET>
<BOLD>+++ b/main.c<RESET> <BOLD>+++ b/main.c<RESET>
<CYAN>@@ -0,0 +1,5 @@<RESET> <CYAN>@@ -0,0 +1,5 @@<RESET>
@ -1040,7 +1053,7 @@ test_expect_success 'detect moved code, complete file' '
<BGREEN>+<RESET><BGREEN>}<RESET> <BGREEN>+<RESET><BGREEN>}<RESET>
<BOLD>diff --git a/test.c b/test.c<RESET> <BOLD>diff --git a/test.c b/test.c<RESET>
<BOLD>deleted file mode 100644<RESET> <BOLD>deleted file mode 100644<RESET>
<BOLD>index a986c57..0000000<RESET> <BOLD>index $file..0000000<RESET>
<BOLD>--- a/test.c<RESET> <BOLD>--- a/test.c<RESET>
<BOLD>+++ /dev/null<RESET> <BOLD>+++ /dev/null<RESET>
<CYAN>@@ -1,5 +0,0 @@<RESET> <CYAN>@@ -1,5 +0,0 @@<RESET>
@ -1094,6 +1107,8 @@ test_expect_success 'detect malicious moved code, inside file' '
EOF EOF
git add main.c test.c && git add main.c test.c &&
git commit -m "add main and test file" && git commit -m "add main and test file" &&
before_main=$(git rev-parse --short HEAD:main.c) &&
before_test=$(git rev-parse --short HEAD:test.c) &&
cat <<-\EOF >main.c && cat <<-\EOF >main.c &&
#include<stdio.h> #include<stdio.h>
int stuff() int stuff()
@ -1126,10 +1141,12 @@ test_expect_success 'detect malicious moved code, inside file' '
bar(); bar();
} }
EOF EOF
after_main=$(git rev-parse --short $(git hash-object main.c)) &&
after_test=$(git rev-parse --short $(git hash-object test.c)) &&
git diff HEAD --no-renames --color-moved=zebra --color | test_decode_color >actual && git diff HEAD --no-renames --color-moved=zebra --color | test_decode_color >actual &&
cat <<-\EOF >expected && cat <<-EOF >expected &&
<BOLD>diff --git a/main.c b/main.c<RESET> <BOLD>diff --git a/main.c b/main.c<RESET>
<BOLD>index 27a619c..7cf9336 100644<RESET> <BOLD>index $before_main..$after_main 100644<RESET>
<BOLD>--- a/main.c<RESET> <BOLD>--- a/main.c<RESET>
<BOLD>+++ b/main.c<RESET> <BOLD>+++ b/main.c<RESET>
<CYAN>@@ -5,13 +5,6 @@<RESET> <RESET>printf("Hello ");<RESET> <CYAN>@@ -5,13 +5,6 @@<RESET> <RESET>printf("Hello ");<RESET>
@ -1147,7 +1164,7 @@ test_expect_success 'detect malicious moved code, inside file' '
{<RESET> {<RESET>
foo();<RESET> foo();<RESET>
<BOLD>diff --git a/test.c b/test.c<RESET> <BOLD>diff --git a/test.c b/test.c<RESET>
<BOLD>index 1dc1d85..2bedec9 100644<RESET> <BOLD>index $before_test..$after_test 100644<RESET>
<BOLD>--- a/test.c<RESET> <BOLD>--- a/test.c<RESET>
<BOLD>+++ b/test.c<RESET> <BOLD>+++ b/test.c<RESET>
<CYAN>@@ -4,6 +4,13 @@<RESET> <RESET>int bar()<RESET> <CYAN>@@ -4,6 +4,13 @@<RESET> <RESET>int bar()<RESET>
@ -1176,9 +1193,9 @@ test_expect_success 'plain moved code, inside file' '
test_config color.diff.newMovedAlternative "yellow" && test_config color.diff.newMovedAlternative "yellow" &&
# needs previous test as setup # needs previous test as setup
git diff HEAD --no-renames --color-moved=plain --color | test_decode_color >actual && git diff HEAD --no-renames --color-moved=plain --color | test_decode_color >actual &&
cat <<-\EOF >expected && cat <<-EOF >expected &&
<BOLD>diff --git a/main.c b/main.c<RESET> <BOLD>diff --git a/main.c b/main.c<RESET>
<BOLD>index 27a619c..7cf9336 100644<RESET> <BOLD>index $before_main..$after_main 100644<RESET>
<BOLD>--- a/main.c<RESET> <BOLD>--- a/main.c<RESET>
<BOLD>+++ b/main.c<RESET> <BOLD>+++ b/main.c<RESET>
<CYAN>@@ -5,13 +5,6 @@<RESET> <RESET>printf("Hello ");<RESET> <CYAN>@@ -5,13 +5,6 @@<RESET> <RESET>printf("Hello ");<RESET>
@ -1196,7 +1213,7 @@ test_expect_success 'plain moved code, inside file' '
{<RESET> {<RESET>
foo();<RESET> foo();<RESET>
<BOLD>diff --git a/test.c b/test.c<RESET> <BOLD>diff --git a/test.c b/test.c<RESET>
<BOLD>index 1dc1d85..2bedec9 100644<RESET> <BOLD>index $before_test..$after_test 100644<RESET>
<BOLD>--- a/test.c<RESET> <BOLD>--- a/test.c<RESET>
<BOLD>+++ b/test.c<RESET> <BOLD>+++ b/test.c<RESET>
<CYAN>@@ -4,6 +4,13 @@<RESET> <RESET>int bar()<RESET> <CYAN>@@ -4,6 +4,13 @@<RESET> <RESET>int bar()<RESET>

Просмотреть файл

@ -6,6 +6,7 @@ test_description='difference in submodules'
. "$TEST_DIRECTORY"/diff-lib.sh . "$TEST_DIRECTORY"/diff-lib.sh
test_expect_success setup ' test_expect_success setup '
test_oid_init &&
test_tick && test_tick &&
test_create_repo sub && test_create_repo sub &&
( (
@ -36,7 +37,8 @@ test_expect_success setup '
' '
test_expect_success 'git diff --raw HEAD' ' test_expect_success 'git diff --raw HEAD' '
git diff --raw --abbrev=40 HEAD >actual && hexsz=$(test_oid hexsz) &&
git diff --raw --abbrev=$hexsz HEAD >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -245,23 +247,21 @@ test_expect_success 'git diff (empty submodule dir)' '
' '
test_expect_success 'conflicted submodule setup' ' test_expect_success 'conflicted submodule setup' '
c=$(test_oid ff_1) &&
# 39 efs
c=fffffffffffffffffffffffffffffffffffffff &&
( (
echo "000000 $ZERO_OID 0 sub" && echo "000000 $ZERO_OID 0 sub" &&
echo "160000 1$c 1 sub" && echo "160000 1$c 1 sub" &&
echo "160000 2$c 2 sub" && echo "160000 2$c 2 sub" &&
echo "160000 3$c 3 sub" echo "160000 3$c 3 sub"
) | git update-index --index-info && ) | git update-index --index-info &&
echo >expect.nosub '\''diff --cc sub echo >expect.nosub "diff --cc sub
index 2ffffff,3ffffff..0000000 index 2ffffff,3ffffff..0000000
--- a/sub --- a/sub
+++ b/sub +++ b/sub
@@@ -1,1 -1,1 +1,1 @@@ @@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 2fffffffffffffffffffffffffffffffffffffff - Subproject commit 2$c
-Subproject commit 3fffffffffffffffffffffffffffffffffffffff -Subproject commit 3$c
++Subproject commit 0000000000000000000000000000000000000000'\'' && ++Subproject commit $ZERO_OID" &&
hh=$(git rev-parse HEAD) && hh=$(git rev-parse HEAD) &&
sed -e "s/$ZERO_OID/$hh/" expect.nosub >expect.withsub sed -e "s/$ZERO_OID/$hh/" expect.nosub >expect.withsub

Просмотреть файл

@ -19,9 +19,11 @@ cat >post.simple <<-\EOF
aeff = aeff * ( aaa ) aeff = aeff * ( aaa )
EOF EOF
cat >expect.letter-runs-are-words <<-\EOF pre=$(git rev-parse --short $(git hash-object pre.simple))
post=$(git rev-parse --short $(git hash-object post.simple))
cat >expect.letter-runs-are-words <<-EOF
<BOLD>diff --git a/pre b/post<RESET> <BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 330b04f..5ed8eff 100644<RESET> <BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET> <BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET> <BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET> <CYAN>@@ -1,3 +1,7 @@<RESET>
@ -33,9 +35,9 @@ cat >expect.letter-runs-are-words <<-\EOF
<GREEN>aeff = aeff * ( aaa<RESET> ) <GREEN>aeff = aeff * ( aaa<RESET> )
EOF EOF
cat >expect.non-whitespace-is-word <<-\EOF cat >expect.non-whitespace-is-word <<-EOF
<BOLD>diff --git a/pre b/post<RESET> <BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 330b04f..5ed8eff 100644<RESET> <BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET> <BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET> <BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET> <CYAN>@@ -1,3 +1,7 @@<RESET>
@ -49,9 +51,12 @@ cat >expect.non-whitespace-is-word <<-\EOF
EOF EOF
word_diff () { word_diff () {
pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
test_must_fail git diff --no-index "$@" pre post >output && test_must_fail git diff --no-index "$@" pre post >output &&
test_decode_color <output >output.decrypted && test_decode_color <output >output.decrypted &&
test_cmp expect output.decrypted sed -e "2s/index [^ ]*/index $pre..$post/" expect >expected
test_cmp expected output.decrypted
} }
test_language_driver () { test_language_driver () {
@ -77,9 +82,9 @@ test_expect_success 'set up pre and post with runs of whitespace' '
' '
test_expect_success 'word diff with runs of whitespace' ' test_expect_success 'word diff with runs of whitespace' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET> <BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 330b04f..5ed8eff 100644<RESET> <BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET> <BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET> <BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET> <CYAN>@@ -1,3 +1,7 @@<RESET>
@ -97,9 +102,9 @@ test_expect_success 'word diff with runs of whitespace' '
' '
test_expect_success '--word-diff=porcelain' ' test_expect_success '--word-diff=porcelain' '
sed 's/#.*$//' >expect <<-\EOF && sed 's/#.*$//' >expect <<-EOF &&
diff --git a/pre b/post diff --git a/pre b/post
index 330b04f..5ed8eff 100644 index $pre..$post 100644
--- a/pre --- a/pre
+++ b/post +++ b/post
@@ -1,3 +1,7 @@ @@ -1,3 +1,7 @@
@ -121,9 +126,9 @@ test_expect_success '--word-diff=porcelain' '
' '
test_expect_success '--word-diff=plain' ' test_expect_success '--word-diff=plain' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
diff --git a/pre b/post diff --git a/pre b/post
index 330b04f..5ed8eff 100644 index $pre..$post 100644
--- a/pre --- a/pre
+++ b/post +++ b/post
@@ -1,3 +1,7 @@ @@ -1,3 +1,7 @@
@ -140,9 +145,9 @@ test_expect_success '--word-diff=plain' '
' '
test_expect_success '--word-diff=plain --color' ' test_expect_success '--word-diff=plain --color' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET> <BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 330b04f..5ed8eff 100644<RESET> <BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET> <BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET> <BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET> <CYAN>@@ -1,3 +1,7 @@<RESET>
@ -158,9 +163,9 @@ test_expect_success '--word-diff=plain --color' '
' '
test_expect_success 'word diff without context' ' test_expect_success 'word diff without context' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET> <BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 330b04f..5ed8eff 100644<RESET> <BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET> <BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET> <BOLD>+++ b/post<RESET>
<CYAN>@@ -1 +1 @@<RESET> <CYAN>@@ -1 +1 @@<RESET>
@ -207,9 +212,9 @@ test_expect_success 'command-line overrides config' '
' '
test_expect_success 'command-line overrides config: --word-diff-regex' ' test_expect_success 'command-line overrides config: --word-diff-regex' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET> <BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 330b04f..5ed8eff 100644<RESET> <BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET> <BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET> <BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET> <CYAN>@@ -1,3 +1,7 @@<RESET>
@ -234,9 +239,9 @@ test_expect_success 'setup: remove diff driver regex' '
' '
test_expect_success 'use configured regex' ' test_expect_success 'use configured regex' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET> <BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 330b04f..5ed8eff 100644<RESET> <BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET> <BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET> <BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET> <CYAN>@@ -1,3 +1,7 @@<RESET>
@ -254,9 +259,11 @@ test_expect_success 'use configured regex' '
test_expect_success 'test parsing words for newline' ' test_expect_success 'test parsing words for newline' '
echo "aaa (aaa)" >pre && echo "aaa (aaa)" >pre &&
echo "aaa (aaa) aaa" >post && echo "aaa (aaa) aaa" >post &&
cat >expect <<-\EOF && pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET> <BOLD>diff --git a/pre b/post<RESET>
<BOLD>index c29453b..be22f37 100644<RESET> <BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET> <BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET> <BOLD>+++ b/post<RESET>
<CYAN>@@ -1 +1 @@<RESET> <CYAN>@@ -1 +1 @@<RESET>
@ -268,9 +275,11 @@ test_expect_success 'test parsing words for newline' '
test_expect_success 'test when words are only removed at the end' ' test_expect_success 'test when words are only removed at the end' '
echo "(:" >pre && echo "(:" >pre &&
echo "(" >post && echo "(" >post &&
cat >expect <<-\EOF && pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET> <BOLD>diff --git a/pre b/post<RESET>
<BOLD>index 289cb9d..2d06f37 100644<RESET> <BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET> <BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET> <BOLD>+++ b/post<RESET>
<CYAN>@@ -1 +1 @@<RESET> <CYAN>@@ -1 +1 @@<RESET>
@ -282,9 +291,11 @@ test_expect_success 'test when words are only removed at the end' '
test_expect_success '--word-diff=none' ' test_expect_success '--word-diff=none' '
echo "(:" >pre && echo "(:" >pre &&
echo "(" >post && echo "(" >post &&
cat >expect <<-\EOF && pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
diff --git a/pre b/post diff --git a/pre b/post
index 289cb9d..2d06f37 100644 index $pre..$post 100644
--- a/pre --- a/pre
+++ b/post +++ b/post
@@ -1 +1 @@ @@ -1 +1 @@
@ -317,16 +328,6 @@ test_language_driver ruby
test_language_driver tex test_language_driver tex
test_expect_success 'word-diff with diff.sbe' ' test_expect_success 'word-diff with diff.sbe' '
cat >expect <<-\EOF &&
diff --git a/pre b/post
index a1a53b5..bc8fe6d 100644
--- a/pre
+++ b/post
@@ -1,3 +1,3 @@
a
[-b-]{+c+}
EOF
cat >pre <<-\EOF && cat >pre <<-\EOF &&
a a
@ -337,21 +338,35 @@ test_expect_success 'word-diff with diff.sbe' '
c c
EOF EOF
pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
diff --git a/pre b/post
index $pre..$post 100644
--- a/pre
+++ b/post
@@ -1,3 +1,3 @@
a
[-b-]{+c+}
EOF
test_config diff.suppress-blank-empty true && test_config diff.suppress-blank-empty true &&
word_diff --word-diff=plain word_diff --word-diff=plain
' '
test_expect_success 'word-diff with no newline at EOF' ' test_expect_success 'word-diff with no newline at EOF' '
cat >expect <<-\EOF && printf "%s" "a a a a a" >pre &&
printf "%s" "a a ab a a" >post &&
pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
diff --git a/pre b/post diff --git a/pre b/post
index 7bf316e..3dd0303 100644 index $pre..$post 100644
--- a/pre --- a/pre
+++ b/post +++ b/post
@@ -1 +1 @@ @@ -1 +1 @@
a a [-a-]{+ab+} a a a a [-a-]{+ab+} a a
EOF EOF
printf "%s" "a a a a a" >pre &&
printf "%s" "a a ab a a" >post &&
word_diff --word-diff=plain word_diff --word-diff=plain
' '

Просмотреть файл

@ -440,11 +440,13 @@ test_expect_success 'setup for --combined-all-paths' '
git branch side2c && git branch side2c &&
git checkout side1c && git checkout side1c &&
test_seq 1 10 >filename-side1c && test_seq 1 10 >filename-side1c &&
side1cf=$(git hash-object filename-side1c) &&
git add filename-side1c && git add filename-side1c &&
git commit -m with && git commit -m with &&
git checkout side2c && git checkout side2c &&
test_seq 1 9 >filename-side2c && test_seq 1 9 >filename-side2c &&
echo ten >>filename-side2c && echo ten >>filename-side2c &&
side2cf=$(git hash-object filename-side2c) &&
git add filename-side2c && git add filename-side2c &&
git commit -m iam && git commit -m iam &&
git checkout -b mergery side1c && git checkout -b mergery side1c &&
@ -452,13 +454,14 @@ test_expect_success 'setup for --combined-all-paths' '
git rm filename-side1c && git rm filename-side1c &&
echo eleven >>filename-side2c && echo eleven >>filename-side2c &&
git mv filename-side2c filename-merged && git mv filename-side2c filename-merged &&
mergedf=$(git hash-object filename-merged) &&
git add filename-merged && git add filename-merged &&
git commit git commit
' '
test_expect_success '--combined-all-paths and --raw' ' test_expect_success '--combined-all-paths and --raw' '
cat <<-\EOF >expect && cat <<-EOF >expect &&
::100644 100644 100644 f00c965d8307308469e537302baa73048488f162 088bd5d92c2a8e0203ca8e7e4c2a5c692f6ae3f7 333b9c62519f285e1854830ade0fe1ef1d40ee1b RR filename-side1c filename-side2c filename-merged ::100644 100644 100644 $side1cf $side2cf $mergedf RR filename-side1c filename-side2c filename-merged
EOF EOF
git diff-tree -c -M --raw --combined-all-paths HEAD >actual.tmp && git diff-tree -c -M --raw --combined-all-paths HEAD >actual.tmp &&
sed 1d <actual.tmp >actual && sed 1d <actual.tmp >actual &&
@ -482,11 +485,13 @@ test_expect_success FUNNYNAMES 'setup for --combined-all-paths with funny names'
git checkout side1d && git checkout side1d &&
test_seq 1 10 >"$(printf "file\twith\ttabs")" && test_seq 1 10 >"$(printf "file\twith\ttabs")" &&
git add file* && git add file* &&
side1df=$(git hash-object *tabs) &&
git commit -m with && git commit -m with &&
git checkout side2d && git checkout side2d &&
test_seq 1 9 >"$(printf "i\tam\ttabbed")" && test_seq 1 9 >"$(printf "i\tam\ttabbed")" &&
echo ten >>"$(printf "i\tam\ttabbed")" && echo ten >>"$(printf "i\tam\ttabbed")" &&
git add *tabbed && git add *tabbed &&
side2df=$(git hash-object *tabbed) &&
git commit -m iam && git commit -m iam &&
git checkout -b funny-names-mergery side1d && git checkout -b funny-names-mergery side1d &&
git merge --no-commit side2d && git merge --no-commit side2d &&
@ -494,12 +499,14 @@ test_expect_success FUNNYNAMES 'setup for --combined-all-paths with funny names'
echo eleven >>"$(printf "i\tam\ttabbed")" && echo eleven >>"$(printf "i\tam\ttabbed")" &&
git mv "$(printf "i\tam\ttabbed")" "$(printf "fickle\tnaming")" && git mv "$(printf "i\tam\ttabbed")" "$(printf "fickle\tnaming")" &&
git add fickle* && git add fickle* &&
git commit headf=$(git hash-object fickle*) &&
git commit &&
head=$(git rev-parse HEAD)
' '
test_expect_success FUNNYNAMES '--combined-all-paths and --raw and funny names' ' test_expect_success FUNNYNAMES '--combined-all-paths and --raw and funny names' '
cat <<-\EOF >expect && cat <<-EOF >expect &&
::100644 100644 100644 f00c965d8307308469e537302baa73048488f162 088bd5d92c2a8e0203ca8e7e4c2a5c692f6ae3f7 333b9c62519f285e1854830ade0fe1ef1d40ee1b RR "file\twith\ttabs" "i\tam\ttabbed" "fickle\tnaming" ::100644 100644 100644 $side1df $side2df $headf RR "file\twith\ttabs" "i\tam\ttabbed" "fickle\tnaming"
EOF EOF
git diff-tree -c -M --raw --combined-all-paths HEAD >actual.tmp && git diff-tree -c -M --raw --combined-all-paths HEAD >actual.tmp &&
sed 1d <actual.tmp >actual && sed 1d <actual.tmp >actual &&
@ -507,7 +514,7 @@ test_expect_success FUNNYNAMES '--combined-all-paths and --raw and funny names'
' '
test_expect_success FUNNYNAMES '--combined-all-paths and --raw -and -z and funny names' ' test_expect_success FUNNYNAMES '--combined-all-paths and --raw -and -z and funny names' '
printf "aaf8087c3cbd4db8e185a2d074cf27c53cfb75d7\0::100644 100644 100644 f00c965d8307308469e537302baa73048488f162 088bd5d92c2a8e0203ca8e7e4c2a5c692f6ae3f7 333b9c62519f285e1854830ade0fe1ef1d40ee1b RR\0file\twith\ttabs\0i\tam\ttabbed\0fickle\tnaming\0" >expect && printf "$head\0::100644 100644 100644 $side1df $side2df $headf RR\0file\twith\ttabs\0i\tam\ttabbed\0fickle\tnaming\0" >expect &&
git diff-tree -c -M --raw --combined-all-paths -z HEAD >actual && git diff-tree -c -M --raw --combined-all-paths -z HEAD >actual &&
test_cmp expect actual test_cmp expect actual
' '

Просмотреть файл

@ -12,6 +12,7 @@ test_expect_success 'setup' '
git commit -m zero && git commit -m zero &&
echo one > one && echo one > one &&
echo two > two && echo two > two &&
blob=$(git hash-object one) &&
git add one two && git add one two &&
git commit -m onetwo && git commit -m onetwo &&
git update-index --assume-unchanged one && git update-index --assume-unchanged one &&
@ -20,7 +21,7 @@ test_expect_success 'setup' '
' '
test_expect_success 'diff-index does not examine assume-unchanged entries' ' test_expect_success 'diff-index does not examine assume-unchanged entries' '
git diff-index HEAD^ -- one | grep -q 5626abf0f72e58d7a153368ba57db4c673c0e171 git diff-index HEAD^ -- one | grep -q $blob
' '
test_expect_success 'diff-files does not examine assume-unchanged entries' ' test_expect_success 'diff-files does not examine assume-unchanged entries' '

Просмотреть файл

@ -3,34 +3,48 @@
test_description='test unique sha1 abbreviation on "index from..to" line' test_description='test unique sha1 abbreviation on "index from..to" line'
. ./test-lib.sh . ./test-lib.sh
if ! test_have_prereq SHA1
then
skip_all='not using SHA-1 for objects'
test_done
fi
cat >expect_initial <<EOF
100644 blob 51d2738463ea4ca66f8691c91e33ce64b7d41bb1 foo
EOF
cat >expect_update <<EOF
100644 blob 51d2738efb4ad8a1e40bed839ab8e116f0a15e47 foo
EOF
test_expect_success 'setup' ' test_expect_success 'setup' '
echo 4827 > foo && test_oid_cache <<-EOF &&
val1 sha1:4827
val1 sha256:5664
val2 sha1:11742
val2 sha256:10625
hash1 sha1:51d2738463ea4ca66f8691c91e33ce64b7d41bb1
hash1 sha256:ae31dfff0af93b2c62b0098a039b38569c43b0a7e97b873000ca42d128f27350
hasht1 sha1:51d27384
hasht1 sha256:ae31dfff
hash2 sha1:51d2738efb4ad8a1e40bed839ab8e116f0a15e47
hash2 sha256:ae31dffada88a46fd5f53c7ed5aa25a7a8951f1d5e88456c317c8d5484d263e5
hasht2 sha1:51d2738e
hasht2 sha256:ae31dffa
EOF
cat >expect_initial <<-EOF &&
100644 blob $(test_oid hash1) foo
EOF
cat >expect_update <<-EOF &&
100644 blob $(test_oid hash2) foo
EOF
echo "$(test_oid val1)" > foo &&
git add foo && git add foo &&
git commit -m "initial" && git commit -m "initial" &&
git cat-file -p HEAD: > actual && git cat-file -p HEAD: > actual &&
test_cmp expect_initial actual && test_cmp expect_initial actual &&
echo 11742 > foo && echo "$(test_oid val2)" > foo &&
git commit -a -m "update" && git commit -a -m "update" &&
git cat-file -p HEAD: > actual && git cat-file -p HEAD: > actual &&
test_cmp expect_update actual test_cmp expect_update actual
' '
cat >expect <<EOF cat >expect <<EOF
index 51d27384..51d2738e 100644 index $(test_oid hasht1)..$(test_oid hasht2) 100644
EOF EOF
test_expect_success 'diff does not produce ambiguous index line' ' test_expect_success 'diff does not produce ambiguous index line' '

Просмотреть файл

@ -70,7 +70,7 @@ check_raw () {
expect=$1 expect=$1
shift shift
cat >expected <<-EOF cat >expected <<-EOF
:000000 100644 0000000000000000000000000000000000000000 $blob A $expect :000000 100644 $ZERO_OID $blob A $expect
EOF EOF
test_expect_success "--raw $*" " test_expect_success "--raw $*" "
git -C '$dir' diff --no-abbrev --raw $* HEAD^ >actual && git -C '$dir' diff --no-abbrev --raw $* HEAD^ >actual &&

Просмотреть файл

@ -9,24 +9,27 @@ test_expect_success 'setup binary merge conflict' '
git commit -m one && git commit -m one &&
echo twoQ2 | q_to_nul >binary && echo twoQ2 | q_to_nul >binary &&
git commit -a -m two && git commit -a -m two &&
two=$(git rev-parse --short HEAD:binary) &&
git checkout -b branch-binary HEAD^ && git checkout -b branch-binary HEAD^ &&
echo threeQ3 | q_to_nul >binary && echo threeQ3 | q_to_nul >binary &&
git commit -a -m three && git commit -a -m three &&
three=$(git rev-parse --short HEAD:binary) &&
test_must_fail git merge master && test_must_fail git merge master &&
echo resolvedQhooray | q_to_nul >binary && echo resolvedQhooray | q_to_nul >binary &&
git commit -a -m resolved git commit -a -m resolved &&
res=$(git rev-parse --short HEAD:binary)
' '
cat >expect <<'EOF' cat >expect <<EOF
resolved resolved
diff --git a/binary b/binary diff --git a/binary b/binary
index 7ea6ded..9563691 100644 index $three..$res 100644
Binary files a/binary and b/binary differ Binary files a/binary and b/binary differ
resolved resolved
diff --git a/binary b/binary diff --git a/binary b/binary
index 6197570..9563691 100644 index $two..$res 100644
Binary files a/binary and b/binary differ Binary files a/binary and b/binary differ
EOF EOF
test_expect_success 'diff -m indicates binary-ness' ' test_expect_success 'diff -m indicates binary-ness' '
@ -34,11 +37,11 @@ test_expect_success 'diff -m indicates binary-ness' '
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<'EOF' cat >expect <<EOF
resolved resolved
diff --combined binary diff --combined binary
index 7ea6ded,6197570..9563691 index $three,$two..$res
Binary files differ Binary files differ
EOF EOF
test_expect_success 'diff -c indicates binary-ness' ' test_expect_success 'diff -c indicates binary-ness' '
@ -46,11 +49,11 @@ test_expect_success 'diff -c indicates binary-ness' '
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<'EOF' cat >expect <<EOF
resolved resolved
diff --cc binary diff --cc binary
index 7ea6ded,6197570..9563691 index $three,$two..$res
Binary files differ Binary files differ
EOF EOF
test_expect_success 'diff --cc indicates binary-ness' ' test_expect_success 'diff --cc indicates binary-ness' '
@ -62,23 +65,26 @@ test_expect_success 'setup non-binary with binary attribute' '
git checkout master && git checkout master &&
test_commit one text && test_commit one text &&
test_commit two text && test_commit two text &&
two=$(git rev-parse --short HEAD:text) &&
git checkout -b branch-text HEAD^ && git checkout -b branch-text HEAD^ &&
test_commit three text && test_commit three text &&
three=$(git rev-parse --short HEAD:text) &&
test_must_fail git merge master && test_must_fail git merge master &&
test_commit resolved text && test_commit resolved text &&
res=$(git rev-parse --short HEAD:text) &&
echo text -diff >.gitattributes echo text -diff >.gitattributes
' '
cat >expect <<'EOF' cat >expect <<EOF
resolved resolved
diff --git a/text b/text diff --git a/text b/text
index 2bdf67a..2ab19ae 100644 index $three..$res 100644
Binary files a/text and b/text differ Binary files a/text and b/text differ
resolved resolved
diff --git a/text b/text diff --git a/text b/text
index f719efd..2ab19ae 100644 index $two..$res 100644
Binary files a/text and b/text differ Binary files a/text and b/text differ
EOF EOF
test_expect_success 'diff -m respects binary attribute' ' test_expect_success 'diff -m respects binary attribute' '
@ -86,11 +92,11 @@ test_expect_success 'diff -m respects binary attribute' '
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<'EOF' cat >expect <<EOF
resolved resolved
diff --combined text diff --combined text
index 2bdf67a,f719efd..2ab19ae index $three,$two..$res
Binary files differ Binary files differ
EOF EOF
test_expect_success 'diff -c respects binary attribute' ' test_expect_success 'diff -c respects binary attribute' '
@ -98,11 +104,11 @@ test_expect_success 'diff -c respects binary attribute' '
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<'EOF' cat >expect <<EOF
resolved resolved
diff --cc text diff --cc text
index 2bdf67a,f719efd..2ab19ae index $three,$two..$res
Binary files differ Binary files differ
EOF EOF
test_expect_success 'diff --cc respects binary attribute' ' test_expect_success 'diff --cc respects binary attribute' '
@ -115,11 +121,11 @@ test_expect_success 'setup textconv attribute' '
git config diff.upcase.textconv "tr a-z A-Z <" git config diff.upcase.textconv "tr a-z A-Z <"
' '
cat >expect <<'EOF' cat >expect <<EOF
resolved resolved
diff --git a/text b/text diff --git a/text b/text
index 2bdf67a..2ab19ae 100644 index $three..$res 100644
--- a/text --- a/text
+++ b/text +++ b/text
@@ -1 +1 @@ @@ -1 +1 @@
@ -128,7 +134,7 @@ index 2bdf67a..2ab19ae 100644
resolved resolved
diff --git a/text b/text diff --git a/text b/text
index f719efd..2ab19ae 100644 index $two..$res 100644
--- a/text --- a/text
+++ b/text +++ b/text
@@ -1 +1 @@ @@ -1 +1 @@
@ -140,11 +146,11 @@ test_expect_success 'diff -m respects textconv attribute' '
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<'EOF' cat >expect <<EOF
resolved resolved
diff --combined text diff --combined text
index 2bdf67a,f719efd..2ab19ae index $three,$two..$res
--- a/text --- a/text
+++ b/text +++ b/text
@@@ -1,1 -1,1 +1,1 @@@ @@@ -1,1 -1,1 +1,1 @@@
@ -157,11 +163,11 @@ test_expect_success 'diff -c respects textconv attribute' '
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<'EOF' cat >expect <<EOF
resolved resolved
diff --cc text diff --cc text
index 2bdf67a,f719efd..2ab19ae index $three,$two..$res
--- a/text --- a/text
+++ b/text +++ b/text
@@@ -1,1 -1,1 +1,1 @@@ @@@ -1,1 -1,1 +1,1 @@@
@ -174,9 +180,9 @@ test_expect_success 'diff --cc respects textconv attribute' '
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<'EOF' cat >expect <<EOF
diff --combined text diff --combined text
index 2bdf67a,f719efd..2ab19ae index $three,$two..$res
--- a/text --- a/text
+++ b/text +++ b/text
@@@ -1,1 -1,1 +1,1 @@@ @@@ -1,1 -1,1 +1,1 @@@
@ -190,9 +196,9 @@ test_expect_success 'diff-tree plumbing does not respect textconv' '
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<'EOF' cat >expect <<EOF
diff --cc text diff --cc text
index 2bdf67a,f719efd..0000000 index $three,$two..0000000
--- a/text --- a/text
+++ b/text +++ b/text
@@@ -1,1 -1,1 +1,5 @@@ @@@ -1,1 -1,1 +1,5 @@@