#!/bin/sh
# vim: set shiftwidth=4 tabstop=8 noexpandtab:

# Copyright (C) 2018, Osamu Aoki <osamu@debian.org>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# On Debian systems, the complete text of the GNU General Public License
# version 3 can be found in the /usr/share/common-licenses/GPL-3 file.

echo '======================================================================='
echo '*** uscan FTP test ***'
echo '======================================================================='
# Although test_uscan does a very good job on checking details of file
# filtering during repacking, it is not easy to debug problems of repacking
# since it uses --dehs mode.  This FTP test script tries to provide debug
# platform for the repacking with different method.

test_dir=$(readlink -f "${0%/*}")

# Operation mode
if test "$1" = --installed; then
    COMMAND="uscan --no-conf"
    shift
else
    top_srcdir=$(readlink -f "${0%/*}/..")
    make -C "$top_srcdir/scripts" uscan mk-origtargz uupdate debchange
    PATH="$top_srcdir/scripts:$PATH"
    export PATH
    PERL5LIB="$top_srcdir/lib"
    export PERL5LIB
    COMMAND="uscan --no-conf"
fi
# set safe defaults
WEBSCRIPT=":"
DEBUGECHO=":"
DEBUGLSLR=":"
DEBUGBASH=":"
# comment out for debug
#COMMAND="$COMMAND --debug"
#COMMAND="$COMMAND --verbose"
#DEBUGECHO=echo
#DEBUGLSLR="ls -laR"
#DEBUGLSLR="ls -la"
#DEBUGBASH="bash -i"

GPGHOME=$(mktemp -d -p /tmp gpg.XXXXX)

GPG=gpg
if !command -v $GPG >/dev/null 2>&1; then
    echo "$GPG missing"
    GPG=gpg2
    if ! command -v $GPG >/dev/null 2>&1; then
	echo "$GPG missing"
	exit 1
    fi
fi

PRIVATE_KEY=$test_dir/uscan/PRIVATE_KEY.asc
PUBLIC_KEY=$test_dir/uscan/PUBLIC_KEY.asc
PRIVATE_KEYRING=$GPGHOME/secring.gpg
PUBLIC_KEYRING=$GPGHOME/pubring.gpg

oneTimeSetUp () {
    $GPG -v --homedir "$GPGHOME" --no-options -q --batch --no-default-keyring \
	    --output $PRIVATE_KEYRING --dearmor $PRIVATE_KEY

    $GPG -v --homedir "$GPGHOME" --no-options -q --batch --no-default-keyring \
	    --output $PUBLIC_KEYRING --dearmor $PUBLIC_KEY

    $GPG --homedir "$GPGHOME" --no-options -q --batch --no-default-keyring \
	    --secret-keyring $PRIVATE_KEYRING --default-key 72543FAF \
	    --list-keys --verbose

    export GNUPGHOME=$GPGHOME
}

# Initial Debian revision value is distribution dependent
SUFFIX="1"
if which dpkg-vendor >/dev/null 2>&1; then
    VENDER="$(dpkg-vendor --query Vendor 2>/dev/null|tr 'A-Z' 'a-z')"
    case "$VENDER" in
	debian) SUFFIX="1" ;;
	*) SUFFIX="0${VENDER}1" ;;
    esac
fi

cleanup(){
    kill -9 $(cat $TMPDIR/$REPOPATH/pid)
    rm -rf $TMPDIR
    echo ""
}

spawnFtpServer(){
    (
	local USCAN_FTP_SERVER=${USCAN_FTP_SERVER:-ftpserver.py}
	mkdir -p $TMPDIR/$REPOPATH
	cd $TMPDIR/$REPOPATH
	echo "FTP starting ... $TMPDIR/$REPOPATH"
	python3 "$test_dir/uscan/$USCAN_FTP_SERVER" 2>log &
	local pid=$!
	echo $pid > pid
	while ! [ -s port ]; do
	    sleep 2s
	    if ! kill -0 $pid 2> /dev/null ; then
		echo "The FTP server returned an error:"
		cat log
		exit 1
	    fi
	done
    )
}

trap cleanup 1 2 3 13 15

