From: Derrick Stolee <[email protected]>

The commit-graph file format v2 changes the v1 data only in the
header information. Add tests that check the 'verify' subcommand
catches corruption in the v2 header.

Signed-off-by: Derrick Stolee <[email protected]>
---
 t/t5318-commit-graph.sh | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh
index 3ff5e3b48d..be7bbf911a 100755
--- a/t/t5318-commit-graph.sh
+++ b/t/t5318-commit-graph.sh
@@ -497,6 +497,37 @@ test_expect_success 'git fsck (checks commit-graph)' '
        test_must_fail git fsck
 '
 
+test_expect_success 'rewrite commmit-graph with version 2' '
+       rm -f .git/objects/info/commit-graph &&
+       git commit-graph write --reachable --version=2 &&
+       git commit-graph verify
+'
+
+GRAPH_BYTE_CHUNK_COUNT=5
+GRAPH_BYTE_REACH_INDEX=6
+GRAPH_BYTE_UNUSED=7
+GRAPH_BYTE_HASH=8
+
+test_expect_success 'detect low chunk count (v2)' '
+       corrupt_graph_and_verify $GRAPH_CHUNK_COUNT "\02" \
+               "missing the .* chunk"
+'
+
+test_expect_success 'detect incorrect reachability index' '
+       corrupt_graph_and_verify $GRAPH_REACH_INDEX "\03" \
+               "reachability index version"
+'
+
+test_expect_success 'detect non-zero unused byte' '
+       corrupt_graph_and_verify $GRAPH_BYTE_UNUSED "\01" \
+               "unsupported value"
+'
+
+test_expect_success 'detect bad hash version (v2)' '
+       corrupt_graph_and_verify $GRAPH_BYTE_HASH "\00" \
+               "hash algorithm"
+'
+
 test_expect_success 'setup non-the_repository tests' '
        rm -rf repo &&
        git init repo &&
-- 
gitgitgadget

Reply via email to