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

Preparation of test scripts for the day when the object names will
use SHA-256 continues.

* bc/hash-independent-tests-part-7:
  t5604: make hash independent
  t5601: switch into repository to hash object
  t5562: use $ZERO_OID
  t5540: make hash size independent
  t5537: make hash size independent
  t5530: compute results based on object length
  t5512: abstract away SHA-1-specific constants
  t5510: make hash size independent
  t5504: make hash algorithm independent
  t5324: make hash size independent
  t5319: make test work with SHA-256
  t5319: change invalid offset for SHA-256 compatibility
  t5318: update for SHA-256
  t4300: abstract away SHA-1-specific constants
  t4204: make hash size independent
  t4202: abstract away SHA-1-specific constants
  t4200: make hash size independent
  t4134: compute appropriate length constant
  t4066: compute index line in diffs
  t4054: make hash-size independent
This commit is contained in:
Junio C Hamano 2020-02-05 14:34:59 -08:00
commit f52ab33616
19 changed files with 255 additions and 220 deletions

View File

@ -4,8 +4,9 @@ test_description='test diff with a bogus tree containing the null sha1'
. ./test-lib.sh . ./test-lib.sh
test_expect_success 'create bogus tree' ' test_expect_success 'create bogus tree' '
name=$(echo $ZERO_OID | sed -e "s/00/Q/g") &&
bogus_tree=$( bogus_tree=$(
printf "100644 fooQQQQQQQQQQQQQQQQQQQQQ" | printf "100644 fooQ$name" |
q_to_nul | q_to_nul |
git hash-object -w --stdin -t tree git hash-object -w --stdin -t tree
) )

View File

@ -18,7 +18,7 @@ test_expect_success 'set up history with a merge' '
' '
test_expect_success 'log --cc -p --stat --color-moved' ' test_expect_success 'log --cc -p --stat --color-moved' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
commit D commit D
--- ---
D.t | 1 + D.t | 1 +
@ -26,7 +26,7 @@ test_expect_success 'log --cc -p --stat --color-moved' '
diff --git a/D.t b/D.t diff --git a/D.t b/D.t
new file mode 100644 new file mode 100644
index 0000000..1784810 index 0000000..$(git rev-parse --short D:D.t)
--- /dev/null --- /dev/null
+++ b/D.t +++ b/D.t
@@ -0,0 +1 @@ @@ -0,0 +1 @@
@ -42,7 +42,7 @@ test_expect_success 'log --cc -p --stat --color-moved' '
diff --git a/C.t b/C.t diff --git a/C.t b/C.t
new file mode 100644 new file mode 100644
index 0000000..3cc58df index 0000000..$(git rev-parse --short C:C.t)
--- /dev/null --- /dev/null
+++ b/C.t +++ b/C.t
@@ -0,0 +1 @@ @@ -0,0 +1 @@
@ -54,7 +54,7 @@ test_expect_success 'log --cc -p --stat --color-moved' '
diff --git a/B.t b/B.t diff --git a/B.t b/B.t
new file mode 100644 new file mode 100644
index 0000000..223b783 index 0000000..$(git rev-parse --short B:B.t)
--- /dev/null --- /dev/null
+++ b/B.t +++ b/B.t
@@ -0,0 +1 @@ @@ -0,0 +1 @@
@ -66,7 +66,7 @@ test_expect_success 'log --cc -p --stat --color-moved' '
diff --git a/A.t b/A.t diff --git a/A.t b/A.t
new file mode 100644 new file mode 100644
index 0000000..f70f10e index 0000000..$(git rev-parse --short A:A.t)
--- /dev/null --- /dev/null
+++ b/A.t +++ b/A.t
@@ -0,0 +1 @@ @@ -0,0 +1 @@

View File

@ -8,6 +8,7 @@ test_description='git apply submodule tests'
. ./test-lib.sh . ./test-lib.sh
test_expect_success setup ' test_expect_success setup '
test_oid_init &&
cat > create-sm.patch <<EOF && cat > create-sm.patch <<EOF &&
diff --git a/dir/sm b/dir/sm diff --git a/dir/sm b/dir/sm
new file mode 160000 new file mode 160000
@ -15,7 +16,7 @@ index 0000000..0123456
--- /dev/null --- /dev/null
+++ b/dir/sm +++ b/dir/sm
@@ -0,0 +1 @@ @@ -0,0 +1 @@
+Subproject commit 0123456789abcdef0123456789abcdef01234567 +Subproject commit $(test_oid numeric)
EOF EOF
cat > remove-sm.patch <<EOF cat > remove-sm.patch <<EOF
diff --git a/dir/sm b/dir/sm diff --git a/dir/sm b/dir/sm
@ -24,7 +25,7 @@ index 0123456..0000000
--- a/dir/sm --- a/dir/sm
+++ /dev/null +++ /dev/null
@@ -1 +0,0 @@ @@ -1 +0,0 @@
-Subproject commit 0123456789abcdef0123456789abcdef01234567 -Subproject commit $(test_oid numeric)
EOF EOF
' '

View File

@ -25,6 +25,7 @@ test_description='git rerere
. ./test-lib.sh . ./test-lib.sh
test_expect_success 'setup' ' test_expect_success 'setup' '
test_oid_init &&
cat >a1 <<-\EOF && cat >a1 <<-\EOF &&
Some title Some title
========== ==========
@ -210,7 +211,7 @@ test_expect_success 'set up for garbage collection tests' '
echo Hello >$rr/preimage && echo Hello >$rr/preimage &&
echo World >$rr/postimage && echo World >$rr/postimage &&
sha2=4000000000000000000000000000000000000000 && sha2=$(test_oid deadbeef) &&
rr2=.git/rr-cache/$sha2 && rr2=.git/rr-cache/$sha2 &&
mkdir $rr2 && mkdir $rr2 &&
echo Hello >$rr2/preimage && echo Hello >$rr2/preimage &&

View File