containsName(){
  echo "$1" | fgrep -q "$2"
  echo $?
}

. "${0%/*}/shunit2-helper-functions.sh"

# The following tests do the following: (1) create a minimal Debian package
# directory, containing minimal files debian/{changelog,watch,copyright},
# (2) create a minimal repository, containing a tarball (built on the fly),
# (3) start an FTP server that works offline, using the pyftpdlib
# module of Python, and (4) run uscan inside that minimal universe.

# make debian/ in `pwd`
# debian/watch contains $WATCHVER and $WATCHLINE with template URL updated
makeDebianDir() {
    DEBNAME=${1:-foo} # Debian source package name
    DEBVER=${2:-1.0}  # Debian source package version
    mkdir -p debian/source

    cat <<END > debian/rules
%:
	dh $@
END
chmod 755 debian/rules

    cat <<END > debian/changelog
$DEBNAME ($DEBVER) unstable; urgency=low

  * Release of the $DEBNAME package $DEBVER.

 -- Joe Developer <jd@debian.org>  Mon, 02 Nov 2013 22:21:31 -0100
END
    # debian/source/format
    case $DEBVER in
	*-*) # non-native package
	    echo "3.0 (quilt)" > debian/source/format
	     ;;
	*) # native package
	    echo "3.0 (native)" > debian/source/format
	     ;;
    esac
    # debian/copyright
    echo "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/" \
	> debian/copyright
    # debian/watch
    echo "version=$WATCHVER" > debian/watch
    echo "$WATCHLINE" | sed -e "s,@@@url@@@,ftp://127.0.0.1:${PORT}/,g" - \
	>> debian/watch
    # debian/upstream/signing-key.asc
    mkdir -p debian/upstream
    cp -f $test_dir/uscan/PUBLIC_KEY.asc debian/upstream/signing-key.asc
}


# make tarball in $REPOPATH/$POOLPATH
makeUpstreamTar() {
    UPNAME=${1:-foo} # Upstream package name
    UPVER=${2:-1.0}  # upstream package version
    COMPRESSION=${3:-gz} # archve compression type
    TYPE=${4:-non-native} # set this if native-type upstream
    OLDDIR=`pwd`
    mkdir -p $TMPDIR/$REPOPATH/$POOLPATH/$UPNAME-$UPVER
    cd $TMPDIR/$REPOPATH/$POOLPATH
    touch $UPNAME-$UPVER/FILE.$UPNAME.$UPVER
    if [ "$TYPE" = "native" ]; then
	cd $TMPDIR/$REPOPATH/$POOLPATH/$UPNAME-$UPVER
	makeDebianDir $UPNAME $UPVER
	cd $TMPDIR/$REPOPATH/$POOLPATH
    fi
    case $COMPRESSION in
	gz|gzip)
	    NEWTAR=$UPNAME-$UPVER.tar
	    tar -cf $NEWTAR $UPNAME-$UPVER
	    NEWTAR=$UPNAME-$UPVER.tar.gz
	    tar -czf $NEWTAR $UPNAME-$UPVER
	    ;;
	bz2|bzip2)
	    NEWTAR=$UPNAME-$UPVER.tar
	    tar -cf $NEWTAR $UPNAME-$UPVER
	    NEWTAR=$UPNAME-$UPVER.tar.bz2
	    tar --bzip2 -cf $NEWTAR $UPNAME-$UPVER
	    ;;
	xz)
	    NEWTAR=$UPNAME-$UPVER.tar
	    tar -cf $NEWTAR $UPNAME-$UPVER
	    NEWTAR= $UPNAME-$UPVER.tar.xz
	    tar --xz -cf $NEWTAR $UPNAME-$UPVER
	    ;;
	zip)
	    NEWTAR=$UPNAME-$UPVER.zip
	    zip -r $NEWTAR $UPNAME-$UPVER
	    ;;
	*)  echo "Wrong compression mode: $COMPRESSION"
	    exit 1
	    ;;
    esac
    # make $NEWTAR.asc
    $GPG --homedir "$GPGHOME" --no-options -q --batch --no-default-keyring \
	--secret-keyring $PRIVATE_KEYRING --default-key 72543FAF \
	--armor --detach-sign $NEWTAR
    NEWTAR=$UPNAME-$UPVER.tar
    $GPG --homedir "$GPGHOME" --no-options -q --batch --no-default-keyring \
	--secret-keyring $PRIVATE_KEYRING --default-key 72543FAF \
	--armor --detach-sign $NEWTAR

    cd $OLDDIR
}

