Signed-off-by: Christian Couder <chrisc...@tuxfamily.org>
---
 t/t0400-external-odb.sh | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/t/t0400-external-odb.sh b/t/t0400-external-odb.sh
index fe85413725..6c6da5cf4f 100755
--- a/t/t0400-external-odb.sh
+++ b/t/t0400-external-odb.sh
@@ -7,6 +7,10 @@ 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
 have)
@@ -16,6 +20,16 @@ have)
 get)
        cat "$GIT_DIR"/objects/$(echo $2 | sed 's#..#&/#')
        ;;
+put)
+       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"
@@ -43,4 +57,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 "$hash" "$size" blob &&
+       alt_size=$(cd alt-repo && git cat-file -s "$hash") &&
+       test "$size" -eq "$alt_size"
+'
+
 test_done
-- 
2.13.1.565.gbfcd7a9048

Reply via email to