@ -87,12 +87,12 @@ test_expect_success 'format %w(,1,2)' '
' '
cat > expect << EOF cat > expect << EOF
804a787 sixth $(git rev-parse --short :/sixth ) sixth
394ef78 fifth $(git rev-parse --short :/fifth ) fifth
5d31159 fourth $(git rev-parse --short :/fourth ) fourth
2fbe8c0 third $(git rev-parse --short :/third ) third
f7dab8e second $(git rev-parse --short :/second ) second
3a2fdcb initial $(git rev-parse --short :/initial) initial
EOF EOF
test_expect_success 'oneline' ' test_expect_success 'oneline' '
@ -173,43 +173,45 @@ test_expect_success 'git config log.follow is overridden by --no-follow' '
verbose test "$actual" = "$expect" verbose test "$actual" = "$expect"
' '
# Note that these commits are intentionally listed out of order.
last_three="$(git rev-parse :/fourth :/sixth :/fifth)"
cat > expect << EOF cat > expect << EOF
804a787 sixth $(git rev-parse --short :/sixth ) sixth
394ef78 fifth $(git rev-parse --short :/fifth ) fifth
5d31159 fourth $(git rev-parse --short :/fourth) fourth
EOF EOF
test_expect_success 'git log --no-walk <commits> sorts by commit time' ' test_expect_success 'git log --no-walk <commits> sorts by commit time' '
git log --no-walk --oneline 5d31159 804a787 394ef78 > actual && git log --no-walk --oneline $last_three > actual &&
test_cmp expect actual test_cmp expect actual
' '
test_expect_success 'git log --no-walk=sorted <commits> sorts by commit time' ' test_expect_success 'git log --no-walk=sorted <commits> sorts by commit time' '
git log --no-walk=sorted --oneline 5d31159 804a787 394ef78 > actual && git log --no-walk=sorted --oneline $last_three > actual &&
test_cmp expect actual test_cmp expect actual
' '
cat > expect << EOF cat > expect << EOF
=== 804a787 sixth === $(git rev-parse --short :/sixth ) sixth
=== 394ef78 fifth === $(git rev-parse --short :/fifth ) fifth
=== 5d31159 fourth === $(git rev-parse --short :/fourth) fourth
EOF EOF
test_expect_success 'git log --line-prefix="=== " --no-walk <commits> sorts by commit time' ' test_expect_success 'git log --line-prefix="=== " --no-walk <commits> sorts by commit time' '
git log --line-prefix="=== " --no-walk --oneline 5d31159 804a787 394ef78 > actual && git log --line-prefix="=== " --no-walk --oneline $last_three > actual &&
test_cmp expect actual test_cmp expect actual
' '
cat > expect << EOF cat > expect << EOF
5d31159 fourth $(git rev-parse --short :/fourth) fourth
804a787 sixth $(git rev-parse --short :/sixth ) sixth
394ef78 fifth $(git rev-parse --short :/fifth ) fifth
EOF EOF
test_expect_success 'git log --no-walk=unsorted <commits> leaves list of commits as given' ' test_expect_success 'git log --no-walk=unsorted <commits> leaves list of commits as given' '
git log --no-walk=unsorted --oneline 5d31159 804a787 394ef78 > actual && git log --no-walk=unsorted --oneline $last_three > actual &&
test_cmp expect actual test_cmp expect actual
' '
test_expect_success 'git show <commits> leaves list of commits as given' ' test_expect_success 'git show <commits> leaves list of commits as given' '
git show --oneline -s 5d31159 804a787 394ef78 > actual && git show --oneline -s $last_three > actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -957,7 +959,7 @@ cat >expect <<\EOF
| | | |
| | diff --git a/reach.t b/reach.t | | diff --git a/reach.t b/reach.t
| | new file mode 100644 | | new file mode 100644
| | index 0000000..10c9591 | | index BEFORE..AFTER
| | --- /dev/null | | --- /dev/null
| | +++ b/reach.t | | +++ b/reach.t
| | @@ -0,0 +1 @@ | | @@ -0,0 +1 @@
@ -980,7 +982,7 @@ cat >expect <<\EOF
| | | | | |
| | | diff --git a/octopus-b.t b/octopus-b.t | | | diff --git a/octopus-b.t b/octopus-b.t
| | | new file mode 100644 | | | new file mode 100644
| | | index 0000000..d5fcad0 | | | index BEFORE..AFTER
| | | --- /dev/null | | | --- /dev/null
| | | +++ b/octopus-b.t | | | +++ b/octopus-b.t
| | | @@ -0,0 +1 @@ | | | @@ -0,0 +1 @@
@ -996,7 +998,7 @@ cat >expect <<\EOF
| | | |
| | diff --git a/octopus-a.t b/octopus-a.t | | diff --git a/octopus-a.t b/octopus-a.t
| | new file mode 100644 | | new file mode 100644
| | index 0000000..11ee015 | | index BEFORE..AFTER
| | --- /dev/null | | --- /dev/null
| | +++ b/octopus-a.t | | +++ b/octopus-a.t
| | @@ -0,0 +1 @@ | | @@ -0,0 +1 @@
@ -1012,7 +1014,7 @@ cat >expect <<\EOF
| |
| diff --git a/seventh.t b/seventh.t | diff --git a/seventh.t b/seventh.t
| new file mode 100644 | new file mode 100644
| index 0000000..9744ffc | index BEFORE..AFTER
| --- /dev/null | --- /dev/null
| +++ b/seventh.t | +++ b/seventh.t
| @@ -0,0 +1 @@ | @@ -0,0 +1 @@
@ -1046,7 +1048,7 @@ cat >expect <<\EOF
| | | | | | | |
| | | | diff --git a/tangle-a b/tangle-a | | | | diff --git a/tangle-a b/tangle-a
| | | | new file mode 100644 | | | | new file mode 100644
| | | | index 0000000..7898192 | | | | index BEFORE..AFTER
| | | | --- /dev/null | | | | --- /dev/null
| | | | +++ b/tangle-a | | | | +++ b/tangle-a
| | | | @@ -0,0 +1 @@ | | | | @@ -0,0 +1 @@
@ -1068,7 +1070,7 @@ cat >expect <<\EOF
| | | | | | | |
| | | | diff --git a/2 b/2 | | | | diff --git a/2 b/2
| | | | new file mode 100644 | | | | new file mode 100644
| | | | index 0000000..0cfbf08 | | | | index BEFORE..AFTER
| | | | --- /dev/null | | | | --- /dev/null
| | | | +++ b/2 | | | | +++ b/2
| | | | @@ -0,0 +1 @@ | | | | @@ -0,0 +1 @@
@ -1084,7 +1086,7 @@ cat >expect <<\EOF
| | | | | | | |
| | | | diff --git a/1 b/1 | | | | diff --git a/1 b/1
| | | | new file mode 100644 | | | | new file mode 100644
| | | | index 0000000..d00491f | | | | index BEFORE..AFTER
| | | | --- /dev/null | | | | --- /dev/null
| | | | +++ b/1 | | | | +++ b/1
| | | | @@ -0,0 +1 @@ | | | | @@ -0,0 +1 @@
@ -1100,7 +1102,7 @@ cat >expect <<\EOF
| | | | | | | |
| | | | diff --git a/one b/one | | | | diff --git a/one b/one
| | | | new file mode 100644 | | | | new file mode 100644
| | | | index 0000000..9a33383 | | | | index BEFORE..AFTER
| | | | --- /dev/null | | | | --- /dev/null
| | | | +++ b/one | | | | +++ b/one
| | | | @@ -0,0 +1 @@ | | | | @@ -0,0 +1 @@
@ -1116,7 +1118,7 @@ cat >expect <<\EOF
| | | | | |
| | | diff --git a/a/two b/a/two | | | diff --git a/a/two b/a/two
| | | deleted file mode 100644 | | | deleted file mode 100644
| | | index 9245af5..0000000 | | | index BEFORE..AFTER
| | | --- a/a/two | | | --- a/a/two
| | | +++ /dev/null | | | +++ /dev/null
| | | @@ -1 +0,0 @@ | | | @@ -1 +0,0 @@
@ -1132,7 +1134,7 @@ cat >expect <<\EOF
| | | | | |
| | | diff --git a/a/two b/a/two | | | diff --git a/a/two b/a/two
| | | new file mode 100644 | | | new file mode 100644
| | | index 0000000..9245af5 | | | index BEFORE..AFTER
| | | --- /dev/null | | | --- /dev/null
| | | +++ b/a/two | | | +++ b/a/two
| | | @@ -0,0 +1 @@ | | | @@ -0,0 +1 @@
@ -1148,7 +1150,7 @@ cat >expect <<\EOF
| | | |
| | diff --git a/ein b/ein | | diff --git a/ein b/ein
| | new file mode 100644 | | new file mode 100644
| | index 0000000..9d7e69f | | index BEFORE..AFTER
| | --- /dev/null | | --- /dev/null
| | +++ b/ein | | +++ b/ein
| | @@ -0,0 +1 @@ | | @@ -0,0 +1 @@
@ -1165,14 +1167,14 @@ cat >expect <<\EOF
| |
| diff --git a/ichi b/ichi | diff --git a/ichi b/ichi
| new file mode 100644 | new file mode 100644
| index 0000000..9d7e69f | index BEFORE..AFTER
| --- /dev/null | --- /dev/null
| +++ b/ichi | +++ b/ichi
| @@ -0,0 +1 @@ | @@ -0,0 +1 @@
| +ichi | +ichi
| diff --git a/one b/one | diff --git a/one b/one
| deleted file mode 100644 | deleted file mode 100644
| index 9d7e69f..0000000 | index BEFORE..AFTER
| --- a/one | --- a/one
| +++ /dev/null | +++ /dev/null
| @@ -1 +0,0 @@ | @@ -1 +0,0 @@
@ -1187,7 +1189,7 @@ cat >expect <<\EOF
| 1 file changed, 1 insertion(+), 1 deletion(-) | 1 file changed, 1 insertion(+), 1 deletion(-)
| |
| diff --git a/one b/one | diff --git a/one b/one
| index 5626abf..9d7e69f 100644 | index BEFORE..AFTER 100644
| --- a/one | --- a/one
| +++ b/one | +++ b/one
| @@ -1 +1 @@ | @@ -1 +1 @@
@ -1204,7 +1206,7 @@ cat >expect <<\EOF
diff --git a/one b/one diff --git a/one b/one
new file mode 100644 new file mode 100644
index 0000000..5626abf index BEFORE..AFTER
--- /dev/null --- /dev/null
+++ b/one +++ b/one
@@ -0,0 +1 @@ @@ -0,0 +1 @@
@ -1221,7 +1223,8 @@ sanitize_output () {
-e 's/, 0 insertions(+)//' \ -e 's/, 0 insertions(+)//' \
-e 's/ 1 files changed, / 1 file changed, /' \ -e 's/ 1 files changed, / 1 file changed, /' \
-e 's/, 1 deletions(-)/, 1 deletion(-)/' \ -e 's/, 1 deletions(-)/, 1 deletion(-)/' \
-e 's/, 1 insertions(+)/, 1 insertion(+)/' -e 's/, 1 insertions(+)/, 1 insertion(+)/' \
-e 's/index [0-9a-f]*\.\.[0-9a-f]*/index BEFORE..AFTER/'
} }
test_expect_success 'log --graph with diff and stats' ' test_expect_success 'log --graph with diff and stats' '
@ -1247,7 +1250,7 @@ cat >expect <<\EOF
*** | | *** | |
*** | | diff --git a/reach.t b/reach.t *** | | diff --git a/reach.t b/reach.t
*** | | new file mode 100644 *** | | new file mode 100644
*** | | index 0000000..10c9591 *** | | index BEFORE..AFTER
*** | | --- /dev/null *** | | --- /dev/null
*** | | +++ b/reach.t *** | | +++ b/reach.t
*** | | @@ -0,0 +1 @@ *** | | @@ -0,0 +1 @@
@ -1270,7 +1273,7 @@ cat >expect <<\EOF
*** | | | *** | | |
*** | | | diff --git a/octopus-b.t b/octopus-b.t *** | | | diff --git a/octopus-b.t b/octopus-b.t
*** | | | new file mode 100644 *** | | | new file mode 100644
*** | | | index 0000000..d5fcad0 *** | | | index BEFORE..AFTER
*** | | | --- /dev/null *** | | | --- /dev/null
*** | | | +++ b/octopus-b.t *** | | | +++ b/octopus-b.t
*** | | | @@ -0,0 +1 @@ *** | | | @@ -0,0 +1 @@
@ -1286,7 +1289,7 @@ cat >expect <<\EOF
*** | | *** | |
*** | | diff --git a/octopus-a.t b/octopus-a.t *** | | diff --git a/octopus-a.t b/octopus-a.t
*** | | new file mode 100644 *** | | new file mode 100644
*** | | index 0000000..11ee015 *** | | index BEFORE..AFTER
*** | | --- /dev/null *** | | --- /dev/null
*** | | +++ b/octopus-a.t *** | | +++ b/octopus-a.t
*** | | @@ -0,0 +1 @@ *** | | @@ -0,0 +1 @@
@ -1302,7 +1305,7 @@ cat >expect <<\EOF
*** | *** |
*** | diff --git a/seventh.t b/seventh.t *** | diff --git a/seventh.t b/seventh.t
*** | new file mode 100644 *** | new file mode 100644
*** | index 0000000..9744ffc *** | index BEFORE..AFTER
*** | --- /dev/null *** | --- /dev/null
*** | +++ b/seventh.t *** | +++ b/seventh.t
*** | @@ -0,0 +1 @@ *** | @@ -0,0 +1 @@
@ -1336,7 +1339,7 @@ cat >expect <<\EOF
*** | | | | *** | | | |
*** | | | | diff --git a/tangle-a b/tangle-a *** | | | | diff --git a/tangle-a b/tangle-a
*** | | | | new file mode 100644 *** | | | | new file mode 100644
*** | | | | index 0000000..7898192 *** | | | | index BEFORE..AFTER
*** | | | | --- /dev/null *** | | | | --- /dev/null
*** | | | | +++ b/tangle-a *** | | | | +++ b/tangle-a
*** | | | | @@ -0,0 +1 @@ *** | | | | @@ -0,0 +1 @@
@ -1358,7 +1361,7 @@ cat >expect <<\EOF
*** | | | | *** | | | |
*** | | | | diff --git a/2 b/2 *** | | | | diff --git a/2 b/2
*** | | | | new file mode 100644 *** | | | | new file mode 100644
*** | | | | index 0000000..0cfbf08 *** | | | | index BEFORE..AFTER
*** | | | | --- /dev/null *** | | | | --- /dev/null
*** | | | | +++ b/2 *** | | | | +++ b/2
*** | | | | @@ -0,0 +1 @@ *** | | | | @@ -0,0 +1 @@
@ -1374,7 +1377,7 @@ cat >expect <<\EOF
*** | | | | *** | | | |
*** | | | | diff --git a/1 b/1 *** | | | | diff --git a/1 b/1
*** | | | | new file mode 100644 *** | | | | new file mode 100644
*** | | | | index 0000000..d00491f *** | | | | index BEFORE..AFTER
*** | | | | --- /dev/null *** | | | | --- /dev/null
*** | | | | +++ b/1 *** | | | | +++ b/1
*** | | | | @@ -0,0 +1 @@ *** | | | | @@ -0,0 +1 @@
@ -1390,7 +1393,7 @@ cat >expect <<\EOF
*** | | | | *** | | | |
*** | | | | diff --git a/one b/one *** | | | | diff --git a/one b/one
*** | | | | new file mode 100644 *** | | | | new file mode 100644
*** | | | | index 0000000..9a33383 *** | | | | index BEFORE..AFTER
*** | | | | --- /dev/null *** | | | | --- /dev/null
*** | | | | +++ b/one *** | | | | +++ b/one
*** | | | | @@ -0,0 +1 @@ *** | | | | @@ -0,0 +1 @@
@ -1406,7 +1409,7 @@ cat >expect <<\EOF
*** | | | *** | | |
*** | | | diff --git a/a/two b/a/two *** | | | diff --git a/a/two b/a/two
*** | | | deleted file mode 100644 *** | | | deleted file mode 100644
*** | | | index 9245af5..0000000 *** | | | index BEFORE..AFTER
*** | | | --- a/a/two *** | | | --- a/a/two
*** | | | +++ /dev/null *** | | | +++ /dev/null
*** | | | @@ -1 +0,0 @@ *** | | | @@ -1 +0,0 @@
@ -1422,7 +1425,7 @@ cat >expect <<\EOF
*** | | | *** | | |
*** | | | diff --git a/a/two b/a/two *** | | | diff --git a/a/two b/a/two
*** | | | new file mode 100644 *** | | | new file mode 100644
*** | | | index 0000000..9245af5 *** | | | index BEFORE..AFTER
*** | | | --- /dev/null *** | | | --- /dev/null
*** | | | +++ b/a/two *** | | | +++ b/a/two
*** | | | @@ -0,0 +1 @@ *** | | | @@ -0,0 +1 @@
@ -1438,7 +1441,7 @@ cat >expect <<\EOF
*** | | *** | |
*** | | diff --git a/ein b/ein *** | | diff --git a/ein b/ein
*** | | new file mode 100644 *** | | new file mode 100644
*** | | index 0000000..9d7e69f *** | | index BEFORE..AFTER
*** | | --- /dev/null *** | | --- /dev/null
*** | | +++ b/ein *** | | +++ b/ein
*** | | @@ -0,0 +1 @@ *** | | @@ -0,0 +1 @@
@ -1455,14 +1458,14 @@ cat >expect <<\EOF
*** | *** |
*** | diff --git a/ichi b/ichi *** | diff --git a/ichi b/ichi
*** | new file mode 100644 *** | new file mode 100644
*** | index 0000000..9d7e69f *** | index BEFORE..AFTER
*** | --- /dev/null *** | --- /dev/null
*** | +++ b/ichi *** | +++ b/ichi
*** | @@ -0,0 +1 @@ *** | @@ -0,0 +1 @@
*** | +ichi *** | +ichi
*** | diff --git a/one b/one *** | diff --git a/one b/one
*** | deleted file mode 100644 *** | deleted file mode 100644
*** | index 9d7e69f..0000000 *** | index BEFORE..AFTER
*** | --- a/one *** | --- a/one
*** | +++ /dev/null *** | +++ /dev/null
*** | @@ -1 +0,0 @@ *** | @@ -1 +0,0 @@
@ -1477,7 +1480,7 @@ cat >expect <<\EOF
*** | 1 file changed, 1 insertion(+), 1 deletion(-) *** | 1 file changed, 1 insertion(+), 1 deletion(-)
*** | *** |
*** | diff --git a/one b/one *** | diff --git a/one b/one
*** | index 5626abf..9d7e69f 100644 *** | index BEFORE..AFTER 100644
*** | --- a/one *** | --- a/one
*** | +++ b/one *** | +++ b/one
*** | @@ -1 +1 @@ *** | @@ -1 +1 @@
@ -1494,7 +1497,7 @@ cat >expect <<\EOF
*** ***
*** diff --git a/one b/one *** diff --git a/one b/one
*** new file mode 100644 *** new file mode 100644
*** index 0000000..5626abf *** index BEFORE..AFTER
*** --- /dev/null *** --- /dev/null
*** +++ b/one *** +++ b/one
*** @@ -0,0 +1 @@ *** @@ -0,0 +1 @@
@ -1709,10 +1712,10 @@ test_expect_success 'set up --source tests' '
' '
test_expect_success 'log --source paints branch names' ' test_expect_success 'log --source paints branch names' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
09e12a9 source-b three $(git rev-parse --short :/three) source-b three
8e393e1 source-a two $(git rev-parse --short :/two ) source-a two
1ac6c77 source-b one $(git rev-parse --short :/one ) source-b one
EOF EOF
git log --oneline --source source-a source-b >actual && git log --oneline --source source-a source-b >actual &&
test_cmp expect actual test_cmp expect actual
@ -1720,19 +1723,19 @@ test_expect_success 'log --source paints branch names' '
test_expect_success 'log --source paints tag names' ' test_expect_success 'log --source paints tag names' '
git tag -m tagged source-tag && git tag -m tagged source-tag &&
cat >expect <<-\EOF && cat >expect <<-EOF &&
09e12a9 source-tag three $(git rev-parse --short :/three) source-tag three
8e393e1 source-a two $(git rev-parse --short :/two ) source-a two
1ac6c77 source-tag one $(git rev-parse --short :/one ) source-tag one
EOF EOF
git log --oneline --source source-tag source-a >actual && git log --oneline --source source-tag source-a >actual &&
test_cmp expect actual test_cmp expect actual
' '
test_expect_success 'log --source paints symmetric ranges' ' test_expect_success 'log --source paints symmetric ranges' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
09e12a9 source-b three $(git rev-parse --short :/three) source-b three
8e393e1 source-a two $(git rev-parse --short :/two ) source-a two
EOF EOF
git log --oneline --source source-a...source-b >actual && git log --oneline --source source-a...source-b >actual &&
test_cmp expect actual test_cmp expect actual

