[devscripts] 10/12: test_uscan_mangle: refactor to address V4 and MUT

Osamu Aoki osamu at moszumanska.debian.org
Wed Sep 23 16:43:30 UTC 2015


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

osamu pushed a commit to branch multitar
in repository devscripts.

commit f9ff81c1c03976df32aee06dce6e6d01079387da
Author: Osamu Aoki <osamu at debian.org>
Date:   Fri Sep 18 11:13:44 2015 +0000

    test_uscan_mangle: refactor to address V4 and MUT
    
     * MUT (standard)
     * MUT (main tarball less)
     * Refactor code
     * Test for version 4
---
 test/test_uscan_mangle | 542 ++++++++++++++++++++++++++++++++-----------------
 1 file changed, 355 insertions(+), 187 deletions(-)

diff --git a/test/test_uscan_mangle b/test/test_uscan_mangle
index f5a081c..edf393c 100755
--- a/test/test_uscan_mangle
+++ b/test/test_uscan_mangle
@@ -19,7 +19,7 @@ test_dir=$(readlink -f "${0%/*}")
 
 # Operation mode
 if test "$1" = --installed; then
-    COMMAND="uscan --no-conf --compression=xz"
+    COMMAND="uscan --no-conf"
     shift
 else
     top_srcdir=$(readlink -f "${0%/*}/..")
@@ -27,12 +27,9 @@ else
     PATH="$top_srcdir/scripts:$PATH"
     PERL5LIB="$top_srcdir/lib"
     export PERL5LIB
-    COMMAND="uscan --no-conf --compression=xz"
+    COMMAND="uscan --no-conf"
 fi
 
-REPOPATH=repo
-POOLPATH=pool
-
 # Initial Debian revision value is distribution dependent
 SUFFIX="1"
 if which dpkg-vendor >/dev/null 2>&1; then
@@ -47,11 +44,12 @@ fi
 WEBSCRIPT=":"
 DEBUGECHO=":"
 DEBUGLSLR=":"
+DEBUGBASH=":"
 # comment out for debug
 #COMMAND="$COMMAND --debug"
 #DEBUGECHO=echo