# setup a common watch file test environment
helperWatch() {
    local SITESCRIPT=${1:-siteWebNonNative}
    local VEROLD=${2:-1.0}
    local VERNEW=${3:-2.0}
    local PREFIX=$4
    local TMPDIR=$(mktemp -d)
    ORIGDIR=`pwd`
    PKG=${PKG:-foo}
    REPOPATH=${REPOPATH:-repo}
    POOLPATH=${POOLPATH:-pool}
    GZREPACK=${GZREPACK:-gz}
    XCOMMAND=${XCOMMAND:-$COMMAND}
    WATCHVER="${WATCHVER:-3}"
    WATCHLINE0="@@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate"
    WATCHLINE="${WATCHLINE:-$WATCHLINE0}"
    cd $TMPDIR
    # start FTP server with its root at $TMPDIR/$REPOPATH
    spawnFtpServer || exit 1
    PORT=$(cat $TMPDIR/repo/port)
    $DEBUGECHO " ***** ftp://localhost:$PORT started showing $TMPDIR/$REPOPATH *****"
    # make web site
    $SITESCRIPT
    # make local $VEROLD source tree
    tar -xzf $TMPDIR/$REPOPATH/$POOLPATH/${PKG}-${VEROLD}.tar.gz
    if [ -n "$PREFIX" ]; then
	mv $TMPDIR/${PKG}-${VEROLD} $TMPDIR/${PKG}-${PREFIX}${VEROLD}
    fi
    mv $TMPDIR/${PKG}-${PREFIX}${VEROLD} $TMPDIR/${PKG}
    cd $TMPDIR/${PKG}
    if [ ! -d debian ]; then
	makeDebianDir $PKG ${PREFIX}${VEROLD}-$SUFFIX
    fi
    local UUPDATE=""
    if grep -q "uupdate" $TMPDIR/${PKG}/debian/watch ; then
	UUPDATE=uupdate
    fi
    local PGP=""
    if grep -q "pgpurlmangle" $TMPDIR/${PKG}/debian/watch ; then
	PGP=pgp
    fi
    if grep -q "pgpmode *= *auto" $TMPDIR/${PKG}/debian/watch ; then
	PGP=pgp
    fi
    if grep -q "pgpmode *= *previous" $TMPDIR/${PKG}/debian/watch ; then
	PGP=pgp
    fi
    $XCOMMAND
    assertEquals "uscan: exit_code!=0 but exit_code=0" "$?" "0"
    cd $TMPDIR
    $DEBUGLSLR
    UTARBALL=${PKG}-${VERNEW}.tar.gz
    STARBALL=${PKG}_${PREFIX}${VERNEW}.orig.tar.$GZREPACK
    assertTrue "$UTARBALL missing: $WATCHLINE" "[ -f $UTARBALL ]"
    assertTrue "$STARBALL missing: $WATCHLINE" "[ -f $STARBALL ]"
    if [ "$PGP" = "pgp" ]; then
	UTARSIG=${PKG}-${VERNEW}.tar.gz.asc
	if [ ! -f $UTARSIG ]; then
	    UTARSIG=${PKG}-${VERNEW}.tar.asc
	fi
	STARSUG=${PKG}_${PREFIX}${VERNEW}.orig.tar.$GZREPACK.asc
	assertTrue "$UTARSIG and *.sig missing: $WATCHLINE" "[ -f $UTARSIG ]"
	assertTrue "$STARSIG missing: $WATCHLINE" "[ -f $STARSIG ]"
    fi
    # check uupdate
    if [ "$UUPDATE" = "uupdate" ]; then
	cd $TMPDIR/${PKG}-${PREFIX}${VERNEW}
	assertTrue 'pristine tarball is not extracted' "[ -f debian/changelog ]"
	DVERSION=`dpkg-parsechangelog -ldebian/changelog -SVersion`
	assertEquals "uscan: Version should be ${PREFIX}${VERNEW}-$SUFFIX but $DVERSION" "$DVERSION" "${PREFIX}${VERNEW}-$SUFFIX"
	cd $TMPDIR
    fi
    $DEBUGBASH
    cd $ORIGDIR
    cleanup
    unset REPOPATH
    unset POOLPATH
    unset GZREPACK
    unset XCOMMAND
    unset WATCHVER
    unset WATCHLINE
}