View File

@ -25,7 +25,7 @@ test_expect_success 'setup' '
test_expect_success 'patch-id output is well-formed' ' test_expect_success 'patch-id output is well-formed' '
git log -p -1 | git patch-id >output && git log -p -1 | git patch-id >output &&
grep "^[a-f0-9]\{40\} $(git rev-parse HEAD)$" output grep "^$OID_REGEX $(git rev-parse HEAD)$" output
' '
#calculate patch id. Make sure output is not empty. #calculate patch id. Make sure output is not empty.

View File

@ -11,16 +11,16 @@ test_expect_success setup '
' '
test_expect_success 'file add A, !B' ' test_expect_success 'file add A, !B' '
cat >expected <<\EXPECTED && git reset --hard initial &&
test_commit "add-a-not-b" "ONE" "AAA" &&
git merge-tree initial initial add-a-not-b >actual &&
cat >expected <<EXPECTED &&
added in remote added in remote
their 100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE their 100644 $(git rev-parse HEAD:ONE) ONE
@@ -0,0 +1 @@ @@ -0,0 +1 @@
+AAA +AAA
EXPECTED EXPECTED
git reset --hard initial &&
test_commit "add-a-not-b" "ONE" "AAA" &&
git merge-tree initial initial add-a-not-b >actual &&
test_cmp expected actual test_cmp expected actual
' '
@ -41,10 +41,15 @@ test_expect_success 'file add A, B (same)' '
' '
test_expect_success 'file add A, B (different)' ' test_expect_success 'file add A, B (different)' '
cat >expected <<\EXPECTED && git reset --hard initial &&
test_commit "add-a-b-diff-A" "ONE" "AAA" &&
git reset --hard initial &&
test_commit "add-a-b-diff-B" "ONE" "BBB" &&
git merge-tree initial add-a-b-diff-A add-a-b-diff-B >actual &&
cat >expected <<EXPECTED &&
added in both added in both
our 100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE our 100644 $(git rev-parse add-a-b-diff-A:ONE) ONE
their 100644 ba629238ca89489f2b350e196ca445e09d8bb834 ONE their 100644 $(git rev-parse add-a-b-diff-B:ONE) ONE
@@ -1 +1,5 @@ @@ -1 +1,5 @@
+<<<<<<< .our +<<<<<<< .our
AAA AAA
@ -53,11 +58,6 @@ added in both
+>>>>>>> .their +>>>>>>> .their
EXPECTED EXPECTED
git reset --hard initial &&
test_commit "add-a-b-diff-A" "ONE" "AAA" &&
git reset --hard initial &&
test_commit "add-a-b-diff-B" "ONE" "BBB" &&
git merge-tree initial add-a-b-diff-A add-a-b-diff-B >actual &&
test_cmp expected actual test_cmp expected actual
' '
@ -69,18 +69,18 @@ test_expect_success 'file change A, !B' '
' '
test_expect_success 'file change !A, B' ' test_expect_success 'file change !A, B' '
cat >expected <<\EXPECTED && git reset --hard initial &&
test_commit "change-not-a-b" "initial-file" "BBB" &&
git merge-tree initial initial change-not-a-b >actual &&
cat >expected <<EXPECTED &&
merged merged
result 100644 ba629238ca89489f2b350e196ca445e09d8bb834 initial-file result 100644 $(git rev-parse change-a-not-b:initial-file) initial-file
our 100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file our 100644 $(git rev-parse initial:initial-file ) initial-file
@@ -1 +1 @@ @@ -1 +1 @@
-initial -initial
+BBB +BBB
EXPECTED EXPECTED
git reset --hard initial &&
test_commit "change-not-a-b" "initial-file" "BBB" &&
git merge-tree initial initial change-not-a-b >actual &&
test_cmp expected actual test_cmp expected actual
' '
@ -94,11 +94,16 @@ test_expect_success 'file change A, B (same)' '
' '
test_expect_success 'file change A, B (different)' ' test_expect_success 'file change A, B (different)' '
cat >expected <<\EXPECTED && git reset --hard initial &&
test_commit "change-a-b-diff-A" "initial-file" "AAA" &&
git reset --hard initial &&
test_commit "change-a-b-diff-B" "initial-file" "BBB" &&
git merge-tree initial change-a-b-diff-A change-a-b-diff-B >actual &&
cat >expected <<EXPECTED &&
changed in both changed in both
base 100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file base 100644 $(git rev-parse initial:initial-file ) initial-file
our 100644 43d5a8ed6ef6c00ff775008633f95787d088285d initial-file our 100644 $(git rev-parse change-a-b-diff-A:initial-file) initial-file
their 100644 ba629238ca89489f2b350e196ca445e09d8bb834 initial-file their 100644 $(git rev-parse change-a-b-diff-B:initial-file) initial-file
@@ -1 +1,5 @@ @@ -1 +1,5 @@
+<<<<<<< .our +<<<<<<< .our
AAA AAA
@ -107,34 +112,10 @@ changed in both
+>>>>>>> .their +>>>>>>> .their
EXPECTED EXPECTED
git reset --hard initial &&
test_commit "change-a-b-diff-A" "initial-file" "AAA" &&
git reset --hard initial &&
test_commit "change-a-b-diff-B" "initial-file" "BBB" &&
git merge-tree initial change-a-b-diff-A change-a-b-diff-B >actual &&
test_cmp expected actual test_cmp expected actual
' '
test_expect_success 'file change A, B (mixed)' ' test_expect_success 'file change A, B (mixed)' '
cat >expected <<\EXPECTED &&
changed in both
base 100644 f4f1f998c7776568c4ff38f516d77fef9399b5a7 ONE
our 100644 af14c2c3475337c73759d561ef70b59e5c731176 ONE
their 100644 372d761493f524d44d59bd24700c3bdf914c973c ONE
@@ -7,7 +7,11 @@
AAA
AAA
AAA
+<<<<<<< .our
BBB
+=======
+CCC
+>>>>>>> .their
AAA
AAA
AAA
EXPECTED
git reset --hard initial && git reset --hard initial &&
test_commit "change-a-b-mix-base" "ONE" " test_commit "change-a-b-mix-base" "ONE" "
AAA AAA
@ -159,6 +140,26 @@ AAA" &&
"$(sed -e "1{s/AAA/BBB/;}" -e "10{s/AAA/CCC/;}" <ONE)" && "$(sed -e "1{s/AAA/BBB/;}" -e "10{s/AAA/CCC/;}" <ONE)" &&
git merge-tree change-a-b-mix-base change-a-b-mix-A change-a-b-mix-B \ git merge-tree change-a-b-mix-base change-a-b-mix-A change-a-b-mix-B \
>actual && >actual &&
cat >expected <<EXPECTED &&
changed in both
base 100644 $(git rev-parse change-a-b-mix-base:ONE) ONE
our 100644 $(git rev-parse change-a-b-mix-A:ONE ) ONE
their 100644 $(git rev-parse change-a-b-mix-B:ONE ) ONE
@@ -7,7 +7,11 @@
AAA
AAA
AAA
+<<<<<<< .our
BBB
+=======
+CCC
+>>>>>>> .their
AAA
AAA
AAA
EXPECTED
test_cmp expected actual test_cmp expected actual
' '
@ -173,20 +174,20 @@ test_expect_success 'file remove A, !B' '
' '
test_expect_success 'file remove !A, B' ' test_expect_success 'file remove !A, B' '
cat >expected <<\EXPECTED &&
removed in remote
base 100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE
our 100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE
@@ -1 +0,0 @@
-AAA
EXPECTED
git reset --hard initial && git reset --hard initial &&
test_commit "rm-not-a-b-base" "ONE" "AAA" && test_commit "rm-not-a-b-base" "ONE" "AAA" &&
git rm ONE && git rm ONE &&
git commit -m "rm-not-a-b" && git commit -m "rm-not-a-b" &&
git tag "rm-not-a-b" && git tag "rm-not-a-b" &&
git merge-tree rm-a-not-b-base rm-a-not-b-base rm-a-not-b >actual && git merge-tree rm-a-not-b-base rm-a-not-b-base rm-a-not-b >actual &&
cat >expected <<EXPECTED &&
removed in remote
base 100644 $(git rev-parse rm-a-not-b-base:ONE) ONE
our 100644 $(git rev-parse rm-a-not-b-base:ONE) ONE
@@ -1 +0,0 @@
-AAA
EXPECTED
test_cmp expected actual test_cmp expected actual
' '
@ -201,14 +202,6 @@ test_expect_success 'file remove A, B (same)' '
' '
test_expect_success 'file change A, remove B' ' test_expect_success 'file change A, remove B' '
cat >expected <<\EXPECTED &&
removed in remote
base 100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE
our 100644 ba629238ca89489f2b350e196ca445e09d8bb834 ONE
@@ -1 +0,0 @@
-BBB
EXPECTED
git reset --hard initial && git reset --hard initial &&
test_commit "change-a-rm-b-base" "ONE" "AAA" && test_commit "change-a-rm-b-base" "ONE" "AAA" &&
test_commit "change-a-rm-b-A" "ONE" "BBB" && test_commit "change-a-rm-b-A" "ONE" "BBB" &&
@ -218,16 +211,18 @@ EXPECTED
git tag "change-a-rm-b-B" && git tag "change-a-rm-b-B" &&
git merge-tree change-a-rm-b-base change-a-rm-b-A change-a-rm-b-B \ git merge-tree change-a-rm-b-base change-a-rm-b-A change-a-rm-b-B \
>actual && >actual &&
cat >expected <<EXPECTED &&
removed in remote
base 100644 $(git rev-parse change-a-rm-b-base:ONE) ONE
our 100644 $(git rev-parse change-a-rm-b-A:ONE ) ONE
@@ -1 +0,0 @@
-BBB
EXPECTED
test_cmp expected actual test_cmp expected actual
' '
test_expect_success 'file remove A, change B' ' test_expect_success 'file remove A, change B' '
cat >expected <<\EXPECTED &&
removed in local
base 100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE
their 100644 ba629238ca89489f2b350e196ca445e09d8bb834 ONE
EXPECTED
git reset --hard initial && git reset --hard initial &&
test_commit "rm-a-change-b-base" "ONE" "AAA" && test_commit "rm-a-change-b-base" "ONE" "AAA" &&
@ -238,6 +233,11 @@ EXPECTED
test_commit "rm-a-change-b-B" "ONE" "BBB" && test_commit "rm-a-change-b-B" "ONE" "BBB" &&
git merge-tree rm-a-change-b-base rm-a-change-b-A rm-a-change-b-B \ git merge-tree rm-a-change-b-base rm-a-change-b-A rm-a-change-b-B \
>actual && >actual &&
cat >expected <<EXPECTED &&
removed in local
base 100644 $(git rev-parse rm-a-change-b-base:ONE) ONE
their 100644 $(git rev-parse rm-a-change-b-B:ONE ) ONE
EXPECTED
test_cmp expected actual test_cmp expected actual
' '
@ -250,17 +250,6 @@ test_expect_success 'tree add A, B (same)' '
' '
test_expect_success 'tree add A, B (different)' ' test_expect_success 'tree add A, B (different)' '
cat >expect <<-\EOF &&
added in both
our 100644 43d5a8ed6ef6c00ff775008633f95787d088285d sub/file
their 100644 ba629238ca89489f2b350e196ca445e09d8bb834 sub/file
@@ -1 +1,5 @@
+<<<<<<< .our
AAA
+=======
+BBB
+>>>>>>> .their
EOF
git reset --hard initial && git reset --hard initial &&
mkdir sub && mkdir sub &&
test_commit "add sub/file" "sub/file" "AAA" add-tree-a-b-A && test_commit "add sub/file" "sub/file" "AAA" add-tree-a-b-A &&
@ -268,17 +257,21 @@ test_expect_success 'tree add A, B (different)' '
mkdir sub && mkdir sub &&
test_commit "add sub/file" "sub/file" "BBB" add-tree-a-b-B && test_commit "add sub/file" "sub/file" "BBB" add-tree-a-b-B &&
git merge-tree initial add-tree-a-b-A add-tree-a-b-B >actual && git merge-tree initial add-tree-a-b-A add-tree-a-b-B >actual &&
cat >expect <<-EOF &&
added in both
our 100644 $(git rev-parse add-tree-a-b-A:sub/file) sub/file
their 100644 $(git rev-parse add-tree-a-b-B:sub/file) sub/file
@@ -1 +1,5 @@
+<<<<<<< .our
AAA
+=======
+BBB
+>>>>>>> .their
EOF
test_cmp expect actual test_cmp expect actual
' '
test_expect_success 'tree unchanged A, removed B' ' test_expect_success 'tree unchanged A, removed B' '
cat >expect <<-\EOF &&
removed in remote
base 100644 43d5a8ed6ef6c00ff775008633f95787d088285d sub/file
our 100644 43d5a8ed6ef6c00ff775008633f95787d088285d sub/file
@@ -1 +0,0 @@
-AAA
EOF
git reset --hard initial && git reset --hard initial &&
mkdir sub && mkdir sub &&
test_commit "add sub/file" "sub/file" "AAA" tree-remove-b-initial && test_commit "add sub/file" "sub/file" "AAA" tree-remove-b-initial &&
@ -287,6 +280,13 @@ test_expect_success 'tree unchanged A, removed B' '
git commit -m "remove sub/file" && git commit -m "remove sub/file" &&
git tag tree-remove-b-B && git tag tree-remove-b-B &&
git merge-tree tree-remove-b-initial tree-remove-b-initial tree-remove-b-B >actual && git merge-tree tree-remove-b-initial tree-remove-b-initial tree-remove-b-B >actual &&
cat >expect <<-EOF &&
removed in remote
base 100644 $(git rev-parse tree-remove-b-initial:sub/file) sub/file
our 100644 $(git rev-parse tree-remove-b-initial:sub/file) sub/file
@@ -1 +0,0 @@
-AAA
EOF
test_cmp expect actual test_cmp expect actual
' '
@ -296,14 +296,14 @@ test_expect_success 'turn file to tree' '
mkdir initial-file && mkdir initial-file &&
test_commit "turn-file-to-tree" "initial-file/ONE" "CCC" && test_commit "turn-file-to-tree" "initial-file/ONE" "CCC" &&
git merge-tree initial initial turn-file-to-tree >actual && git merge-tree initial initial turn-file-to-tree >actual &&
cat >expect <<-\EOF && cat >expect <<-EOF &&
added in remote added in remote
their 100644 43aa4fdec31eb92e1fdc2f0ce6ea9ddb7c32bcf7 initial-file/ONE their 100644 $(git rev-parse turn-file-to-tree:initial-file/ONE) initial-file/ONE
@@ -0,0 +1 @@ @@ -0,0 +1 @@
+CCC +CCC
removed in remote removed in remote
base 100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file base 100644 $(git rev-parse initial:initial-file) initial-file
our 100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file our 100644 $(git rev-parse initial:initial-file) initial-file
@@ -1 +0,0 @@ @@ -1 +0,0 @@
-initial -initial
EOF EOF
@ -318,14 +318,14 @@ test_expect_success 'turn tree to file' '
rm -fr dir && rm -fr dir &&
test_commit "make-file" "dir" "CCC" && test_commit "make-file" "dir" "CCC" &&
git merge-tree add-tree add-another-tree make-file >actual && git merge-tree add-tree add-another-tree make-file >actual &&
cat >expect <<-\EOF && cat >expect <<-EOF &&
removed in remote removed in remote
base 100644 43d5a8ed6ef6c00ff775008633f95787d088285d dir/path base 100644 $(git rev-parse add-tree:dir/path) dir/path
our 100644 43d5a8ed6ef6c00ff775008633f95787d088285d dir/path our 100644 $(git rev-parse add-tree:dir/path) dir/path
@@ -1 +0,0 @@ @@ -1 +0,0 @@
-AAA -AAA
added in remote added in remote
their 100644 43aa4fdec31eb92e1fdc2f0ce6ea9ddb7c32bcf7 dir their 100644 $(git rev-parse make-file:dir) dir
@@ -0,0 +1 @@ @@ -0,0 +1 @@
+CCC +CCC
EOF EOF

