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 <redacted>
---
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..f9e6ea1015 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"
+ written=$(git hash-object -w -t "$kind" --stdin)
+ test "$written" = "$sha1" || die "bad sha1 passed '$sha1' vs written '$written'"
+ ;;
+*)
+ 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.1.576.g3f707d88cd