chiark / gitweb /
test suite: chmod a+r $AUTOPKGTEST explicitly.
[dgit.git] / tests / lib
index bc9e8c72fdc673f77b2d97a1c55ebfaf0d081c87..4425bf6efc4834243aba3af4bb8c13e99eb1eaa1 100644 (file)
--- a/tests/lib
+++ b/tests/lib
@@ -17,6 +17,8 @@ funcs: ${FUNCNAME[*]}
 lines: ${BASH_LINENO[*]}
 files: ${BASH_SOURCE[*]}
 END
+       t-save-artifacts
+
        exit 16
 }
 
@@ -41,6 +43,7 @@ export DGIT_TEST_TROOT=$troot
 
 tmp=$ADTTMP
 if [ x"$tmp" = x ]; then
+       export DGIT_TEST_BYHAND=1
        mkdir -p tests/tmp
        tmpbase=$troot/tmp
        tmp=tests/tmp/$testname
@@ -152,7 +155,7 @@ t-reporefs () {
         exec >"$outputfile"
         if test -d $whichrepo; then
                cd $whichrepo
-               git show-ref |sort
+               git show-ref |t-sort
        fi)
 }
 
@@ -408,9 +411,32 @@ t-fscks () {
 t-ok () {
        : '========================================'
        t-fscks
+       t-save-artifacts
        echo ok.
 }
 
+t-save-artifacts () {
+       artifacts="$AUTOPKGTEST_ARTIFACTS"
+       if [ x"$artifacts" = x ]; then return; fi
+       if [ x"tmp" = x ]; then return; fi
+       : '(((((((((( t-save-artifacts ))))))))))'
+       cp -dR --preserve=links,timestamps "$tmp"/. "$artifacts"/.
+       chmod -R a+r -- "$artifacts"/.
+       cd "$artifacts"/.
+       find . \( -name \*.tar -o -name \*.sample \) -print0 | \
+               xargs -0r rm -v
+       find . \( -name .git \
+               -o -path ./salsa/\* \
+               -o -path ./git/\*.git \
+               \) -type d \
+               \! -path '*/.git/*/.git' -exec sh -xec '
+                       cd "$1"
+                       "$2"/playtree-save-refs
+                       git gc --prune=all
+               ' x '{}' "$troot" \;
+       : ')))))))))) t-save-artifacts ))))))))))'
+}
+
 t-rm-dput-dropping () {
        rm -f $tmp/${p}_${v}_*.upload
 }
@@ -480,12 +506,12 @@ t-setup-done () {
        local savedirs=$2
        local importeval=$3
 
-       local import=IMPORT.${0##*/}
+       local import=IMPORT.${DGIT_TEST_TESTNAME-${0##*/}}
        exec 4>$tmp/$import.new
 
        local vn
        for vn in $savevars; do
-               perl >&4 -I. -MDebian::Dgit -e '
+               perl >&4 -"I$root" -MDebian::Dgit -e '
                        printf "%s=%s\n", $ARGV[0], shellquote $ARGV[1]
                ' $vn "$(eval "printf '%s\n' \"\$$vn\"")"
        done
@@ -1005,6 +1031,16 @@ t-commit () {
        revision=$(( ${revision-0} + 1 ))
 }
 
+t-dch-r-rune () {
+       local cmd="$1"; shift
+       local suite=${1-unstable}
+       $cmd -r -D "$suite" ''
+}
+
+t-dch-commit-r () {
+       t-dch-r-rune t-dch-commit "$@"
+}
+
 t-dch-commit () {
        faketime @"${GIT_AUTHOR_DATE% *}" dch "$@"
        git commit -m "dch $*" debian/changelog
@@ -1134,7 +1170,11 @@ t-alt-test () {
 
 t-git-config dgit.default.old-dsc-distro test-dummy
 
-case "$0" in
-*/gnupg) ;;
-*)     t-setup-import gnupg    ;;
-esac
+for import in ${autoimport-gnupg}; do
+       case "$0" in
+       */$import) ;;
+       *)
+               t-setup-import $import
+               ;;
+       esac
+done