View File

@ -481,7 +481,7 @@ test_expect_success 'detect bad version' '
' '
test_expect_success 'detect bad hash version' ' test_expect_success 'detect bad hash version' '
corrupt_graph_and_verify $GRAPH_BYTE_HASH "\02" \ corrupt_graph_and_verify $GRAPH_BYTE_HASH "\03" \
"hash version" "hash version"
' '

View File

@ -28,6 +28,20 @@ midx_read_expect () {
test_cmp expect actual test_cmp expect actual
} }
test_expect_success 'setup' '
test_oid_init &&
test_oid_cache <<-EOF
idxoff sha1:2999
idxoff sha256:3739
packnameoff sha1:652
packnameoff sha256:940
fanoutoff sha1:1
fanoutoff sha256:3
EOF
'
test_expect_success 'write midx with no packs' ' test_expect_success 'write midx with no packs' '
test_when_finished rm -f pack/multi-pack-index && test_when_finished rm -f pack/multi-pack-index &&
git multi-pack-index --object-dir=. write && git multi-pack-index --object-dir=. write &&
@ -225,7 +239,7 @@ test_expect_success 'verify bad signature' '
"multi-pack-index signature" "multi-pack-index signature"
' '
HASH_LEN=20 HASH_LEN=$(test_oid rawsz)
NUM_OBJECTS=74 NUM_OBJECTS=74
MIDX_BYTE_VERSION=4 MIDX_BYTE_VERSION=4
MIDX_BYTE_OID_VERSION=5 MIDX_BYTE_OID_VERSION=5
@ -238,9 +252,9 @@ MIDX_CHUNK_LOOKUP_WIDTH=12
MIDX_OFFSET_PACKNAMES=$(($MIDX_HEADER_SIZE + \ MIDX_OFFSET_PACKNAMES=$(($MIDX_HEADER_SIZE + \
$MIDX_NUM_CHUNKS * $MIDX_CHUNK_LOOKUP_WIDTH)) $MIDX_NUM_CHUNKS * $MIDX_CHUNK_LOOKUP_WIDTH))
MIDX_BYTE_PACKNAME_ORDER=$(($MIDX_OFFSET_PACKNAMES + 2)) MIDX_BYTE_PACKNAME_ORDER=$(($MIDX_OFFSET_PACKNAMES + 2))
MIDX_OFFSET_OID_FANOUT=$(($MIDX_OFFSET_PACKNAMES + 652)) MIDX_OFFSET_OID_FANOUT=$(($MIDX_OFFSET_PACKNAMES + $(test_oid packnameoff)))
MIDX_OID_FANOUT_WIDTH=4 MIDX_OID_FANOUT_WIDTH=4
MIDX_BYTE_OID_FANOUT_ORDER=$((MIDX_OFFSET_OID_FANOUT + 250 * $MIDX_OID_FANOUT_WIDTH + 1)) MIDX_BYTE_OID_FANOUT_ORDER=$((MIDX_OFFSET_OID_FANOUT + 250 * $MIDX_OID_FANOUT_WIDTH + $(test_oid fanoutoff)))
MIDX_OFFSET_OID_LOOKUP=$(($MIDX_OFFSET_OID_FANOUT + 256 * $MIDX_OID_FANOUT_WIDTH)) MIDX_OFFSET_OID_LOOKUP=$(($MIDX_OFFSET_OID_FANOUT + 256 * $MIDX_OID_FANOUT_WIDTH))
MIDX_BYTE_OID_LOOKUP=$(($MIDX_OFFSET_OID_LOOKUP + 16 * $HASH_LEN)) MIDX_BYTE_OID_LOOKUP=$(($MIDX_OFFSET_OID_LOOKUP + 16 * $HASH_LEN))
MIDX_OFFSET_OBJECT_OFFSETS=$(($MIDX_OFFSET_OID_LOOKUP + $NUM_OBJECTS * $HASH_LEN)) MIDX_OFFSET_OBJECT_OFFSETS=$(($MIDX_OFFSET_OID_LOOKUP + $NUM_OBJECTS * $HASH_LEN))
@ -304,12 +318,12 @@ test_expect_success 'verify incorrect pack-int-id' '
' '
test_expect_success 'verify incorrect offset' ' test_expect_success 'verify incorrect offset' '
corrupt_midx_and_verify $MIDX_BYTE_OFFSET "\07" $objdir \ corrupt_midx_and_verify $MIDX_BYTE_OFFSET "\377" $objdir \
"incorrect object offset" "incorrect object offset"
' '
test_expect_success 'git-fsck incorrect offset' ' test_expect_success 'git-fsck incorrect offset' '
corrupt_midx_and_verify $MIDX_BYTE_OFFSET "\07" $objdir \ corrupt_midx_and_verify $MIDX_BYTE_OFFSET "\377" $objdir \
"incorrect object offset" \ "incorrect object offset" \
"git -c core.multipackindex=true fsck" "git -c core.multipackindex=true fsck"
' '
@ -387,7 +401,7 @@ test_expect_success 'force some 64-bit offsets with pack-objects' '
pack64=$(git pack-objects --index-version=2,0x40 objects64/pack/test-64 <obj-list) && pack64=$(git pack-objects --index-version=2,0x40 objects64/pack/test-64 <obj-list) &&
idx64=objects64/pack/test-64-$pack64.idx && idx64=objects64/pack/test-64-$pack64.idx &&
chmod u+w $idx64 && chmod u+w $idx64 &&
corrupt_data $idx64 2999 "\02" && corrupt_data $idx64 $(test_oid idxoff) "\02" &&
midx64=$(git multi-pack-index --object-dir=objects64 write) && midx64=$(git multi-pack-index --object-dir=objects64 write) &&
midx_read_expect 1 63 5 objects64 " large-offsets" midx_read_expect 1 63 5 objects64 " large-offsets"
' '