# setup a common watch file test environment with Zip upstream
helperWatchZip() {
    local SITESCRIPT=${1:-siteWebNonNative}
    local VEROLD=${2:-1.0}
    local VERNEW=${3:-2.0}
    local PREFIX=$4
    local TMPDIR=$(mktemp -d)
    ORIGDIR=`pwd`
    PKG=${PKG:-foo}
    REPOPATH=${REPOPATH:-repo}
    POOLPATH=${POOLPATH:-pool}
    GZREPACK=${GZREPACK:-gz}
    XCOMMAND=${XCOMMAND:-$COMMAND}
    WATCHVER="${WATCHVER:-3}"
    WATCHLINE0="@@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate"
    WATCHLINE="${WATCHLINE:-$WATCHLINE0}"
    cd $TMPDIR
    # start FTP server with its root at $TMPDIR/$REPOPATH
    spawnFtpServer || exit 1
    PORT=$(cat $TMPDIR/repo/port)
    $DEBUGECHO " ***** ftp://localhost:$PORT started showing $TMPDIR/$REPOPATH *****"
    # make web site
    $SITESCRIPT
    # make local $VEROLD source tree
    unzip $TMPDIR/$REPOPATH/$POOLPATH/${PKG}-${VEROLD}.zip
    if [ -n "$PREFIX" ]; then
	mv $TMPDIR/${PKG}-${VEROLD} $TMPDIR/${PKG}-${PREFIX}${VEROLD}
    fi
    mv $TMPDIR/${PKG}-${PREFIX}${VEROLD} $TMPDIR/${PKG}
    cd $TMPDIR/${PKG}
    if [ ! -d debian ]; then
	makeDebianDir $PKG ${PREFIX}${VEROLD}-$SUFFIX
    fi
    local UUPDATE=""
    if grep -q "uupdate" $TMPDIR/${PKG}/debian/watch ; then
	UUPDATE=uupdate
    fi
    local PGP=""
    if grep -q "pgpurlmangle" $TMPDIR/${PKG}/debian/watch ; then
	PGP=pgp
    fi
    if grep -q "pgpmode *= *auto" $TMPDIR/${PKG}/debian/watch ; then
	PGP=pgp
    fi
    if grep -q "pgpmode *= *previous" $TMPDIR/${PKG}/debian/watch ; then
	PGP=pgp
    fi
    $XCOMMAND
    assertEquals "uscan: exit_code!=0 but exit_code=0" "$?" "0"
    cd $TMPDIR
    $DEBUGLSLR
    UTARBALL=${PKG}-${VERNEW}.zip
    STARBALL=${PKG}_${PREFIX}${VERNEW}.orig.tar.$GZREPACK
    assertTrue "$UTARBALL missing: $WATCHLINE" "[ -f $UTARBALL ]"
    assertTrue "$STARBALL missing: $WATCHLINE" "[ -f $STARBALL ]"
    if [ "$PGP" = "pgp" ]; then
	UTARSIG=${PKG}-${VERNEW}.zip.asc
	STARSUG=${PKG}_${PREFIX}${VERNEW}.orig.tar.$GZREPACK.asc
	assertTrue "$UTARSIG and *.sig missing: $WATCHLINE" "[ -f $UTARSIG ]"
	assertTrue "$STARSIG missing: $WATCHLINE" "[ -f $STARSIG ]"
    fi
    # check uupdate
    if [ "$UUPDATE" = "uupdate" ]; then
	cd $TMPDIR/${PKG}-${PREFIX}${VERNEW}
	assertTrue 'pristine tarball is not extracted' "[ -f debian/changelog ]"
	DVERSION=`dpkg-parsechangelog -ldebian/changelog -SVersion`
	assertEquals "uscan: Version should be ${PREFIX}${VERNEW}-$SUFFIX but $DVERSION" "$DVERSION" "${PREFIX}${VERNEW}-$SUFFIX"
	cd $TMPDIR
    fi
    $DEBUGBASH
    cd $ORIGDIR
    cleanup
    unset REPOPATH
    unset POOLPATH
    unset GZREPACK
    unset XCOMMAND
    unset WATCHVER
    unset WATCHLINE
}

