[devscripts] 01/03: uscan: Fix signature extension and add ftp test

Osamu Aoki osamu at moszumanska.debian.org
Wed Jan 31 17:25:33 UTC 2018


This is an automated email from the git hooks/post-receive script.

osamu pushed a commit to branch master
in repository devscripts.

commit 656c66fcfe41da0e5851e4e7e1c6e8caa2c535e8
Author: Osamu Aoki <osamu at debian.org>
Date:   Wed Jan 31 22:50:29 2018 +0000

    uscan: Fix signature extension and add ftp test
    
     * New ftp based test
     * Compression and repacking test
     * Signature test with decompress
     * Debug signature extension of uscan
    
    Signed-off-by: Osamu Aoki <osamu at debian.org>
---
 debian/control          |   1 +
 scripts/uscan.pl        |   7 +-
 test/Makefile           |   1 +
 test/test_uscan_ftp     | 523 ++++++++++++++++++++++++++++++++++++++++++++++++
 test/uscan/ftpserver.py |  23 +++
 5 files changed, 550 insertions(+), 5 deletions(-)

diff --git a/debian/control b/debian/control
index d62134b..4fa456d 100644
--- a/debian/control
+++ b/debian/control
@@ -33,6 +33,7 @@ Build-Depends: bash-completion,
                python3-debian <!nocheck>,
                python3-flake8 <!nocheck>,
                python3-magic <!nocheck>,
+               python3-pyftpdlib <!nocheck>,
                python3-requests <!nocheck>,
                python3-setuptools,
                python3-unidiff <!nocheck>,
diff --git a/scripts/uscan.pl b/scripts/uscan.pl
index 4171489..60c9a43 100755
--- a/scripts/uscan.pl
+++ b/scripts/uscan.pl
@@ -3968,11 +3968,8 @@ EOF
 	    return 1;
 	}
 	if (! $suffix_sig) {
-	    my $upstream_url_stem = $upstream_url;
-	    my $pgpsig_url_stem = $pgpsig_url;
-	    $upstream_url_stem =~ s/\?.*$//;
-	    $pgpsig_url_stem =~ s/\?.*$//;
-	    $suffix_sig = substr($pgpsig_url_stem, length($upstream_url_stem)+1,);
+	    $suffix_sig = $pgpsig_url;
+	    $suffix_sig =~ s/^.*\.//;
 	    if ($suffix_sig and $suffix_sig !~ m/^[a-zA-Z]+$/) { # strange suffix
 		$suffix_sig = "pgp";
 	    }
diff --git a/test/Makefile b/test/Makefile
index e7b1a9d..9ada6c2 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -8,6 +8,7 @@ OUR_TESTS=						\
 	debdiff						\
 	uscan						\
 	uscan_mangle				\
+	uscan_ftp				\
 	mk-origtargz				
 
 test: $(foreach i,$(OUR_TESTS),test_$(i).test)
diff --git a/test/test_uscan_ftp b/test/test_uscan_ftp
new file mode 100755
index 0000000..258c998
--- /dev/null
+++ b/test/test_uscan_ftp
@@ -0,0 +1,523 @@
+#!/bin/sh
+
+# Copyright (C) 2018, Osamu Aoki <osamu at 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(){
+    (
+	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 &
+	echo $! > pid
+	unset USCAN_FTP_SERVER
+    )
+}
+
+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 at 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
+    PORT=2121
+    $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
+    PORT=2121
+    $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
diff --git a/test/uscan/ftpserver.py b/test/uscan/ftpserver.py
new file mode 100644
index 0000000..1fa5f0a
--- /dev/null
+++ b/test/uscan/ftpserver.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+
+import os
+import logging
+from pyftpdlib.authorizers import DummyAuthorizer
+from pyftpdlib.handlers import FTPHandler
+from pyftpdlib.servers import FTPServer
+
+def test():
+    authorizer = DummyAuthorizer()
+    authorizer.add_anonymous(os.getcwd())
+
+    handler = FTPHandler
+    handler.authorizer = authorizer
+
+    logging.basicConfig(filename='log', level=logging.INFO)
+    #logging.basicConfig(filename='log', level=logging.DEBUG)
+
+    ftpserver = FTPServer(("127.0.0.1", 2121), handler)
+    ftpserver.serve_forever()
+
+if __name__ == '__main__':
+    test()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git



More information about the devscripts-devel mailing list