rev-parse: add option --resolve-git-dir <path>
[gitweb.git] / t / t5000-tar-tree.sh
index 1f9069213aacb80fcf29fc87d89cefee7ae40fef..d9068981f8475c37d30e584bc6b795075a2f3063 100755 (executable)
@@ -26,6 +26,8 @@ commit id embedding:
 
 . ./test-lib.sh
 UNZIP=${UNZIP:-unzip}
+GZIP=${GZIP:-gzip}
+GUNZIP=${GUNZIP:-gzip -d}
 
 SUBSTFORMAT=%H%n
 
@@ -254,7 +256,8 @@ test_expect_success 'git-archive --prefix=olde-' '
 
 test_expect_success 'setup tar filters' '
        git config tar.tar.foo.command "tr ab ba" &&
-       git config tar.bar.command "tr ab ba"
+       git config tar.bar.command "tr ab ba" &&
+       git config tar.bar.remote true
 '
 
 test_expect_success 'archive --list mentions user filter' '
@@ -263,9 +266,9 @@ test_expect_success 'archive --list mentions user filter' '
        grep "^bar\$" output
 '
 
-test_expect_success 'archive --list shows remote user filters' '
+test_expect_success NOT_MINGW 'archive --list shows only enabled remote filters' '
        git archive --list --remote=. >output &&
-       grep "^tar\.foo\$" output &&
+       grep "^tar\.foo\$" output &&
        grep "^bar\$" output
 '
 
@@ -295,4 +298,58 @@ test_expect_success 'extension matching requires dot' '
        test_cmp b.tar config-implicittar.foo
 '
 
+test_expect_success NOT_MINGW 'only enabled filters are available remotely' '
+       test_must_fail git archive --remote=. --format=tar.foo HEAD \
+               >remote.tar.foo &&
+       git archive --remote=. --format=bar >remote.bar HEAD &&
+       test_cmp remote.bar config.bar
+'
+
+if $GZIP --version >/dev/null 2>&1; then
+       test_set_prereq GZIP
+else
+       say "Skipping some tar.gz tests because gzip not found"
+fi
+
+test_expect_success GZIP 'git archive --format=tgz' '
+       git archive --format=tgz HEAD >j.tgz
+'
+
+test_expect_success GZIP 'git archive --format=tar.gz' '
+       git archive --format=tar.gz HEAD >j1.tar.gz &&
+       test_cmp j.tgz j1.tar.gz
+'
+
+test_expect_success GZIP 'infer tgz from .tgz filename' '
+       git archive --output=j2.tgz HEAD &&
+       test_cmp j.tgz j2.tgz
+'
+
+test_expect_success GZIP 'infer tgz from .tar.gz filename' '
+       git archive --output=j3.tar.gz HEAD &&
+       test_cmp j.tgz j3.tar.gz
+'
+
+if $GUNZIP --version >/dev/null 2>&1; then
+       test_set_prereq GUNZIP
+else
+       say "Skipping some tar.gz tests because gunzip was not found"
+fi
+
+test_expect_success GZIP,GUNZIP 'extract tgz file' '
+       $GUNZIP -c <j.tgz >j.tar &&
+       test_cmp b.tar j.tar
+'
+
+test_expect_success GZIP,NOT_MINGW 'remote tar.gz is allowed by default' '
+       git archive --remote=. --format=tar.gz HEAD >remote.tar.gz &&
+       test_cmp j.tgz remote.tar.gz
+'
+
+test_expect_success GZIP,NOT_MINGW 'remote tar.gz can be disabled' '
+       git config tar.tar.gz.remote false &&
+       test_must_fail git archive --remote=. --format=tar.gz HEAD \
+               >remote.tar.gz
+'
+
 test_done