The common use of `tar.<format>.command` config is to specify compression program filter for creating compressed tar archive. Add a test that tests MIME type of archives created through the filter. The generated archives must not be `application/x-tar` (POSIX tar archive) type, so that these can be decompressed with the corresponding decompression program (such as gunzip, bunzip2, and unxz). Signed-off-by: Bagas Sanjaya <bagasdotme@xxxxxxxxx> --- t/t5000-tar-tree.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh index 2c88d1c159..04cdad5bff 100755 --- a/t/t5000-tar-tree.sh +++ b/t/t5000-tar-tree.sh @@ -38,6 +38,8 @@ test_lazy_prereq TAR_NEEDS_PAX_FALLBACK ' ' test_lazy_prereq GZIP 'gzip --version' +test_lazy_prereq BZIP2 'bzip2 --version' +test_lazy_prereq XZ 'xz --version' get_pax_header() { file=$1 @@ -374,6 +376,21 @@ test_expect_success GZIP 'remote tar.gz can be disabled' ' >remote.tar.gz ' +test_expect_success GZIP,BZIP2,XZ 'git archive with gzip, bzip2, and xz filters creates compressed tar archive with proper MIME type' ' + git config tar.tar.bz2.command "bzip2 -c" && + git config tar.tar.xz.command "xz -c" && + git archive --output HEAD.tar.gz --prefix=src/ HEAD && + git archive --output HEAD.tar.bz2 --prefix=src/ HEAD && + git archive --output HEAD.tar.xz --prefix=src/ HEAD && + cat >expect <<EOF && +HEAD.tar.bz2: application/x-bzip2; charset=binary +HEAD.tar.gz: application/gzip; charset=binary +HEAD.tar.xz: application/x-xz; charset=binary +EOF + file -i HEAD.tar.bz2 HEAD.tar.gz HEAD.tar.xz 2>/dev/null >actual && + test_cmp expect actual +' + test_expect_success 'archive and :(glob)' ' git archive -v HEAD -- ":(glob)**/sh" >/dev/null 2>actual && cat >expect <<EOF && base-commit: 106298f7f9cca4158a980de149ef217751e1f943 -- An old man doll... just what I always wanted! - Clara