View File

@ -11,7 +11,14 @@ test_expect_success 'setup repo' '
git config gc.writeCommitGraph false && git config gc.writeCommitGraph false &&
infodir=".git/objects/info" && infodir=".git/objects/info" &&
graphdir="$infodir/commit-graphs" && graphdir="$infodir/commit-graphs" &&
test_oid_init test_oid_init &&
test_oid_cache <<-EOM
shallow sha1:1760
shallow sha256:2064
base sha1:1376
base sha256:1496
EOM
' '
graph_read_expect() { graph_read_expect() {
@ -248,7 +255,7 @@ test_expect_success 'verify hashes along chain, even in shallow' '
cd verify && cd verify &&
git commit-graph verify && git commit-graph verify &&
base_file=$graphdir/graph-$(head -n 1 $graphdir/commit-graph-chain).graph && base_file=$graphdir/graph-$(head -n 1 $graphdir/commit-graph-chain).graph &&
corrupt_file "$base_file" 1760 "\01" && corrupt_file "$base_file" $(test_oid shallow) "\01" &&
test_must_fail git commit-graph verify --shallow 2>test_err && test_must_fail git commit-graph verify --shallow 2>test_err &&
grep -v "^+" test_err >err && grep -v "^+" test_err >err &&
test_i18ngrep "incorrect checksum" err test_i18ngrep "incorrect checksum" err
@ -275,7 +282,7 @@ test_expect_success 'warn on base graph chunk incorrect' '
cd base-chunk && cd base-chunk &&
git commit-graph verify && git commit-graph verify &&
base_file=$graphdir/graph-$(tail -n 1 $graphdir/commit-graph-chain).graph && base_file=$graphdir/graph-$(tail -n 1 $graphdir/commit-graph-chain).graph &&
corrupt_file "$base_file" 1376 "\01" && corrupt_file "$base_file" $(test_oid base) "\01" &&
git commit-graph verify --shallow 2>test_err && git commit-graph verify --shallow 2>test_err &&
grep -v "^+" test_err >err && grep -v "^+" test_err >err &&
test_i18ngrep "commit-graph chain does not match" err test_i18ngrep "commit-graph chain does not match" err

View File

@ -4,6 +4,7 @@ test_description='fetch/receive strict mode'
. ./test-lib.sh . ./test-lib.sh
test_expect_success 'setup and inject "corrupt or missing" object' ' test_expect_success 'setup and inject "corrupt or missing" object' '
test_oid_init &&
echo hello >greetings && echo hello >greetings &&
git add greetings && git add greetings &&
git commit -m greetings && git commit -m greetings &&
@ -144,11 +145,11 @@ test_expect_success 'fsck with no skipList input' '
test_expect_success 'setup sorted and unsorted skipLists' ' test_expect_success 'setup sorted and unsorted skipLists' '
cat >SKIP.unsorted <<-EOF && cat >SKIP.unsorted <<-EOF &&
0000000000000000000000000000000000000004 $(test_oid 004)
0000000000000000000000000000000000000002 $(test_oid 002)
$commit $commit
0000000000000000000000000000000000000001 $(test_oid 001)
0000000000000000000000000000000000000003 $(test_oid 003)
EOF EOF
sort SKIP.unsorted >SKIP.sorted sort SKIP.unsorted >SKIP.sorted
' '
@ -172,14 +173,14 @@ test_expect_success 'fsck with invalid or bogus skipList input' '
test_expect_success 'fsck with other accepted skipList input (comments & empty lines)' ' test_expect_success 'fsck with other accepted skipList input (comments & empty lines)' '
cat >SKIP.with-comment <<-EOF && cat >SKIP.with-comment <<-EOF &&
# Some bad commit # Some bad commit
0000000000000000000000000000000000000001 $(test_oid 001)
EOF EOF
test_must_fail git -c fsck.skipList=SKIP.with-comment fsck 2>err-with-comment && test_must_fail git -c fsck.skipList=SKIP.with-comment fsck 2>err-with-comment &&
test_i18ngrep "missingEmail" err-with-comment && test_i18ngrep "missingEmail" err-with-comment &&
cat >SKIP.with-empty-line <<-EOF && cat >SKIP.with-empty-line <<-EOF &&
0000000000000000000000000000000000000001 $(test_oid 001)
0000000000000000000000000000000000000002 $(test_oid 002)
EOF EOF
test_must_fail git -c fsck.skipList=SKIP.with-empty-line fsck 2>err-with-empty-line && test_must_fail git -c fsck.skipList=SKIP.with-empty-line fsck 2>err-with-empty-line &&
test_i18ngrep "missingEmail" err-with-empty-line test_i18ngrep "missingEmail" err-with-empty-line
@ -204,7 +205,7 @@ test_expect_success 'fsck with exhaustive accepted skipList input (various types
echo " # Comment after whitespace" >>SKIP.exhaustive && echo " # Comment after whitespace" >>SKIP.exhaustive &&
echo "$commit # Our bad commit (with leading whitespace and trailing comment)" >>SKIP.exhaustive && echo "$commit # Our bad commit (with leading whitespace and trailing comment)" >>SKIP.exhaustive &&
echo "# Some bad commit (leading whitespace)" >>SKIP.exhaustive && echo "# Some bad commit (leading whitespace)" >>SKIP.exhaustive &&
echo " 0000000000000000000000000000000000000001" >>SKIP.exhaustive && echo " $(test_oid 001)" >>SKIP.exhaustive &&
git -c fsck.skipList=SKIP.exhaustive fsck 2>err && git -c fsck.skipList=SKIP.exhaustive fsck 2>err &&
test_must_be_empty err test_must_be_empty err
' '

View File

@ -11,7 +11,7 @@ D=$(pwd)
test_bundle_object_count () { test_bundle_object_count () {
git verify-pack -v "$1" >verify.out && git verify-pack -v "$1" >verify.out &&
test "$2" = $(grep '^[0-9a-f]\{40\} ' verify.out | wc -l) test "$2" = $(grep "^$OID_REGEX " verify.out | wc -l)
} }
convert_bundle_to_pack () { convert_bundle_to_pack () {
@ -285,9 +285,10 @@ test_expect_success 'create bundle 1' '
' '
test_expect_success 'header of bundle looks right' ' test_expect_success 'header of bundle looks right' '
head -n 4 "$D"/bundle1 &&
head -n 1 "$D"/bundle1 | grep "^#" && head -n 1 "$D"/bundle1 | grep "^#" &&
head -n 2 "$D"/bundle1 | grep "^-[0-9a-f]\{40\} " && head -n 2 "$D"/bundle1 | grep "^-$OID_REGEX " &&
head -n 3 "$D"/bundle1 | grep "^[0-9a-f]\{40\} " && head -n 3 "$D"/bundle1 | grep "^$OID_REGEX " &&
head -n 4 "$D"/bundle1 | grep "^$" head -n 4 "$D"/bundle1 | grep "^$"
' '
@ -313,7 +314,7 @@ test_expect_success 'bundle 1 has only 3 files ' '
test_expect_success 'unbundle 2' ' test_expect_success 'unbundle 2' '
cd "$D/bundle" && cd "$D/bundle" &&
git fetch ../bundle2 master:master && git fetch ../bundle2 master:master &&
test "tip" = "$(git log -1 --pretty=oneline master | cut -b42-)" test "tip" = "$(git log -1 --pretty=oneline master | cut -d" " -f2)"
' '
test_expect_success 'bundle does not prerequisite objects' ' test_expect_success 'bundle does not prerequisite objects' '

View File

@ -230,9 +230,10 @@ test_expect_success 'ls-remote --symref' '
' '
test_expect_success 'ls-remote with filtered symref (refname)' ' test_expect_success 'ls-remote with filtered symref (refname)' '
cat >expect <<-\EOF && rev=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
ref: refs/heads/master HEAD ref: refs/heads/master HEAD
1bd44cb9d13204b0fe1958db0082f5028a16eb3a HEAD $rev HEAD
EOF EOF
# Protocol v2 supports sending symrefs for refs other than HEAD, so use # Protocol v2 supports sending symrefs for refs other than HEAD, so use
# protocol v0 here. # protocol v0 here.
@ -242,10 +243,10 @@ test_expect_success 'ls-remote with filtered symref (refname)' '
test_expect_failure 'ls-remote with filtered symref (--heads)' ' test_expect_failure 'ls-remote with filtered symref (--heads)' '
git symbolic-ref refs/heads/foo refs/tags/mark && git symbolic-ref refs/heads/foo refs/tags/mark &&
cat >expect <<-\EOF && cat >expect <<-EOF &&
ref: refs/tags/mark refs/heads/foo ref: refs/tags/mark refs/heads/foo
1bd44cb9d13204b0fe1958db0082f5028a16eb3a refs/heads/foo $rev refs/heads/foo
1bd44cb9d13204b0fe1958db0082f5028a16eb3a refs/heads/master $rev refs/heads/master
EOF EOF
# Protocol v2 supports sending symrefs for refs other than HEAD, so use # Protocol v2 supports sending symrefs for refs other than HEAD, so use
# protocol v0 here. # protocol v0 here.
@ -254,9 +255,9 @@ test_expect_failure 'ls-remote with filtered symref (--heads)' '
' '
test_expect_success 'ls-remote --symref omits filtered-out matches' ' test_expect_success 'ls-remote --symref omits filtered-out matches' '
cat >expect <<-\EOF && cat >expect <<-EOF &&
1bd44cb9d13204b0fe1958db0082f5028a16eb3a refs/heads/foo $rev refs/heads/foo
1bd44cb9d13204b0fe1958db0082f5028a16eb3a refs/heads/master $rev refs/heads/master
EOF EOF
# Protocol v2 supports sending symrefs for refs other than HEAD, so use # Protocol v2 supports sending symrefs for refs other than HEAD, so use
# protocol v0 here. # protocol v0 here.

View File

@ -14,7 +14,7 @@ corrupt_repo () {
} }
test_expect_success 'setup and corrupt repository' ' test_expect_success 'setup and corrupt repository' '
test_oid_init &&
echo file >file && echo file >file &&
git add file && git add file &&
git rev-parse :file && git rev-parse :file &&
@ -31,9 +31,10 @@ test_expect_success 'fsck fails' '
' '
test_expect_success 'upload-pack fails due to error in pack-objects packing' ' test_expect_success 'upload-pack fails due to error in pack-objects packing' '
head=$(git rev-parse HEAD) &&
printf "0032want %s\n00000009done\n0000" \ hexsz=$(test_oid hexsz) &&
$(git rev-parse HEAD) >input && printf "%04xwant %s\n00000009done\n0000" \
$(($hexsz + 10)) $head >input &&
test_must_fail git upload-pack . <input >/dev/null 2>output.err && test_must_fail git upload-pack . <input >/dev/null 2>output.err &&
test_i18ngrep "unable to read" output.err && test_i18ngrep "unable to read" output.err &&
test_i18ngrep "pack-objects died" output.err test_i18ngrep "pack-objects died" output.err
@ -51,16 +52,17 @@ test_expect_success 'fsck fails' '
' '
test_expect_success 'upload-pack fails due to error in rev-list' ' test_expect_success 'upload-pack fails due to error in rev-list' '
printf "0032want %s\n0034shallow %s00000009done\n0000" \ printf "%04xwant %s\n%04xshallow %s00000009done\n0000" \
$(git rev-parse HEAD) $(git rev-parse HEAD^) >input && $(($hexsz + 10)) $(git rev-parse HEAD) \
$(($hexsz + 12)) $(git rev-parse HEAD^) >input &&
test_must_fail git upload-pack . <input >/dev/null 2>output.err && test_must_fail git upload-pack . <input >/dev/null 2>output.err &&
grep "bad tree object" output.err grep "bad tree object" output.err
' '
test_expect_success 'upload-pack fails due to bad want (no object)' ' test_expect_success 'upload-pack fails due to bad want (no object)' '
printf "0045want %s multi_ack_detailed\n00000009done\n0000" \ printf "%04xwant %s multi_ack_detailed\n00000009done\n0000" \
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef" >input && $(($hexsz + 29)) $(test_oid deadbeef) >input &&
test_must_fail git upload-pack . <input >output 2>output.err && test_must_fail git upload-pack . <input >output 2>output.err &&
grep "not our ref" output.err && grep "not our ref" output.err &&
grep "ERR" output && grep "ERR" output &&
@ -70,8 +72,8 @@ test_expect_success 'upload-pack fails due to bad want (no object)' '
test_expect_success 'upload-pack fails due to bad want (not tip)' ' test_expect_success 'upload-pack fails due to bad want (not tip)' '
oid=$(echo an object we have | git hash-object -w --stdin) && oid=$(echo an object we have | git hash-object -w --stdin) &&
printf "0045want %s multi_ack_detailed\n00000009done\n0000" \ printf "%04xwant %s multi_ack_detailed\n00000009done\n0000" \
"$oid" >input && $(($hexsz + 29)) "$oid" >input &&
test_must_fail git upload-pack . <input >output 2>output.err && test_must_fail git upload-pack . <input >output 2>output.err &&
grep "not our ref" output.err && grep "not our ref" output.err &&
grep "ERR" output && grep "ERR" output &&
@ -80,8 +82,8 @@ test_expect_success 'upload-pack fails due to bad want (not tip)' '
test_expect_success 'upload-pack fails due to error in pack-objects enumeration' ' test_expect_success 'upload-pack fails due to error in pack-objects enumeration' '
printf "0032want %s\n00000009done\n0000" \ printf "%04xwant %s\n00000009done\n0000" \
$(git rev-parse HEAD) >input && $((hexsz + 10)) $(git rev-parse HEAD) >input &&
test_must_fail git upload-pack . <input >/dev/null 2>output.err && test_must_fail git upload-pack . <input >/dev/null 2>output.err &&
grep "bad tree object" output.err && grep "bad tree object" output.err &&
grep "pack-objects died" output.err grep "pack-objects died" output.err

View File

@ -15,7 +15,11 @@ test_expect_success 'setup' '
commit 2 && commit 2 &&
commit 3 && commit 3 &&
commit 4 && commit 4 &&
git config --global transfer.fsckObjects true git config --global transfer.fsckObjects true &&
test_oid_cache <<-EOF
sed sha1:s/0034shallow %s/0036unshallow %s/
sed sha256:s/004cshallow %s/004eunshallow %s/
EOF
' '
test_expect_success 'setup shallow clone' ' test_expect_success 'setup shallow clone' '
@ -239,7 +243,7 @@ test_expect_success 'shallow fetches check connectivity before writing shallow f
# with an empty packfile. This is done by refetching with a shorter # with an empty packfile. This is done by refetching with a shorter
# depth (to ensure that the packfile is empty), and overwriting the # depth (to ensure that the packfile is empty), and overwriting the
# shallow line in the response with the unshallow line we want. # shallow line in the response with the unshallow line we want.
printf "s/0034shallow %s/0036unshallow %s/" \ printf "$(test_oid sed)" \
"$(git -C "$REPO" rev-parse HEAD)" \ "$(git -C "$REPO" rev-parse HEAD)" \
"$(git -C "$REPO" rev-parse HEAD^)" \ "$(git -C "$REPO" rev-parse HEAD^)" \
>"$HTTPD_ROOT_PATH/one-time-sed" && >"$HTTPD_ROOT_PATH/one-time-sed" &&

View File

@ -134,15 +134,13 @@ test_expect_success 'MKCOL sends directory names with trailing slashes' '
x1="[0-9a-f]" x1="[0-9a-f]"
x2="$x1$x1" x2="$x1$x1"
x5="$x1$x1$x1$x1$x1" xtrunc=$(echo $OID_REGEX | sed -e "s/\[0-9a-f\]\[0-9a-f\]//")
x38="$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1"
x40="$x38$x2"
test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' ' test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '
sed \ sed \
-e "s/PUT /OP /" \ -e "s/PUT /OP /" \
-e "s/MOVE /OP /" \ -e "s/MOVE /OP /" \
-e "s|/objects/$x2/${x38}_$x40|WANTED_PATH_REQUEST|" \ -e "s|/objects/$x2/${xtrunc}_$OID_REGEX|WANTED_PATH_REQUEST|" \
"$HTTPD_ROOT_PATH"/access.log | "$HTTPD_ROOT_PATH"/access.log |
grep -e "\"OP .*WANTED_PATH_REQUEST HTTP/[.0-9]*\" 20[0-9] " grep -e "\"OP .*WANTED_PATH_REQUEST HTTP/[.0-9]*\" 20[0-9] "

View File

@ -59,7 +59,7 @@ test_expect_success 'setup' '
printf done | packetize >>fetch_body && printf done | packetize >>fetch_body &&
test_copy_bytes 10 <fetch_body >fetch_body.trunc && test_copy_bytes 10 <fetch_body >fetch_body.trunc &&
hash_next=$(git commit-tree -p HEAD -m next HEAD^{tree}) && hash_next=$(git commit-tree -p HEAD -m next HEAD^{tree}) &&
printf "%s %s refs/heads/newbranch\\0report-status\\n" "$_z40" "$hash_next" | packetize >push_body && printf "%s %s refs/heads/newbranch\\0report-status\\n" "$ZERO_OID" "$hash_next" | packetize >push_body &&
printf 0000 >>push_body && printf 0000 >>push_body &&
echo "$hash_next" | git pack-objects --stdout >>push_body && echo "$hash_next" | git pack-objects --stdout >>push_body &&
test_copy_bytes 10 <push_body >push_body.trunc && test_copy_bytes 10 <push_body >push_body.trunc &&

View File

@ -635,10 +635,10 @@ partial_clone_server () {
rm -rf "$SERVER" client && rm -rf "$SERVER" client &&
test_create_repo "$SERVER" && test_create_repo "$SERVER" &&
test_commit -C "$SERVER" one && test_commit -C "$SERVER" one &&
HASH1=$(git hash-object "$SERVER/one.t") && HASH1=$(git -C "$SERVER" hash-object one.t) &&
git -C "$SERVER" revert HEAD && git -C "$SERVER" revert HEAD &&
test_commit -C "$SERVER" two && test_commit -C "$SERVER" two &&
HASH2=$(git hash-object "$SERVER/two.t") && HASH2=$(git -C "$SERVER" hash-object two.t) &&
test_config -C "$SERVER" uploadpack.allowfilter 1 && test_config -C "$SERVER" uploadpack.allowfilter 1 &&
test_config -C "$SERVER" uploadpack.allowanysha1inwant 1 test_config -C "$SERVER" uploadpack.allowanysha1inwant 1
} }

View File

@ -326,15 +326,16 @@ test_expect_success SYMLINKS 'clone repo with symlinked or unknown files at obje
for raw in $(ls T*.raw) for raw in $(ls T*.raw)
do do
sed -e "s!/../!/Y/!; s![0-9a-f]\{38,\}!Z!" -e "/commit-graph/d" \ sed -e "s!/../!/Y/!; s![0-9a-f]\{38,\}!Z!" -e "/commit-graph/d" \
-e "/multi-pack-index/d" <$raw >$raw.de-sha || return 1 -e "/multi-pack-index/d" <$raw >$raw.de-sha-1 &&
sort $raw.de-sha-1 >$raw.de-sha || return 1
done && done &&
cat >expected-files <<-EOF && cat >expected-files <<-EOF &&
./Y/Z ./Y/Z
./Y/Z ./Y/Z
./Y/Z
./a-loose-dir/Z ./a-loose-dir/Z
./an-object ./an-object
./Y/Z
./info/packs ./info/packs
./pack/pack-Z.idx ./pack/pack-Z.idx
./pack/pack-Z.pack ./pack/pack-Z.pack