To properly test passing objects from Git to an external odb we need an odb-helper script that supports a 'put' capability/instruction. For now we will support only sending raw blobs, so the supported capability/instruction will be 'put_raw_obj'. While at it let's add a test to check that our odb-helper script works well. Signed-off-by: Christian Couder <chriscool@xxxxxxxxxxxxx> --- t/t0400-external-odb.sh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/t/t0400-external-odb.sh b/t/t0400-external-odb.sh index ed89f3ab40..3fa0449883 100755 --- a/t/t0400-external-odb.sh +++ b/t/t0400-external-odb.sh @@ -7,10 +7,15 @@ test_description='basic tests for external object databases' ALT_SOURCE="$PWD/alt-repo/.git" export ALT_SOURCE write_script odb-helper <<\EOF +die() { + printf >&2 "%s\n" "$@" + exit 1 +} GIT_DIR=$ALT_SOURCE; export GIT_DIR case "$1" in init) echo "capability=get_git_obj" + echo "capability=put_raw_obj" echo "capability=have" ;; have) @@ -20,6 +25,16 @@ have) get_git_obj) cat "$GIT_DIR"/objects/$(echo $2 | sed 's#..#&/#') ;; +put_raw_obj) + sha1="$2" + size="$3" + kind="$4" + writen=$(git hash-object -w -t "$kind" --stdin) + test "$writen" = "$sha1" || die "bad sha1 passed '$sha1' vs writen '$writen'" + ;; +*) + die "unknown command '$1'" + ;; esac EOF HELPER="\"$PWD\"/odb-helper" @@ -47,4 +62,13 @@ test_expect_success 'helper can retrieve alt objects' ' test_cmp expect actual ' +test_expect_success 'helper can add objects to alt repo' ' + hash=$(echo "Hello odb!" | git hash-object -w -t blob --stdin) && + test -f .git/objects/$(echo $hash | sed "s#..#&/#") && + size=$(git cat-file -s "$hash") && + git cat-file blob "$hash" | ./odb-helper put_raw_obj "$hash" "$size" blob && + alt_size=$(cd alt-repo && git cat-file -s "$hash") && + test "$size" -eq "$alt_size" +' + test_done -- 2.14.0.rc1.52.gf02fb0ddac.dirty