siteNonNative() {
    local PKG=${1:-foo}
    local EXTRA=${2:-}
    makeUpstreamTar $PKG 0.0 gz non-native
    makeUpstreamTar $PKG 1.0 gz non-native
    makeUpstreamTar $PKG 2.0 gz non-native
    mkdir -p $TMPDIR/$REPOPATH/0.0/$PKG/ooo/
    mkdir -p $TMPDIR/$REPOPATH/1.0/$PKG/ooo/
    mkdir -p $TMPDIR/$REPOPATH/2.0/$PKG/ooo/
    if [ -n "$EXTRA" ]; then
    makeUpstreamTar $PKG 3.0 gz non-native
    mkdir -p $TMPDIR/$REPOPATH/3.0/$PKG/ooo/
    fi
    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz $TMPDIR/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.tar.gz
    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz.asc $TMPDIR/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.tar.gz.asc
    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.asc $TMPDIR/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.tar.asc
    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz $TMPDIR/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.tar.gz
    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz.asc $TMPDIR/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.tar.gz.asc
    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.asc $TMPDIR/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.tar.asc
    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz $TMPDIR/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.tar.gz
    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz.asc $TMPDIR/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.tar.gz.asc
    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.asc $TMPDIR/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.tar.asc
    if [ -n "$EXTRA" ]; then
    ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.gz $TMPDIR/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.tar.gz
    ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.gz.asc $TMPDIR/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.tar.gz.asc
    ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.asc $TMPDIR/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.tar.asc
    fi
}

siteNonNativeZip() {
    local PKG=${1:-foo}
    local EXTRA=${2:-}
    makeUpstreamTar $PKG 0.0 zip non-native
    makeUpstreamTar $PKG 1.0 zip non-native
    makeUpstreamTar $PKG 2.0 zip non-native
    mkdir -p $TMPDIR/$REPOPATH/0.0/$PKG/ooo/
    mkdir -p $TMPDIR/$REPOPATH/1.0/$PKG/ooo/
    mkdir -p $TMPDIR/$REPOPATH/2.0/$PKG/ooo/
    if [ -n "$EXTRA" ]; then
    makeUpstreamTar $PKG 3.0 gz non-native
    mkdir -p $TMPDIR/$REPOPATH/3.0/$PKG/ooo/
    fi
    ln -sf ../../../$POOLPATH/${PKG}-0.0.zip $TMPDIR/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.zip
    ln -sf ../../../$POOLPATH/${PKG}-0.0.zip.asc $TMPDIR/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.zip.asc
    ln -sf ../../../$POOLPATH/${PKG}-1.0.zip $TMPDIR/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.zip
    ln -sf ../../../$POOLPATH/${PKG}-1.0.zip.asc $TMPDIR/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.zip.asc
    ln -sf ../../../$POOLPATH/${PKG}-2.0.zip $TMPDIR/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.zip
    ln -sf ../../../$POOLPATH/${PKG}-2.0.zip.asc $TMPDIR/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.zip.asc
    if [ -n "$EXTRA" ]; then
    ln -sf ../../../$POOLPATH/${PKG}-3.0.zip $TMPDIR/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.zip
    ln -sf ../../../$POOLPATH/${PKG}-3.0.zip.asc $TMPDIR/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.zip.asc
    fi
}