-#DEBUGLSLR="ls -laR"
-
+#DEBUGBASH="bash -i"
+#DEBUGBASH="ls -laR"
 cleanup(){
     kill -9 $(cat $TMPDIR/$REPOPATH/pid)
     rm -rf $TMPDIR
@@ -60,13 +58,15 @@ cleanup(){
 
 spawnHttpServer(){
     (
+	USCAN_HTTP_SERVER=${USCAN_HTTP_SERVER:-server.py}
 	mkdir -p $TMPDIR/$REPOPATH
 	cd $TMPDIR/$REPOPATH
-	python "$test_dir/uscan/server-head.py" 2>log &
+	python "$test_dir/uscan/$USCAN_HTTP_SERVER" 2>log &
 	echo $! > pid
 	while ! [ -s port ]; do
 	    :
 	done
+	unset USCAN_HTTP_SERVER
     )
 }
 
@@ -88,8 +88,8 @@ containsName(){
 # make debian/ in `pwd`
 # debian/watch contains $WATCHVER and $WATCHLINE with template URL updated
 makeDebianDir() {
-    DEBNAME=$1 # Debian source package name
-    DEBVER=$2  # DEbian source package version
+    DEBNAME=${1:-foo} # Debian source package name
+    DEBVER=${2:-1.0}  # Debian source package version
     mkdir -p debian/source
 
     cat <<END > debian/rules
@@ -117,22 +117,85 @@ END
     # debian/copyright
     echo "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/" \
 	> debian/copyright
+    if [ "$FILEEXCLUDE" = "1" ]; then
+	cat <<'END' >> debian/copyright
+Files-Excluded: exclude-this
+ exclude-dir
+ */exclude-dir
+ .*
+ */js/jquery.js
+ ;?echo?baz;?#
+END
+    elif [ "$FILEEXCLUDE" = "2" ]; then
+	cat <<'END' >> debian/copyright
+Files-Excluded-foo: exclude-this
+ exclude-dir
+ */exclude-dir
+ .*
+ */js/jquery.js
+ ;?echo?baz;?#
+Files-Excluded-bar: exclude-this
+ exclude-dir
+ */exclude-dir
+ .*
+ */js/jquery.js
+ ;?echo?baz;?#
+Files-Excluded-baz: exclude-this
+ exclude-dir
+ */exclude-dir
+ .*
+ */js/jquery.js
+ ;?echo?baz;?#
+END
+    elif [ "$FILEEXCLUDE" = "3" ]; then
+	cat <<'END' >> debian/copyright
+Files-Excluded: exclude-this
+ exclude-dir
+ */exclude-dir
+ .*
+ */js/jquery.js
+ ;?echo?baz;?#
+Files-Excluded-bar: exclude-this
+ exclude-dir
+ */exclude-dir
+ .*
+ */js/jquery.js
+ ;?echo?baz;?#
+Files-Excluded-baz: exclude-this
+ exclude-dir
+ */exclude-dir
+ .*
+ */js/jquery.js
+ ;?echo?baz;?#
+END
+    fi
     # debian/watch
     echo "version=$WATCHVER" > debian/watch
     echo "$WATCHLINE" | sed -e "s,@@@url@@@,http://localhost:${PORT}/,g" - \
 	>> debian/watch
 }
 
+
 # make tarball in $REPOPATH/$POOLPATH
 makeUpstreamTar() {
-    UPNAME=$1 # Upstream package name
-    UPVER=$2  # upstream package version
+    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/$UPNAME-$UPVER
+    touch $UPNAME-$UPVER/FILE.$UPNAME.$UPVER
+    touch $UPNAME-$UPVER/include-this
+    touch $UPNAME-$UPVER/exclude-this
+    touch $UPNAME-$UPVER/.hidden
+    mkdir -p "$UPNAME-$UPVER/; echo baz; #/"
+    mkdir -p $UPNAME-$UPVER/exclude-dir
+    touch $UPNAME-$UPVER/exclude-dir/file
+    mkdir -p $UPNAME-$UPVER/subdir/exclude-dir
+    touch $UPNAME-$UPVER/subdir/exclude-dir/file2
+    mkdir -p $UPNAME-$UPVER/docs/html/js/
+    touch $UPNAME-$UPVER/docs/html/js/jquery.js
     if [ "$TYPE" = "native" ]; then
 	cd $TMPDIR/$REPOPATH/$POOLPATH/$UPNAME-$UPVER
 	makeDebianDir $UPNAME $UPVER
@@ -156,12 +219,22 @@ makeUpstreamTar() {
 
 # setup a common watch file test environment
 helperWatch() {
-    SITESCRIPT=$1
-    VEROLD=$2
-    VERNEW=$3
-    PREFIX=$4
-    TMPDIR=$(mktemp -d)
+    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@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate"
+    WATCHLINE="${WATCHLINE:-$WATCHLINE0}"
+    COMPONENTS=${COMPONENTS:-}
+    FILEEXCLUDE=${FILEEXCLUDE:-0}
     cd $TMPDIR
     # start HTTP server with its root at $TMPDIR/$REPOPATH
     spawnHttpServer
@@ -179,29 +252,79 @@ helperWatch() {
     if [ ! -d debian ]; then
 	makeDebianDir $PKG ${PREFIX}${VEROLD}-$SUFFIX
     fi
-    $COMMAND
+    local UUPDATE=""
+    if grep -q "uupdate" $TMPDIR/${PKG}/debian/watch ; then
+	UUPDATE=uupdate
+    fi
+    $XCOMMAND
     assertEquals "uscan: exit_code!=0 but exit_code=0" "$?" "0"
     cd $TMPDIR
     UTARBALL=${PKG}-${VERNEW}.tar.gz
-    STARBALL=${PKG}_${PREFIX}${VERNEW}.orig.tar.gz
+    STARBALL=${PKG}_${PREFIX}${VERNEW}.orig.tar.$GZREPACK
     assertTrue "$UTARBALL missing: $WATCHLINE" "[ -f $UTARBALL ]"
     assertTrue "$STARBALL missing: $WATCHLINE" "[ -f $STARBALL ]"
     # check uupdate
     if [ "$UUPDATE" = "uupdate" ]; then
-	assertTrue 'pristine tarball is not extracted' "[ -f $TMPDIR/${PKG}-${PREFIX}${VERNEW}/debian/changelog ]"
-	DVERSION=`dpkg-parsechangelog -l$TMPDIR/${PKG}-${PREFIX}${VERNEW}/debian/changelog -SVersion`
+	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"
+	if [ "$FILEEXCLUDE" != "2" ]; then
+	assertTrue 'file that must be present is excluded in the tarball' '[ -f include-this ]'
+	fi
+	if [ "$FILEEXCLUDE" = "1" ] || [ "$FILEEXCLUDE" = "3" ]; then
+	assertFalse "file that must be excluded is present in the tarball" '[ -f exclude-this ]'
+	assertFalse "hidden file that must be excluded is present in the tarball" '[ -f .hidden ]'
+	assertFalse "dir that must be excluded is present in the tarball" '[ -d exclude-dir ]'
+	assertFalse "subdir that must be excluded is present in the tarball" '[ -d subdir/exclude-dir ]'
+	CONTENTS=$(ls -R)
+	assertFalse "non-root-file that must be excluded is present in the tarball"	\
+                $(containsName "$CONTENTS" jquery.js)
+	assertFalse "path with whitespace that must be excluded is present in the tarball"	\
+                $(containsName "$CONTENTS" "; echo baz; #/")
+	fi
+        for c in $COMPONENTS ; do
+	    cd $TMPDIR/${PKG}-${PREFIX}${VERNEW}/$c
+	assertTrue 'file that must be present is excluded in the tarball' '[ -f include-this ]'
+	if [ "$FILEEXCLUDE" = "2" ] || [ "$FILEEXCLUDE" = "3" ]; then
+	assertFalse "file that must be excluded is present in the orig-$c.tar" '[ -f exclude-this ]'
+	assertFalse "hidden file that must be excluded is present in the orig-$c.tar" '[ -f .hidden ]'
+	assertFalse "dir that must be excluded is present in the orig-$c.tar" '[ -d exclude-dir ]'
+	assertFalse "subdir that must be excluded is present in the orig-$c.tar" '[ -d subdir/exclude-dir ]'
+	CONTENTS=$(ls -R)
+	assertFalse "non-root-file that must be excluded is present in the orig-$c.tar"	\
+                $(containsName "$CONTENTS" jquery.js)
+	assertFalse "path with whitespace that must be excluded is present in the orig-$c.tar"	\
+                $(containsName "$CONTENTS" "; echo baz; #/")
+	fi
+	done
+	cd $TMPDIR
     fi
-    $DEBUGLSLR
+    $DEBUGBASH
     cd $ORIGDIR
     cleanup
+    unset REPOPATH
+    unset POOLPATH
+    unset GZREPACK
+    unset XCOMMAND
+    unset WATCHVER
+    unset WATCHLINE
+    unset COMPONENTS
+    unset FILEEXCLUDE
 }
 
 # setup a common watch file test environment to see user-agent
 helperWatchUA() {
-    SITESCRIPT=$1
+    local SITESCRIPT=${1:-siteWebNonNative}
     TMPDIR=$(mktemp -d)
     ORIGDIR=`pwd`
+    PKG=${PKG:-foo}
+    REPOPATH=${REPOPATH:-repo}
+    POOLPATH=${POOLPATH:-pool}
+    XCOMMAND=${XCOMMAND:-$COMMAND}
+    WATCHVER="${WATCHVER:-3}"
+    WATCHLINE0="@@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate"
+    WATCHLINE="${WATCHLINE:-$WATCHLINE0}"
     cd $TMPDIR
     # start HTTP server with its root at $TMPDIR/$REPOPATH
     spawnHttpServer
@@ -215,141 +338,123 @@ helperWatchUA() {
     if [ ! -d debian ]; then
 	makeDebianDir $PKG 1.0-$SUFFIX
     fi
-    $COMMAND
+    $XCOMMAND
     USERAGENTX="$(grep -ie '^User-Agent:' ../repo/log |head -1 | perl -p -e "s/\r//g" )"
     assertTrue "Bad $USERAGENTX" "[ \"$USERAGENTX\" = \"User-Agent: $USERAGENT\" ]"
     echo "SENT: \"User-Agent: $USERAGENT\""
     echo "GOT : \"$USERAGENTX\""
+    $DEBUGBASH
     cd $ORIGDIR
     cleanup
+    unset REPOPATH
+    unset POOLPATH
+    unset XCOMMAND
+    unset WATCHVER
+    unset WATCHLINE
 }
 
-# setup a common watch file test environment
-helperWatchXZ() {
-    SITESCRIPT=$1
-    VEROLD=$2
-    VERNEW=$3
-    PREFIX=$4
-    TMPDIR=$(mktemp -d)
-    ORIGDIR=`pwd`
-    cd $TMPDIR
-    # start HTTP server with its root at $TMPDIR/$REPOPATH
-    spawnHttpServer
-    PORT=$(cat $TMPDIR/$REPOPATH/port)
-    $DEBUGECHO " ***** http://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
-    $COMMAND
-    assertEquals "uscan: exit_code!=0 but exit_code=0" "$?" "0"
-    cd $TMPDIR
-    UTARBALL=${PKG}-${VERNEW}.tar.gz
-    STARBALL=${PKG}_${PREFIX}${VERNEW}.orig.tar.xz
-    assertTrue "$UTARBALL missing: $WATCHLINE" "[ -f $UTARBALL ]"
-    assertTrue "$STARBALL missing: $WATCHLINE" "[ -f $STARBALL ]"
-    # check uupdate
-    if [ "$UUPDATE" = "uupdate" ]; then
-	assertTrue 'pristine tarball is not extracted' "[ -f $TMPDIR/${PKG}-${PREFIX}${VERNEW}/debian/changelog ]"
-	DVERSION=`dpkg-parsechangelog -l$TMPDIR/${PKG}-${PREFIX}${VERNEW}/debian/changelog -SVersion`
-	assertEquals "uscan: Version should be ${PREFIX}${VERNEW}-$SUFFIX but $DVERSION" "$DVERSION" "${PREFIX}${VERNEW}-$SUFFIX"
-    fi
-    $DEBUGLSLR
-    cd $ORIGDIR
-    cleanup
-}
 # populate pool directory
-sitePoolNative() {
+siteNative() {
+    local PKG=${1:-foo}
     makeUpstreamTar $PKG 0.0 gz native
     makeUpstreamTar $PKG 1.0 gz native
     makeUpstreamTar $PKG 2.0 gz native
-    mkdir -p $TMPDIR/$REPOPATH/123/foo/ooo/
-    mkdir -p $TMPDIR/$REPOPATH/124/foo/ooo/
-    mkdir -p $TMPDIR/$REPOPATH/125/foo/ooo/
-    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz $TMPDIR/$REPOPATH/123/foo/ooo/${PKG}-0.0.tar.gz
-    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz $TMPDIR/$REPOPATH/124/foo/ooo/${PKG}-1.0.tar.gz
-    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz $TMPDIR/$REPOPATH/125/foo/ooo/${PKG}-2.0.tar.gz
+    mkdir -p $TMPDIR/$REPOPATH/123/$PKG/ooo/
+    mkdir -p $TMPDIR/$REPOPATH/124/$PKG/ooo/
+    mkdir -p $TMPDIR/$REPOPATH/125/$PKG/ooo/
+    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz $TMPDIR/$REPOPATH/123/$PKG/ooo/${PKG}-0.0.tar.gz
+    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz $TMPDIR/$REPOPATH/124/$PKG/ooo/${PKG}-1.0.tar.gz
+    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz $TMPDIR/$REPOPATH/125/$PKG/ooo/${PKG}-2.0.tar.gz
 }
 
-sitePoolNonNative() {
+siteNonNative() {
+    local PKG=${1:-foo}
     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/123/foo/ooo/
-    mkdir -p $TMPDIR/$REPOPATH/124/foo/ooo/
-    mkdir -p $TMPDIR/$REPOPATH/125/foo/ooo/
-    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz $TMPDIR/$REPOPATH/123/foo/ooo/${PKG}-0.0.tar.gz
-    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz $TMPDIR/$REPOPATH/124/foo/ooo/${PKG}-1.0.tar.gz
-    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz $TMPDIR/$REPOPATH/125/foo/ooo/${PKG}-2.0.tar.gz
+    mkdir -p $TMPDIR/$REPOPATH/123/$PKG/ooo/
+    mkdir -p $TMPDIR/$REPOPATH/124/$PKG/ooo/
+    mkdir -p $TMPDIR/$REPOPATH/125/$PKG/ooo/
+    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz $TMPDIR/$REPOPATH/123/$PKG/ooo/${PKG}-0.0.tar.gz
+    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz $TMPDIR/$REPOPATH/124/$PKG/ooo/${PKG}-1.0.tar.gz
+    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz $TMPDIR/$REPOPATH/125/$PKG/ooo/${PKG}-2.0.tar.gz
 }
 
 # hide siteNative behind a web page
 siteWebNative() {
-    sitePoolNative
+    siteNative
+    cat <<END > $TMPDIR/$REPOPATH/index.html
+<html>
+<head>
+  <meta charset="utf-8">
+</head>
+<body>
+<a href="/123/foo/ooo/foo-0.0.tar.gz">Very old</a> <br/ >
+<a href="/124/foo/ooo/foo-1.0.tar.gz">A bit OLD</a> <br />
+<a href="/125/foo/ooo/foo-2.0.tar.gz">Latest</a> <br />
+</body>
+<html>
+END
+}
+
+siteWebNonNative() {
+    siteNonNative
     cat <<END > $TMPDIR/$REPOPATH/index.html
 <html>
 <head>
   <meta charset="utf-8">
 </head>
 <body>
-<a href="/123/foo/ooo/$PKG-0.0.tar.gz">Very old</a> <br/ >
-<a href="/124/foo/ooo/$PKG-1.0.tar.gz">A bit OLD</a> <br />
-<a href="/125/foo/ooo/$PKG-2.0.tar.gz">Latest</a> <br />
+<a href="/123/foo/ooo/foo-0.0.tar.gz">Very old</a> <br/ >
+<a href="/124/foo/ooo/foo-1.0.tar.gz">A bit OLD</a> <br />
+<a href="/125/foo/ooo/foo-2.0.tar.gz">Latest</a> <br />
 </body>
 <html>
 END
 }
 
 siteWebNonNative() {
-    sitePoolNonNative
+    siteNonNative
     cat <<END > $TMPDIR/$REPOPATH/index.html
 <html>
 <head>
   <meta charset="utf-8">
 </head>
 <body>
-<a href="/123/foo/ooo/$PKG-0.0.tar.gz">Very old</a> <br/ >
-<a href="/124/foo/ooo/$PKG-1.0.tar.gz">A bit OLD</a> <br />
-<a href="/125/foo/ooo/$PKG-2.0.tar.gz">Latest</a> <br />
+<a href="/123/foo/ooo/foo-0.0.tar.gz">Very old</a> <br/ >
+<a href="/124/foo/ooo/foo-1.0.tar.gz">A bit OLD</a> <br />
+<a href="/125/foo/ooo/foo-2.0.tar.gz">Latest</a> <br />
 </body>
 <html>
 END
 }
 
 siteWebNonNativeR() {
-    makeUpstreamTar $PKG 0.0 gz non-native
-    makeUpstreamTar $PKG 1.0 gz non-native
-    makeUpstreamTar $PKG 2.0 gz non-native
+    makeUpstreamTar foo 0.0 gz non-native
+    makeUpstreamTar foo 1.0 gz non-native
+    makeUpstreamTar foo 2.0 gz non-native
     mkdir -p $TMPDIR/$REPOPATH/123/foo/ooo/
     mkdir -p $TMPDIR/$REPOPATH/124/foo/ooo/
     mkdir -p $TMPDIR/$REPOPATH/125/foo/ooo/
-    ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz $TMPDIR/$REPOPATH/125/foo/ooo/${PKG}-0.0.tar.gz
-    ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz $TMPDIR/$REPOPATH/124/foo/ooo/${PKG}-1.0.tar.gz
-    ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz $TMPDIR/$REPOPATH/123/foo/ooo/${PKG}-2.0.tar.gz
+    ln -sf ../../../$POOLPATH/foo-0.0.tar.gz $TMPDIR/$REPOPATH/125/foo/ooo/foo-0.0.tar.gz
+    ln -sf ../../../$POOLPATH/foo-1.0.tar.gz $TMPDIR/$REPOPATH/124/foo/ooo/foo-1.0.tar.gz
+    ln -sf ../../../$POOLPATH/foo-2.0.tar.gz $TMPDIR/$REPOPATH/123/foo/ooo/foo-2.0.tar.gz
     cat <<END > $TMPDIR/$REPOPATH/index.html
 <html>
 <head>
   <meta charset="utf-8">
 </head>
 <body>
-<a href="/125/foo/ooo/$PKG-0.0.tar.gz">Very old</a> <br/ >
-<a href="/124/foo/ooo/$PKG-1.0.tar.gz">A bit OLD</a> <br />
-<a href="/123/foo/ooo/$PKG-2.0.tar.gz">Latest</a> <br />
+<a href="/125/foo/ooo/foo-0.0.tar.gz">Very old</a> <br/ >
+<a href="/124/foo/ooo/foo-1.0.tar.gz">A bit OLD</a> <br />
+<a href="/123/foo/ooo/foo-2.0.tar.gz">Latest</a> <br />
 </body>
 <html>
 END
 }
 
 sitePrWebNonNative() {
-    sitePoolNonNative
+    siteNonNative
     cat <<END > $TMPDIR/$REPOPATH/index.html
 <html>
 <head>
@@ -365,40 +470,64 @@ END
 }
 
 siteWebNonNativeLarge() {
-    makeUpstreamTar $PKG 19990101 gz non-native
-    makeUpstreamTar $PKG 20000101 gz non-native
-    makeUpstreamTar $PKG 20010101 gz non-native
+    makeUpstreamTar foo 19990101 gz non-native
+    makeUpstreamTar foo 20000101 gz non-native
+    makeUpstreamTar foo 20010101 gz non-native
     mkdir -p $REPOPATH/123/foo/ooo/
     mkdir -p $REPOPATH/124/foo/ooo/
     mkdir -p $REPOPATH/125/foo/ooo/
-    ln -sf ../../../$POOLPATH/${PKG}-19990101.tar.gz $TMPDIR/$REPOPATH/123/foo/ooo/${PKG}-19990101.tar.gz
-    ln -sf ../../../$POOLPATH/${PKG}-20000101.tar.gz $TMPDIR/$REPOPATH/124/foo/ooo/${PKG}-20000101.tar.gz
-    ln -sf ../../../$POOLPATH/${PKG}-20010101.tar.gz $TMPDIR/$REPOPATH/125/foo/ooo/${PKG}-20010101.tar.gz
+    ln -sf ../../../$POOLPATH/foo-19990101.tar.gz $TMPDIR/$REPOPATH/123/foo/ooo/foo-19990101.tar.gz
+    ln -sf ../../../$POOLPATH/foo-20000101.tar.gz $TMPDIR/$REPOPATH/124/foo/ooo/foo-20000101.tar.gz
+    ln -sf ../../../$POOLPATH/foo-20010101.tar.gz $TMPDIR/$REPOPATH/125/foo/ooo/foo-20010101.tar.gz
     cat <<END > $TMPDIR/$REPOPATH/index.html
 <html>
 <head>
   <meta charset="utf-8">
 </head>
 <body>
-<a href="/123/foo/ooo/$PKG-19990101.tar.gz">Very old</a> <br/ >
-<a href="/124/foo/ooo/$PKG-20000101.tar.gz">A bit OLD</a> <br />
-<a href="/125/foo/ooo/$PKG-20010101.tar.gz">Latest</a> <br />
+<a href="/123/foo/ooo/foo-19990101.tar.gz">Very old</a> <br/ >
+<a href="/124/foo/ooo/foo-20000101.tar.gz">A bit OLD</a> <br />
+<a href="/125/foo/ooo/foo-20010101.tar.gz">Latest</a> <br />
 </body>
 <html>
 END
 }
 
 siteXmlNonNative() {
-    sitePoolNonNative
+    siteNonNative
+    cat <<END > $TMPDIR/$REPOPATH/index.html
+<html>
+<head>
+  <meta charset="utf-8">
+</head>
+<body>
+<Key>/123/foo/ooo/foo-0.0.tar.gz</Key> <br/ >
+<Key>/124/foo/ooo/foo-1.0.tar.gz</Key> <br />
+<Key>/125/foo/ooo/foo-2.0.tar.gz</Key> <br />
+</body>
+<html>
+END
+}
+
+siteWebNonNativeMUT() {
+    siteNonNative foo
+    siteNonNative bar
+    siteNonNative baz
     cat <<END > $TMPDIR/$REPOPATH/index.html
 <html>
 <head>
   <meta charset="utf-8">
 </head>
 <body>
-<Key>/123/foo/ooo/$PKG-0.0.tar.gz</Key> <br/ >
-<Key>/124/foo/ooo/$PKG-1.0.tar.gz</Key> <br />
-<Key>/125/foo/ooo/$PKG-2.0.tar.gz</Key> <br />
+<a href="/123/foo/ooo/foo-0.0.tar.gz">Very old</a> <br/ >
+<a href="/124/foo/ooo/foo-1.0.tar.gz">A bit OLD</a> <br />
+<a href="/125/foo/ooo/foo-2.0.tar.gz">Latest</a> <br />
+<a href="/123/bar/ooo/bar-0.0.tar.gz">Very old</a> <br/ >
+<a href="/124/bar/ooo/bar-1.0.tar.gz">A bit OLD</a> <br />
+<a href="/125/bar/ooo/bar-2.0.tar.gz">Latest</a> <br />
+<a href="/123/baz/ooo/baz-0.0.tar.gz">Very old</a> <br/ >
+<a href="/124/baz/ooo/baz-1.0.tar.gz">A bit OLD</a> <br />
+<a href="/125/baz/ooo/baz-2.0.tar.gz">Latest</a> <br />
 </body>
 <html>
 END
@@ -406,125 +535,164 @@ END
 
 # test a watch files
 
-testWatch3Native() {
-    PKG=foo
-    WATCHVER="3"
-    WATCHLINE='@@@url@@@/(\d+)/(.+)/(.+)/'$PKG'-([\.\d]+).tar.gz debian'
-    helperWatch sitePoolNative 1.0 2.0
+### VERSION 4 ###
+
+# test native package w/o uupdate, bare HTTP server in normal order
+testWatch4Native() {
+    WATCHVER=4
+    WATCHLINE='@@@url@@@/(\d+)/(.+)/(.+)/foo-([\.\d]+).tar.gz debian'
+    helperWatch siteNative
+}
+
+# test non-native package with uupdate, bare HTTP server in normal order
+testWatch4NonNative() {
+    WATCHVER=4
+    WATCHLINE='@@@url@@@(\d+)/(.+)/(.+)/ foo-([\.\d]+).tar.gz debian uupdate'
+    helperWatch siteNonNative
 }
 
-testWatch3NonNative() {
-    PKG=foo
-    WATCHVER="3"
-    WATCHLINE='@@@url@@@(\d+)/(.+)/(.+)/ '$PKG'-([\.\d]+).tar.gz debian uupdate'
-    helperWatch sitePoolNonNative 1.0 2.0
+# test 3 parameter watch line
+testWatch4WebNative() {
+    WATCHVER=4
+    WATCHLINE='@@@url@@@ (?:.*)/foo-([\d\.]+).tar.gz debian'
+    helperWatch siteWebNative
 }
 
-testWatch3WebNative() {
-    PKG=foo
-    WATCHVER="3"
-    WATCHLINE='@@@url@@@ (?:.*)/'$PKG'-([\d\.]+).tar.gz debian'
-    helperWatch siteWebNative 1.0 2.0
+# test normal web page
+testWatch4WebNonNative() {
+    WATCHVER=4
+    helperWatch
 }
 
-testWatch3WebNonNative() {
-    PKG=foo
-    WATCHVER="3"
-    WATCHLINE='@@@url@@@/ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate'
-    helperWatch siteWebNonNative 1.0 2.0
+# test normal web page (Files-exclude)
+testWatch4WebNonNativeFE() {
+    FILEEXCLUDE=1
+    WATCHVER=4
+    helperWatch
 }
 
-testWatch3WebNonNativeR() {
-    PKG=foo
-    WATCHVER="3"
-    WATCHLINE='@@@url@@@/ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate'
-    helperWatch siteWebNonNativeR 1.0 2.0
+# test normal web page (file path reverse order)
+testWatch4WebNonNativeR() {
+    WATCHVER=4
+    helperWatch siteWebNonNativeR
 }
 
-testWatch3PrWebNonNative() {
-    PKG=foo
-    WATCHVER="3"
+# test for downloadurlmangle and filenamemangle for tricky web page
+testWatch4PrWebNonNative() {
+    WATCHVER=4
     WATCHLINE='opts="downloadurlmangle = s%boo/xxx%foo/ooo% ; s%boo-%foo-%, \
                      filenamemangle    = s%.*boo-(.*)%foo-$1% " \
     @@@url@@@/ (?:.*)/boo-([\d\.]+).tar.gz \
     debian uupdate'
-    helperWatch sitePrWebNonNative 1.0 2.0
+    helperWatch sitePrWebNonNative
 }
 
-testWatch3WebNonNativeDlCurrent() {
-    PKG=foo
-    COMMANDOLD="$COMMAND"
-    COMMAND="$COMMAND --download-current-version"
-    WATCHVER="3"
-    WATCHLINE='@@@url@@@/ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate'
+# test --download-current-version
+testWatch4WebNonNativeDlCurrent() {
+    WATCHVER=4
+    XCOMMAND="$COMMAND --download-current-version"
+    WATCHLINE='@@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate'
     helperWatch siteWebNonNative 1.0 1.0
-    COMMAND="$COMMANDOLD"
-}
-testWatch3WebNonNativeDlUversion() {
-    PKG=foo
-    COMMANDOLD="$COMMAND"
-    COMMAND="$COMMAND --download-version 0.0"
-    WATCHVER="3"
-    WATCHLINE='@@@url@@@/ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate'
+}
+
+# test --download-version
+testWatch4WebNonNativeDlUversion() {
+    WATCHVER=4
+    XCOMMAND="$COMMAND --download-version 0.0"
+    WATCHLINE='@@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate'
     helperWatch siteWebNonNative 1.0 0.0
-    COMMAND="$COMMANDOLD"
-}
-testWatch3WebNonNativeDlDversion() {
-    PKG=foo
-    COMMANDOLD="$COMMAND"
-    COMMAND="$COMMAND --download-debversion 0.0-1"
-    WATCHVER="3"
-    WATCHLINE='@@@url@@@/ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate'
+}
+
+# test --download-debversion uupdate 
+testWatch4WebNonNativeDlDversion() {
+    WATCHVER=4
+    XCOMMAND="$COMMAND --download-debversion 0.0-1"
+    WATCHLINE='@@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate'
     helperWatch siteWebNonNative 1.0 0.0
-    COMMAND="$COMMANDOLD"
 }
 
 # Debian version is 0.19990101 for future proof while upstream is 19990101
-testWatch3WebNonNativeLarge() {
-    PKG=foo
-    WATCHVER="3"
+testWatch4WebNonNativeLarge() {
+    WATCHVER=4
     WATCHLINE='opts=" dversionmangle = s/0\.(.*)/$1/ , \
 	oversionmangle = s/(.*)/0.$1/" \
-	@@@url@@@  (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate'
+	@@@url@@@  (?:.*)/foo-([\.\d]+).tar.gz debian uupdate'
     helperWatch siteWebNonNativeLarge 20000101 20010101 0.
 }
 
 # test for pagemangle
-testWatch3XmlNonNative() {
-    PKG=foo
-    WATCHVER="3"
+testWatch4XmlNonNative() {
+    WATCHVER=4
     WATCHLINE='opts="pagemangle = \
 	s%<Key>([^<]*)</Key>%<Key><a href=\"$1\">$1</a></Key>%g" \
-	@@@url@@@/ (?:.*)/'$PKG'-([\d\.]+).tar.gz debian uupdate'
-    helperWatch siteXmlNonNative 1.0 2.0
+	@@@url@@@/ (?:.*)/foo-([\d\.]+).tar.gz debian uupdate'
+    helperWatch siteXmlNonNative
 }
 
-testWatch3WebNonNativeUA() {
-    PKG=foo
-    WATCHVER="3"
+# test user-agent string setting via opts=
+testWatch4WebNonNativeUA() {
+    WATCHVER=4
+    USCAN_HTTP_SERVER="server-head.py"
     USERAGENT="foo/bar; baz:12,3.45"
-    WATCHLINE='opts="useragent= '$USERAGENT' "'"\n"'@@@url@@@/ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate'
-    helperWatchUA siteWebNonNative
+    WATCHLINE='opts="useragent= '$USERAGENT' "'"\n"'@@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate'
+    helperWatchUA
+    unset USERAGENT
+    unset USCAN_HTTP_SERVER
 }
 
 # test repack and compression
-testWatch3WebNonNativeXZ() {
-    PKG=foo
-    WATCHVER="3"
-    WATCHLINE='opts=repack,compression=xz @@@url@@@/ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate'
-    helperWatchXZ siteWebNonNative 1.0 2.0
+testWatch4WebNonNativeBZ2() {
+    WATCHVER=4
+    WATCHLINE='opts=repack,compression=bz2 @@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate'
+    GZREPACK=bz2
+    helperWatch
+    unset GZREPACK
+}
+
+# test repack and compression
+testWatch4WebNonNativeXZ() {
+    WATCHVER=4
+    WATCHLINE='opts=repack,compression=xz @@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate'
+    GZREPACK=xz
+    helperWatch
+    unset GZREPACK
 }
 
 # test spaces everywhere
-testWatch3PrWebNonNativeXZ() {
-    PKG=foo
-    WATCHVER="3"
+testWatch4PrWebNonNativeXZ() {
+    WATCHVER=4
     WATCHLINE='opts = "downloadurlmangle = s%boo/xxx%foo/ooo% ; s%boo-%foo-%, \
                      filenamemangle    = s%.*boo-(.*)%foo-$1% , \
                      repack , compression=xz" \
     @@@url@@@/ (?:.*)/boo-([\d\.]+).tar.gz \
     debian uupdate'
-    helperWatchXZ sitePrWebNonNative 1.0 2.0
+    GZREPACK=xz
+    helperWatch sitePrWebNonNative
+    unset GZREPACK
+}
+
+### VERSION 4 only ###
+
+# test normal web page (MUT)
+testWatch4WebNonNativeMUT() {
+    WATCHVER=4
+    COMPONENTS="bar baz"
+    FILEEXCLUDE=3
+    WATCHLINE='@@@url@@@ (?:.*)/foo-([\d\.]+).tar.gz debian
+opts="component=bar" @@@url@@@ (?:.*)/bar-([\d\.]+).tar.gz same
+opts="component=baz" @@@url@@@ (?:.*)/baz-([\d\.]+).tar.gz same uupdate'
+    helperWatch siteWebNonNativeMUT
+}
+
+# test normal web page (MUT with O main)
+testWatch4WebNonNativeMUT0() {
+    WATCHVER=4
+    COMPONENTS="foo bar baz"
+    FILEEXCLUDE=2
+    WATCHLINE='opts="component=foo" @@@url@@@ (?:.*)/foo-([\d\.]+).tar.gz debian
+opts="component=bar" @@@url@@@ (?:.*)/bar-([\d\.]+).tar.gz same
+opts="component=baz" @@@url@@@ (?:.*)/baz-([\d\.]+).tar.gz same uupdate'
+    helperWatch siteWebNonNativeMUT
 }
 
 . shunit2

-- 
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