siteNonNativeR() {
    local PKG=${1:-foo}
    local EXTRA=${2:-}
    makeUpstreamTar $PKG 0.0 gz non-native
    makeUpstreamTar $PKG 1.0 gz non-native
    makeUpstreamTar $PKG 2.0 gz non-native
    mkdir -p $TMPDIR/$REPOPATH/0.0/$PKG/ooo/
    mkdir -p $TMPDIR/$REPOPATH/1.0/$PKG/ooo/
    mkdir -p $TMPDIR/$REPOPATH/2.0/$PKG/ooo/
    if [ -n "$EXTRA" ]; then
    makeUpstreamTar $PKG 3.0 gz non-native
    mkdir -p $TMPDIR/$REPOPATH/3.0/$PKG/ooo/
    fi
    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz $TMPDIR/$REPOPATH/3.0/$PKG/ooo/${PKG}-0.0.tar.gz
    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz.asc $TMPDIR/$REPOPATH/3.0/$PKG/ooo/${PKG}-0.0.tar.gz.asc
    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz $TMPDIR/$REPOPATH/2.0/$PKG/ooo/${PKG}-1.0.tar.gz
    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz.asc $TMPDIR/$REPOPATH/2.0/$PKG/ooo/${PKG}-1.0.tar.gz.asc
    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz $TMPDIR/$REPOPATH/1.0/$PKG/ooo/${PKG}-2.0.tar.gz
    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz.asc $TMPDIR/$REPOPATH/1.0/$PKG/ooo/${PKG}-2.0.tar.gz.asc
    if [ -n "$EXTRA" ]; then
    ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.gz $TMPDIR/$REPOPATH/0.0/$PKG/ooo/${PKG}-3.0.tar.gz
    ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.gz.asc $TMPDIR/$REPOPATH/0.0/$PKG/ooo/${PKG}-3.0.tar.gz.asc
    fi
}

# test a watch files

### VERSION 4 ###
# standard tests

# test non-native package with uupdate, bare FTP server in normal order
testWatch4NonNative() {
    WATCHVER=4
    WATCHLINE='opts=pgpsigurlmangle=s/$/.asc/ @@@url@@@([\.\d]+)/(.+)/(.+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate'
    helperWatch siteNonNative
}

# test --download-current-version, bare FTP server in normal order
testWatch4NonNativeDlCurrent() {
    WATCHVER=4
    XCOMMAND="$COMMAND --download-current-version"
    WATCHLINE='opts=pgpsigurlmangle=s/$/.asc/ @@@url@@@([\.\d]+)/(.+)/(.+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate'
    helperWatch siteNonNative 1.0 1.0
}

# test --download-version, bare FTP server in normal order
testWatch4NonNativeDlUversion() {
    WATCHVER=4
    XCOMMAND="$COMMAND --download-version 0.0"
    WATCHLINE='opts=pgpsigurlmangle=s/$/.asc/ @@@url@@@([\.\d]+)/(.+)/(.+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate'
    helperWatch siteNonNative 1.0 0.0
}

# test non-native package with uupdate, bare FTP server in normal order with upstream ZIP
testWatch4NonNativeZip() {
    WATCHVER=4
    COMPRESSION='zip'
    WATCHLINE='opts=pgpsigurlmangle=s/$/.asc/ @@@url@@@([\.\d]+)/(.+)/(.+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate'
    helperWatchZip siteNonNativeZip
}

# test non-native package with uupdate, bare FTP server in normal order with repack to xz
testWatch4NonNativeXz() {
    WATCHVER=4
    GZREPACK='xz'
    WATCHLINE='opts=pgpsigurlmangle=s/$/.asc/,compression=xz,repack @@@url@@@([\.\d]+)/(.+)/(.+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate'
    helperWatch siteNonNative
}

# test non-native package with uupdate, bare FTP server in normal order with ungzsig
testWatch4NonNativeUngzsig() {
    WATCHVER=4
    WATCHLINE='opts=pgpsigurlmangle=s/.gz$/.asc/,decompress @@@url@@@([\.\d]+)/(.+)/(.+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate'
    helperWatch siteNonNative
}

oneTimeTearDown () {
    gpgconf --homedir "$GPGHOME" --verbose --kill gpg-agent
    rm -rf "$GPGHOME"
}


. shunit2
