diff options
Diffstat (limited to 'test/test_uscan_mangle')
-rwxr-xr-x | test/test_uscan_mangle | 1178 |
1 files changed, 1178 insertions, 0 deletions
diff --git a/test/test_uscan_mangle b/test/test_uscan_mangle new file mode 100755 index 0000000..7ab651e --- /dev/null +++ b/test/test_uscan_mangle @@ -0,0 +1,1178 @@ +#!/bin/bash + +# Copyright (C) 2013, Rafael Laboissiere <rafael@laboissiere.net> +# +# 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. + +set -u + +TESTTYPE=Mangle +. ./lib_test_uscan + +COMMAND="uscan --no-conf" + +# 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" + +# 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 + +tearDown(){ + killHttpServer + echo +} + +trap tearDown EXIT + +containsName(){ + echo "$1" | grep -qF "$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 HTTP server that works offline, using the SimpleHTTPServer +# 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 + if [ "${FILEEXCLUDE:-0}" = "1" ]; then + # exclude just for main + cat <<'END' >> debian/copyright +Files-Excluded: exclude-this + */exclude-dir + .* + */js/jquery.js + ;?echo?baz;?# +END + elif [ "${FILEEXCLUDE:-0}" = "2" ]; then + # exclude for main(=foo) bar baz + cat <<'END' >> debian/copyright +Files-Excluded: exclude-this + */exclude-dir + .* + */js/jquery.js + ;?echo?baz;?# +Files-Excluded-bar: exclude-this + */exclude-dir + .* + */js/jquery.js + ;?echo?baz;?# +Files-Excluded-baz: exclude-this + */exclude-dir + .* + */js/jquery.js + ;?echo?baz;?# +END + elif [ "${FILEEXCLUDE:-0}" = "3" ]; then + # exclude for foo bar baz + cat <<'END' >> debian/copyright +Files-Excluded-foo: exclude-this + */exclude-dir + .* + */js/jquery.js + ;?echo?baz;?# +Files-Excluded-bar: exclude-this + */exclude-dir + .* + */js/jquery.js + ;?echo?baz;?# +Files-Excluded-baz: exclude-this + */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 + # debian/upstream/signing-key.asc + mkdir -p debian/upstream + if [ "$KEYMODE" = "ASC" ]; then + cp -f $test_dir/uscan/PUBLIC_KEY.asc debian/upstream/signing-key.asc + else + cp -f "$GPGHOME/pubring.gpg" debian/upstream/signing-key.pgp + fi +} + + +# 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 "$TEMP_PKG_DIR"/$REPOPATH/$POOLPATH/$UPNAME-$UPVER + cd "$TEMP_PKG_DIR"/$REPOPATH/$POOLPATH + 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 "$TEMP_PKG_DIR"/$REPOPATH/$POOLPATH/$UPNAME-$UPVER + makeDebianDir $UPNAME $UPVER + cd "$TEMP_PKG_DIR"/$REPOPATH/$POOLPATH + fi + case $COMPRESSION in + gz|gzip) + NEWTAR=$UPNAME-$UPVER.tar.gz + tar -czf $NEWTAR $UPNAME-$UPVER + ;; + bz2|bzip2) + NEWTAR=$UPNAME-$UPVER.tar.bz2 + tar --bzip2 -cf $NEWTAR $UPNAME-$UPVER + ;; + xz) + 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 + case "${SIGMODE:-}" in # undefined SIGMODE → no sig + ASC) # make $NEWTAR.asc + $GPG --homedir "$GPGHOME" --no-options -q --batch --no-default-keyring \ + --secret-keyring $PRIVATE_KEYRING --default-key 72543FAF \ + --armor --detach-sign $NEWTAR + ;; + BIN) #make $NEWTAR.sig + $GPG --homedir "$GPGHOME" --no-options -q --batch --no-default-keyring \ + --secret-keyring $PRIVATE_KEYRING --default-key 72543FAF \ + --detach-sign $NEWTAR + ;; + SELF) #make $NEWTAR.gpg + $GPG --homedir "$GPGHOME" --no-options -q --batch --no-default-keyring \ + --secret-keyring $PRIVATE_KEYRING --default-key 72543FAF \ + --sign $NEWTAR + esac + + 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:-}" + TEMP_PKG_DIR=${TEMP_PKG_DIR:-$(mktemp -d -p "$SHUNIT_TMPDIR" uscan_mangle.XXXXXX)} + ORIGDIR=`pwd` + PKG=${PKG:-foo} + REPOPATH=${REPOPATH:-repo} + POOLPATH=${POOLPATH:-pool} + GZREPACK=${GZREPACK:-xz} + MGZREPACK=${MGZREPACK:-gz} + XCOMMAND=${XCOMMAND:-$COMMAND} + WATCHVER="${WATCHVER:-3}" + WATCHLINE0="@@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate" + WATCHLINE="${WATCHLINE:-$WATCHLINE0}" + COMPONENTS=${COMPONENTS:-} + FILEEXCLUDE=${FILEEXCLUDE:-0} # no exclude + SIGMODE=${SIGMODE:-ASC} # ASC=ASCII or BIN=BINARY or SELF + KEYMODE=${KEYMODE:-ASC} # ASC=ASCII AEMORED or BIN=DEARMORED BINARY + cd "$TEMP_PKG_DIR" + # start HTTP server with its root at "$TEMP_PKG_DIR"/$REPOPATH + spawnHttpServer + PORT=$(cat "$TEMP_PKG_DIR"/$REPOPATH/port) + $DEBUGECHO " ***** http://localhost:$PORT started showing "$TEMP_PKG_DIR"/$REPOPATH *****" + # make web site + $SITESCRIPT + # make local $VEROLD source tree + tar -xzf "$TEMP_PKG_DIR"/$REPOPATH/$POOLPATH/${PKG}-${VEROLD}.tar.gz + if [ -n "$PREFIX" ]; then + mv "$TEMP_PKG_DIR"/${PKG}-${VEROLD} "$TEMP_PKG_DIR"/${PKG}-${PREFIX}${VEROLD} + fi + mv "$TEMP_PKG_DIR"/${PKG}-${PREFIX}${VEROLD} "$TEMP_PKG_DIR"/${PKG} + cd "$TEMP_PKG_DIR"/${PKG} + if [ ! -d debian ]; then + makeDebianDir $PKG ${PREFIX}${VEROLD}-$SUFFIX + fi + local UUPDATE="" + if grep -q "uupdate" "$TEMP_PKG_DIR"/${PKG}/debian/watch ; then + UUPDATE=uupdate + fi + local PGP="" + if grep -q "pgpurlmangle" "$TEMP_PKG_DIR"/${PKG}/debian/watch ; then + PGP=pgp + fi + if grep -q "pgpmode *= *auto" "$TEMP_PKG_DIR"/${PKG}/debian/watch ; then + PGP=pgp + fi + if grep -q "pgpmode *= *previous" "$TEMP_PKG_DIR"/${PKG}/debian/watch ; then + PGP=pgp + fi + $XCOMMAND + assertEquals "uscan: exit_code!=0 but exit_code=0" "$?" "0" + cd "$TEMP_PKG_DIR" + $DEBUGLSLR + UTARBALL=${PKG}-${UVERSION:-${VERNEW}}.tar.gz + STARBALL=${PKG}_${PREFIX}${VERNEW}.orig.tar.$MGZREPACK + assertTrue "$UTARBALL missing: $WATCHLINE" "[ -f $UTARBALL ]" + assertTrue "$STARBALL missing: $WATCHLINE" "[ -f $STARBALL ]" + if [ "$PGP" = "pgp" ]; then + UTARSIG=${PKG}-${UVERSION:-${VERNEW}}.tar.gz.sig + if [ ! -f $UTARSIG ]; then + UTARSIG=${PKG}-${UVERSION:-${VERNEW}}.tar.gz.asc + fi + STARSIG=${PKG}_${PREFIX}${VERNEW}.orig.tar.$MGZREPACK.asc + assertTrue "$UTARSIG and *.sig missing: $WATCHLINE" "[ -f $UTARSIG ]" + assertTrue "$STARSIG missing: $WATCHLINE" "[ -f $STARSIG ]" + fi + for cpnt in $COMPONENTS; do + UTARBALL=${cpnt}-${CMPVERSION:-${VERNEW}}.tar.gz + STARBALL=${PKG}_${PREFIX}${VERNEW}.orig-${cpnt}.tar.$GZREPACK + assertTrue "$UTARBALL missing: $WATCHLINE" "[ -f $UTARBALL ]" + assertTrue "$STARBALL missing: $WATCHLINE" "[ -f $STARBALL ]" + if [ "$PGP" = "pgp" ]; then + UTARSIG=${cpnt}-${CMPVERSION:-${VERNEW}}.tar.gz.sig + if [ ! -f $UTARSIG ]; then + UTARSIG=${cpnt}-${CMPVERSION:-${VERNEW}}.tar.gz.asc + fi + STARSIG=${PKG}_${PREFIX}${VERNEW}.orig-${cpnt}.tar.$GZREPACK.asc + assertTrue "$UTARSIG and *.sig missing: $WATCHLINE" "[ -f $UTARSIG ]" + # Skipping this: signature link skipped when upstream file is repacked + #assertTrue "$STARSIG missing: $WATCHLINE" "[ -f $STARSIG ]" + fi + done + # check uupdate + if [ "$UUPDATE" = "uupdate" ]; then + cd "$TEMP_PKG_DIR"/${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" != "3" ]; then + # main is dummy + assertTrue 'file that must be present is excluded in the tarball' '[ -f include-this ]' + fi + if [ "$FILEEXCLUDE" = "1" ] || [ "$FILEEXCLUDE" = "2" ]; 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 "$TEMP_PKG_DIR"/${PKG}-${PREFIX}${VERNEW}/$c + assertTrue 'file that must be present is excluded in the tarball' '[ -f include-this ]' + if [ "$FILEEXCLUDE" = "1" ] || [ "$FILEEXCLUDE" = "2" ]; 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 "$TEMP_PKG_DIR" + fi + $DEBUGBASH + cd $ORIGDIR + unset REPOPATH + unset POOLPATH + unset GZREPACK + unset MGZREPACK + unset XCOMMAND + unset WATCHVER + unset WATCHLINE + unset COMPONENTS + unset FILEEXCLUDE + unset SIGMODE + unset KEYMODE +} + +# setup a common watch file test environment to see user-agent +helperWatchUA() { + local SITESCRIPT=${1:-siteWebNonNative} + TEMP_PKG_DIR=$(mktemp -d -p "$SHUNIT_TMPDIR" uscan_mangle.XXXXXX) + ORIGDIR=`pwd` + PKG=${PKG:-foo} + REPOPATH=${REPOPATH:-repo} + POOLPATH=${POOLPATH:-pool} + XCOMMAND=${XCOMMAND:-$COMMAND} + WATCHVER="${WATCHVER:-3}" + WATCHLINE0="@@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate" + WATCHLINE="${WATCHLINE:-$WATCHLINE0}" + KEYMODE=${KEYMODE:-ASC} # ASC=ASCII AEMORED or BIN=DEARMORED BINARY + cd "$TEMP_PKG_DIR" + # start HTTP server with its root at "$TEMP_PKG_DIR"/$REPOPATH + spawnHttpServer + PORT=$(cat "$TEMP_PKG_DIR"/$REPOPATH/port) + $DEBUGECHO " ***** http://localhost:$PORT started showing "$TEMP_PKG_DIR"/$REPOPATH *****" + # make web site + $SITESCRIPT + # make local $VEROLD source tree + mkdir -p "$TEMP_PKG_DIR"/${PKG} + cd "$TEMP_PKG_DIR"/${PKG} + if [ ! -d debian ]; then + makeDebianDir $PKG 1.0-$SUFFIX + fi + $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 + unset REPOPATH + unset POOLPATH + unset XCOMMAND + unset WATCHVER + unset WATCHLINE + unset KEYMODE +} + +# populate pool directory +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 "$TEMP_PKG_DIR"/$REPOPATH/0.0/$PKG/ooo/ + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/1.0/$PKG/ooo/ + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/2.0/$PKG/ooo/ + ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.tar.gz +} + +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 "$TEMP_PKG_DIR"/$REPOPATH/0.0/$PKG/ooo/ + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/1.0/$PKG/ooo/ + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/2.0/$PKG/ooo/ + if [ -n "$EXTRA" ]; then + makeUpstreamTar $PKG 3.0 gz non-native + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/3.0/$PKG/ooo/ + fi + if [ "${SIGMODE:-}" = "ASC" ]; then + ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz.asc "$TEMP_PKG_DIR"/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.tar.gz.asc + ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz.asc "$TEMP_PKG_DIR"/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.tar.gz.asc + ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz.asc "$TEMP_PKG_DIR"/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.tar.gz.asc + if [ -n "$EXTRA" ]; then + ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.gz.asc "$TEMP_PKG_DIR"/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.tar.gz.asc + fi + elif [ "${SIGMODE:-}" = "BIN" ]; then + ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz.sig "$TEMP_PKG_DIR"/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.tar.gz.sig + ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz.sig "$TEMP_PKG_DIR"/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.tar.gz.sig + ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz.sig "$TEMP_PKG_DIR"/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.tar.gz.sig + if [ -n "$EXTRA" ]; then + ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.tar.gz + ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.gz.sig "$TEMP_PKG_DIR"/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.tar.gz.sig + fi + elif [ "${SIGMODE:-}" = "SELF" ]; then + ln -sf ../../../$POOLPATH/${PKG}-0.0.tar.gz.gpg "$TEMP_PKG_DIR"/$REPOPATH/0.0/$PKG/ooo/${PKG}-0.0.tar.gz.gpg + ln -sf ../../../$POOLPATH/${PKG}-1.0.tar.gz.gpg "$TEMP_PKG_DIR"/$REPOPATH/1.0/$PKG/ooo/${PKG}-1.0.tar.gz.gpg + ln -sf ../../../$POOLPATH/${PKG}-2.0.tar.gz.gpg "$TEMP_PKG_DIR"/$REPOPATH/2.0/$PKG/ooo/${PKG}-2.0.tar.gz.gpg + if [ -n "$EXTRA" ]; then + ln -sf ../../../$POOLPATH/${PKG}-3.0.tar.gz.gpg "$TEMP_PKG_DIR"/$REPOPATH/3.0/$PKG/ooo/${PKG}-3.0.tar.gz.gpg + fi + fi +} + +# hide siteNative behind a web page +siteWebNative() { + siteNative + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<a href="/0.0/foo/ooo/foo-0.0.tar.gz">Very old</a> <br/ > +<a href="/1.0/foo/ooo/foo-1.0.tar.gz">A bit OLD</a> <br /> +<a href="/2.0/foo/ooo/foo-2.0.tar.gz">Latest</a> <br /> +</body> +<html> +END +} + +siteWebNonNative() { + siteNonNative + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<a href="/0.0/foo/ooo/foo-0.0.tar.gz">Very old</a> <br/ > +<a href="/1.0/foo/ooo/foo-1.0.tar.gz">A bit OLD</a> <br /> +<a href="/2.0/foo/ooo/foo-2.0.tar.gz">Latest</a> <br /> +</body> +<html> +END +} + +siteWebNonNativeRecWithBase() { + siteNonNative "$@" + for DIR in "$TEMP_PKG_DIR"/$REPOPATH/[0-9].*; do + [ -d "$DIR" ] && cat <<END > "$DIR"/index.html +<html> +<head> + <meta charset="utf-8"> +<base href="/${DIR##*/}/foo/ooo/x.html"/> +</head> +<body> +<a href="foo-${DIR##*/}.tar.gz">Blah</a> <br/ > +</body> +<html> +END + done +} + +siteWebNonNativeR() { + makeUpstreamTar foo 0.0 gz non-native + makeUpstreamTar foo 1.0 gz non-native + makeUpstreamTar foo 2.0 gz non-native + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/123/foo/ooo/ + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/124/foo/ooo/ + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/125/foo/ooo/ + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/325/foo/ooo/ + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/424/foo/ooo/ + mkdir -p "$TEMP_PKG_DIR"/$REPOPATH/523/foo/ooo/ + if [ "$SIGMODE" = "ASC" ]; then + ln -sf ../../../$POOLPATH/foo-0.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/125/foo/ooo/foo-0.0.tar.gz + ln -sf ../../../$POOLPATH/foo-1.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/124/foo/ooo/foo-1.0.tar.gz + ln -sf ../../../$POOLPATH/foo-2.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/123/foo/ooo/foo-2.0.tar.gz + ln -sf ../../../$POOLPATH/foo-0.0.tar.gz.asc "$TEMP_PKG_DIR"/$REPOPATH/325/foo/ooo/foo-0.0.tar.gz.asc + ln -sf ../../../$POOLPATH/foo-1.0.tar.gz.asc "$TEMP_PKG_DIR"/$REPOPATH/424/foo/ooo/foo-1.0.tar.gz.asc + ln -sf ../../../$POOLPATH/foo-2.0.tar.gz.asc "$TEMP_PKG_DIR"/$REPOPATH/523/foo/ooo/foo-2.0.tar.gz.asc + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<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 /> +<a href="/325/foo/ooo/foo-0.0.tar.gz.asc">Very old sig</a> <br/ > +<a href="/424/foo/ooo/foo-1.0.tar.gz.asc">A bit OLD sig</a> <br /> +<a href="/523/foo/ooo/foo-2.0.tar.gz.asc">Latest sig</a> <br /> +</body> +<html> +END + elif [ "$SIGMODE" = "BIN" ]; then + ln -sf ../../../$POOLPATH/foo-0.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/125/foo/ooo/foo-0.0.tar.gz + ln -sf ../../../$POOLPATH/foo-1.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/124/foo/ooo/foo-1.0.tar.gz + ln -sf ../../../$POOLPATH/foo-2.0.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/123/foo/ooo/foo-2.0.tar.gz + ln -sf ../../../$POOLPATH/foo-0.0.tar.gz.sig "$TEMP_PKG_DIR"/$REPOPATH/325/foo/ooo/foo-0.0.tar.gz.sig + ln -sf ../../../$POOLPATH/foo-1.0.tar.gz.sig "$TEMP_PKG_DIR"/$REPOPATH/424/foo/ooo/foo-1.0.tar.gz.sig + ln -sf ../../../$POOLPATH/foo-2.0.tar.gz.sig "$TEMP_PKG_DIR"/$REPOPATH/523/foo/ooo/foo-2.0.tar.gz.sig + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<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 /> +<a href="/325/foo/ooo/foo-0.0.tar.gz.sig">Very old sig</a> <br/ > +<a href="/424/foo/ooo/foo-1.0.tar.gz.sig">A bit OLD sig</a> <br /> +<a href="/523/foo/ooo/foo-2.0.tar.gz.sig">Latest sig</a> <br /> +</body> +<html> +END + elif [ "$SIGMODE" = "SELF" ]; then + ln -sf ../../../$POOLPATH/foo-0.0.tar.gz.gpg "$TEMP_PKG_DIR"/$REPOPATH/325/foo/ooo/foo-0.0.tar.gz.gpg + ln -sf ../../../$POOLPATH/foo-1.0.tar.gz.gpg "$TEMP_PKG_DIR"/$REPOPATH/424/foo/ooo/foo-1.0.tar.gz.gpg + ln -sf ../../../$POOLPATH/foo-2.0.tar.gz.gpg "$TEMP_PKG_DIR"/$REPOPATH/523/foo/ooo/foo-2.0.tar.gz.gpg + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<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 /> +<a href="/325/foo/ooo/foo-0.0.tar.gz.gpg">Very old sig</a> <br/ > +<a href="/424/foo/ooo/foo-1.0.tar.gz.gpg">A bit OLD sig</a> <br /> +<a href="/523/foo/ooo/foo-2.0.tar.gz.gpg">Latest sig</a> <br /> +</body> +<html> +END + fi +} + +sitePrWebNonNative() { + siteNonNative + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<a href="/0.0/boo/xxx/boo-0.0.tar.gz">Very old</a> <br/ > +<a href="/1.0/boo/xxx/boo-1.0.tar.gz">A bit OLD</a> <br /> +<a href="/2.0/boo/xxx/boo-2.0.tar.gz">Latest</a> <br /> +</body> +<html> +END +} + +siteWebNonNativeLarge() { + makeUpstreamTar foo 19990101 gz non-native + makeUpstreamTar foo 20000101 gz non-native + makeUpstreamTar foo 20010101 gz non-native + mkdir -p $REPOPATH/0.0/foo/ooo/ + mkdir -p $REPOPATH/1.0/foo/ooo/ + mkdir -p $REPOPATH/2.0/foo/ooo/ + ln -sf ../../../$POOLPATH/foo-19990101.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/0.0/foo/ooo/foo-19990101.tar.gz + ln -sf ../../../$POOLPATH/foo-20000101.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/1.0/foo/ooo/foo-20000101.tar.gz + ln -sf ../../../$POOLPATH/foo-20010101.tar.gz "$TEMP_PKG_DIR"/$REPOPATH/2.0/foo/ooo/foo-20010101.tar.gz + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<a href="/0.0/foo/ooo/foo-19990101.tar.gz">Very old</a> <br/ > +<a href="/1.0/foo/ooo/foo-20000101.tar.gz">A bit OLD</a> <br /> +<a href="/2.0/foo/ooo/foo-20010101.tar.gz">Latest</a> <br /> +</body> +<html> +END +} + +siteXmlNonNative() { + siteNonNative + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<Key>/0.0/foo/ooo/foo-0.0.tar.gz</Key> <br/ > +<Key>/1.0/foo/ooo/foo-1.0.tar.gz</Key> <br /> +<Key>/2.0/foo/ooo/foo-2.0.tar.gz</Key> <br /> +</body> +<html> +END +} + +siteWebNonNativeMUT() { + siteNonNative foo + siteNonNative bar EXTRA + siteNonNative baz EXTRA + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<a href="/0.0/foo/ooo/foo-0.0.tar.gz">Very old</a> <br/ > +<a href="/1.0/foo/ooo/foo-1.0.tar.gz">A bit OLD</a> <br /> +<a href="/2.0/foo/ooo/foo-2.0.tar.gz">Latest</a> <br /> +<a href="/2.0/foo/ooo/foo-2.0.tar.gz.asc">Latest sig</a> <br /> +<a href="/0.0/bar/ooo/bar-0.0.tar.gz">Very old</a> <br/ > +<a href="/1.0/bar/ooo/bar-1.0.tar.gz">A bit OLD</a> <br /> +<a href="/2.0/bar/ooo/bar-2.0.tar.gz">Latest</a> <br /> +<a href="/3.0/bar/ooo/bar-3.0.tar.gz">OOPS Latest</a> <br /> +<a href="/3.0/bar/ooo/bar-3.0.tar.gz.asc">Latest sig</a> <br /> +<a href="/0.0/baz/ooo/baz-0.0.tar.gz">Very old</a> <br/ > +<a href="/1.0/baz/ooo/baz-1.0.tar.gz">A bit OLD</a> <br /> +<a href="/2.0/baz/ooo/baz-2.0.tar.gz">Latest</a> <br /> +<a href="/3.0/baz/ooo/baz-3.0.tar.gz">OOPS Latest</a> <br /> +<a href="/3.0/baz/ooo/baz-3.0.tar.gz.asc">Latest sig</a> <br /> +</body> +<html> +END +} + +siteWebNonNativeGetOnlyHref() { + siteNonNative foo + cat <<END > "$TEMP_PKG_DIR"/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<a href="/0.0/foo/ooo/foo-0.0.tar.gz">Very old</a> <br/ > +<a href="/1.0/bar/ooo/foo-1.0.tar.gz">A bit OLD</a> <br /> +<a href="/2.0/foo/ooo/foo-2.0.tar.gz" data-foobar-href="">Latest</a> <br /> +<aueu href="/2.0/foo/ooo/foo-3.0.tar.gz" data-foobar-href="">Nothing here</a> <br /> +</body> +<html> +END +} + +# test a watch files + +### VERSION3 ### +# version locking calls suffer changes due to uupdate calling differences + +# test --download-current-version +testWatch3WebNonNativeDlCurrent() { + WATCHVER=3 + XCOMMAND="$COMMAND --download-current-version" + WATCHLINE='@@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate' + helperWatch siteWebNonNative 1.0 1.0 +} + +# test --download-version +testWatch3WebNonNativeDlUversion() { + WATCHVER=3 + XCOMMAND="$COMMAND --download-version 0.0" + WATCHLINE='@@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate' + helperWatch siteWebNonNative 1.0 0.0 +} + +# test --download-debversion uupdate +testWatch3WebNonNativeDlDversion() { + WATCHVER=3 + XCOMMAND="$COMMAND --download-debversion 0.0-1" + WATCHLINE='@@@url@@@/ (?:.*)/foo-([\.\d]+).tar.gz debian uupdate' + helperWatch siteWebNonNative 1.0 0.0 +} + +### VERSION 4 ### +# standard tests + +# test native package w/o uupdate, bare HTTP server in normal order +testWatch4Native() { + WATCHVER=4 + WATCHLINE='@@@url@@@/([\.\d]+)/(.+)/(.+)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian' + helperWatch siteNative +} + +# test non-native package with uupdate, bare HTTP server in normal order +testWatch4NonNative() { + WATCHVER=4 + WATCHLINE='@@@url@@@([\.\d]+)/(.+)/(.+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteNonNative +} + +# test non-native package with uupdate, bare HTTP server with dirversionmangle +testWatch4NonNativeDMangle() { + WATCHVER=4 + WATCHLINE='opts="dirversionmangle=s/^\d*[13579]\./0~$&/, uversionmangle=s/^\d*[13579]\./0~$&/" @@@url@@@([\.\d]+)/(.+)/(.+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch "siteNonNative foo EXTRA" +} + +# ... and without dirversionmangle, should return version 3 +testWatch4NonNativeDMangleWithoutD() { + WATCHVER=4 + WATCHLINE='@@@url@@@([\.\d]+)/(.+)/(.+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch "siteNonNative foo EXTRA" 1.0 3.0 +} + +# test non-native package with uupdate, bare HTTP server with dirversionmangle and base +testWatch4NonNativeDMangleB() { + WATCHVER=4 + WATCHLINE='opts="dirversionmangle=s/^\d*[13579]\./0~$&/, uversionmangle=s/^\d*[13579]\./0~$&/" @@@url@@@([\.\d]+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch "siteWebNonNativeRecWithBase foo EXTRA" +} + +# ... and without dirversionmangle, should return version 3 +testWatch4NonNativeDMangleBWithoutD() { + WATCHVER=4 + WATCHLINE='@@@url@@@([\.\d]+)/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch "siteWebNonNativeRecWithBase foo EXTRA" 1.0 3.0 +} + +# test 3 parameter watch line +testWatch4WebNative() { + WATCHVER=4 + WATCHLINE='@@@url@@@ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian' + helperWatch siteWebNative +} + +# test normal web page +testWatch4WebNonNative() { + WATCHVER=4 + helperWatch +} + +# test normal web page (Files-exclude) +testWatch4WebNonNativeFE() { + MGZREPACK=xz + FILEEXCLUDE=1 + WATCHVER=4 + helperWatch +} + +# test normal web page (file path reverse order) +testWatch4WebNonNativeR() { + WATCHVER=4 + helperWatch siteWebNonNativeR +} + +# test for downloadurlmangle and filenamemangle for tricky web page +testWatch4PrWebNonNative() { + WATCHVER=4 + WATCHLINE='opts="downloadurlmangle = s%boo/xxx%@PACKAGE@/ooo% ; s%boo-%@PACKAGE@-%, \ + filenamemangle = s%.*boo-(.*)%@PACKAGE@-$1% " \ + @@@url@@@/ (?:.*)/boo@ANY_VERSION@@ARCHIVE_EXT@ \ + debian uupdate' + helperWatch sitePrWebNonNative +} + +# test --download-current-version +testWatch4NonNativeDlCurrent() { + WATCHVER=4 + XCOMMAND="$COMMAND --download-current-version" + WATCHLINE='@@@url@@@/([\d\.]+)/@PACKAGE@/ooo/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteNonNative 1.0 1.0 +} + +# test --download-version +testWatch4NonNativeDlUversion() { + WATCHVER=4 + XCOMMAND="$COMMAND --download-version 0.0" + WATCHLINE='@@@url@@@/([\d\.]+)/@PACKAGE@/ooo/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteNonNative 1.0 0.0 +} + +# test --download-debversion uupdate +testWatch4NonNativeDlDversion() { + WATCHVER=4 + XCOMMAND="$COMMAND --download-debversion 0.0-1" + WATCHLINE='@@@url@@@/([\d\.]+)/@PACKAGE@/ooo/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteNonNative 1.0 0.0 +} + +# test --download-current-version +testWatch4WebNonNativeDlCurrent() { + WATCHVER=4 + XCOMMAND="$COMMAND --download-current-version" + WATCHLINE='@@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteWebNonNative 1.0 1.0 +} + +# test --download-version +testWatch4WebNonNativeDlUversion() { + WATCHVER=4 + XCOMMAND="$COMMAND --download-version 0.0" + WATCHLINE='@@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteWebNonNative 1.0 0.0 +} + +# test --download-debversion uupdate +testWatch4WebNonNativeDlDversion() { + WATCHVER=4 + XCOMMAND="$COMMAND --download-debversion 0.0-1" + WATCHLINE='@@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteWebNonNative 1.0 0.0 +} + +# Debian version is 0.19990101 for future proof while upstream is 19990101 +testWatch4WebNonNativeLarge() { + WATCHVER=4 + WATCHLINE='opts=" dversionmangle = s/0\.(.*)/$1/ , \ + oversionmangle = s/(.*)/0.$1/" \ + @@@url@@@ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteWebNonNativeLarge 20000101 20010101 0. +} + +# test for pagemangle +testWatch4XmlNonNative() { + WATCHVER=4 + WATCHLINE='opts="pagemangle = \ + s%<Key>([^<]*)</Key>%<Key><a href=\"$1\">$1</a></Key>%g" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteXmlNonNative +} + +# test user-agent string setting via opts= +testWatch4WebNonNativeUA() { + WATCHVER=4 + KEYMODE=BIN + USERAGENT="foo/bar; baz:12,3.45" + WATCHLINE='opts="useragent= '$USERAGENT' "'" \ +"'@@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatchUA + unset USERAGENT +} + +# test repack and compression +testWatch4WebNonNativeBZ2() { + WATCHVER=4 + WATCHLINE='opts=repack,compression=bz2 @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + GZREPACK=bz2 + MGZREPACK=bz2 + helperWatch + unset GZREPACK +} + +# test repack and compression +testWatch4WebNonNativeXZ() { + MGZREPACK=xz + WATCHVER=4 + WATCHLINE='opts=repack,compression=xz @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + GZREPACK=xz + helperWatch + unset GZREPACK +} + +# test spaces everywhere +testWatch4PrWebNonNativeXZ() { + MGZREPACK=xz + WATCHVER=4 + WATCHLINE='opts = "downloadurlmangle = s%boo/xxx%@PACKAGE@/ooo% ; s%boo-%@PACKAGE@-%, \ + filenamemangle = s%.*boo-(.*)%@PACKAGE@-$1% , \ + repack , compression=xz" \ + @@@url@@@/ (?:.*)/boo@ANY_VERSION@@ARCHIVE_EXT@ \ + debian uupdate' + GZREPACK=xz + helperWatch sitePrWebNonNative + unset GZREPACK +} + +# test get strictly href from links and not something like foo-href. See #904578 and MR !25 +testWatchGetOnlyHref() { + WATCHVER=4 + WATCHLINE='@@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch siteWebNonNativeGetOnlyHref 1.0 2.0 +} + +### VERSION 4 with sig check ### + +# test normal web page with sig(asc) +testWatch4WebNonNativeSig() { + WATCHVER=4 + WATCHLINE='opts = "pgpsigurlmangle = s%(.*)%$1.asc%" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch +} + +# test normal web page with sig(asc) with < and > +testWatch4WebNonNativeSigAngleBraket() { + WATCHVER=4 + WATCHLINE='opts = "pgpsigurlmangle = s<(.*)><$1.asc>" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch +} + +# test normal web page with sig(asc) with < and > with space +testWatch4WebNonNativeSigAngleBraketSpace() { + WATCHVER=4 + WATCHLINE='opts = "pgpsigurlmangle = s<(.*)> <$1.asc>" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch +} + +# test normal web page with sig(asc) with < and > with tab +testWatch4WebNonNativeSigAngleBraketTab() { + WATCHVER=4 + WATCHLINE='opts = "pgpsigurlmangle = s<(.*)> <$1.asc>" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch +} + +# test normal web page with sig(asc) with [ and ] +testWatch4WebNonNativeSigSquareBraket() { + WATCHVER=4 + WATCHLINE='opts = "pgpsigurlmangle = s[(.*)][$1.asc]" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch +} + +# test normal web page with sig(asc) with { and } +testWatch4WebNonNativeSigCurlyBraket() { + WATCHVER=4 + WATCHLINE='opts = "pgpsigurlmangle = s{(.*)}{$1.asc}" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch +} + +# test normal web page with sig(asc) - auto +testWatch4WebNonNativeSigAuto() { + WATCHVER=4 + WATCHLINE='opts = "pgpmode = auto" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate' + helperWatch +} + +# test normal web page with sig(bin) (Files-exclude) +testWatch4WebNonNativeFESig() { + MGZREPACK=xz + FILEEXCLUDE=1 + WATCHVER=4 + SIGMODE=BIN + KEYMODE=BIN + WATCHLINE='opts = "pgpsigurlmangle = s%(.*)%$1.sig%" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ \ + debian uupdate' + helperWatch +} + +# test normal web page with sig (different file path for sig and tar; reverse order) +testWatch4WebNonNativeRSig() { + WATCHVER=4 + WATCHLINE='opts = "pgpmode=next" @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian +opts = "pgpmode=previous" @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@.asc previous uupdate' + helperWatch siteWebNonNativeR +} + +# test normal web page with sig (different file path for sig and tar; reverse order, BIN) +testWatch4WebNonNativeRSigBIN() { + WATCHVER=4 + SIGMODE=BIN + WATCHLINE='opts = "pgpmode=next" @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian +opts = "pgpmode=previous" @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@.sig previous uupdate' + helperWatch siteWebNonNativeR +} + +# test normal web page with sig (different file path for sig and tar; reverse order, BIN BIN) +testWatch4WebNonNativeRSigBINiBIN() { + WATCHVER=4 + SIGMODE=BIN + KEYMODE=BIN + WATCHLINE='opts = "pgpmode=next" @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian +opts = "pgpmode=previous" @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@.sig previous uupdate' + helperWatch siteWebNonNativeR +} + +# test normal web page with sig (self) +testWatch4WebNonNativeSelfSig() { + WATCHVER=4 + SIGMODE=SELF + WATCHLINE='opts = "pgpmode = self" \ + @@@url@@@/ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@.gpg debian uupdate' + helperWatch siteWebNonNativeR +} + +### VERSION 4 only ### + +# test normal web page (MUT) +testWatch4WebNonNativeMUT() { + MGZREPACK=xz + WATCHVER=4 + COMPONENTS="bar baz" + SIGMODE=BIN + FILEEXCLUDE=2 + WATCHLINE=' +opts=" pgpsigurlmangle=s/$/.sig/" @@@url@@@ (?:.*)/@PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian +opts="component=bar,pgpsigurlmangle=s/$/.sig/" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ same +opts="component=baz,pgpsigurlmangle=s/$/.sig/" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ same uupdate' + helperWatch siteWebNonNativeMUT +} + +# test normal web page (MUT with O main) +testWatch4WebNonNativeMUT0() { + WATCHVER=4 + COMPONENTS="foo bar baz" + FILEEXCLUDE=3 + WATCHLINE=' +opts="component=foo,pgpsigurlmangle=s/$/.asc/" @@@url@@@ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@ debian +opts="component=bar,pgpsigurlmangle=s/$/.asc/" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ same +opts="component=baz,pgpsigurlmangle=s/$/.asc/" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ same uupdate' + helperWatch siteWebNonNativeMUT +} + +# Group test without signatures +testWatch4WebNonNativeGroup() { + WATCHVER=4 + COMPONENTS="bar baz" + FILEEXCLUDE=3 + UVERSION=2.0 + CMPVERSION=3.0 + GZREPACK=gz + WATCHLINE=' +opts="pgpmode=none" @@@url@@@ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=bar,pgpmode=none" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=baz,pgpmode=none" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ group' + helperWatch siteWebNonNativeMUT 1.0 2.0+~3.0+~3.0 +} + +# Group test with repack suffix +testWatch4WebNonNativeGroupRepackSuffix() { + WATCHVER=4 + COMPONENTS="bar baz" + FILEEXCLUDE=3 + UVERSION=2.0 + CMPVERSION=3.0 + GZREPACK=gz + WATCHLINE=' +opts="pgpmode=none" @@@url@@@ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=bar,repacksuffix=+ds,pgpmode=none" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=baz,pgpmode=none" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ group' + helperWatch siteWebNonNativeMUT 1.0 2.0+~3.0+ds+~3.0 +} + +# Group test with pgpsigurlmangle +testWatch4WebNonNativeGroupSigned() { + WATCHVER=4 + COMPONENTS="bar baz" + FILEEXCLUDE=3 + UVERSION=2.0 + CMPVERSION=3.0 + GZREPACK=gz + WATCHLINE=' +opts="pgpsigurlmangle=s/$/.asc/" @@@url@@@ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=bar,pgpsigurlmangle=s/$/.asc/" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=baz,pgpsigurlmangle=s/$/.asc/" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ group' + helperWatch siteWebNonNativeMUT 1.0 2.0+~3.0+~3.0 +} + +# Group test with pgpmode next/previous +testWatch4WebNonNativeGroupSignedNext() { + WATCHVER=4 + COMPONENTS="bar baz" + FILEEXCLUDE=3 + UVERSION=2.0 + CMPVERSION=3.0 + GZREPACK=gz + SIGMODE=ASC + WATCHLINE=' +opts="pgpmode=next" @@@url@@@ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@ group +opts="pgpmode=previous" @@@url@@@/ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@.asc previous +opts="component=bar,pgpmode=next" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=bar,pgpmode=previous" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@.asc previous +opts="component=baz,pgpmode=next" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=baz,pgpmode=previous" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@.asc previous' + helperWatch siteWebNonNativeMUT 1.0 2.0+~3.0+~3.0 +} + +testWatch4WebNonNativeGroupWithCompression() { + WATCHVER=4 + COMPONENTS="bar baz" + FILEEXCLUDE=3 + UVERSION=2.0 + CMPVERSION=3.0 + GZREPACK=gz + WATCHLINE=' +opts="pgpmode=none" @@@url@@@ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=bar,compression=xz,repack,pgpmode=none" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=baz,repack,pgpmode=none" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ group' + helperWatch siteWebNonNativeMUT 1.0 2.0+~3.0+~3.0 +} + +testWatch4WebNonNativeGroupWithChecksum1() { + WATCHVER=4 + COMPONENTS="bar baz" + FILEEXCLUDE=3 + UVERSION=2.0 + CMPVERSION=3.0 + GZREPACK=gz + WATCHLINE=' +opts="pgpmode=none" @@@url@@@ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=bar,compression=xz,repack,pgpmode=none" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=baz,repack,pgpmode=none" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ checksum' + helperWatch siteWebNonNativeMUT 1.0 2.0+~3.0+~cs3.0 +} + +testWatch4WebNonNativeGroupWithChecksum2() { + WATCHVER=4 + COMPONENTS="bar baz" + FILEEXCLUDE=3 + UVERSION=2.0 + CMPVERSION=3.0 + GZREPACK=gz + WATCHLINE=' +opts="pgpmode=none" @@@url@@@ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=bar,compression=xz,repack,pgpmode=none" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ checksum +opts="component=baz,repack,pgpmode=none" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ checksum' + helperWatch siteWebNonNativeMUT 1.0 2.0+~cs6.0 +} + +testWatch4WebNonNativeGroupWithChecksumAndIgnore() { + WATCHVER=4 + COMPONENTS="bar baz" + FILEEXCLUDE=3 + UVERSION=2.0 + CMPVERSION=3.0 + GZREPACK=gz + WATCHLINE=' +opts="pgpmode=none" @@@url@@@ (?:.*)/foo@ANY_VERSION@@ARCHIVE_EXT@ group +opts="component=bar,compression=xz,repack,pgpmode=none" @@@url@@@ (?:.*)/bar@ANY_VERSION@@ARCHIVE_EXT@ checksum +opts="component=baz,repack,pgpmode=none" @@@url@@@ (?:.*)/baz@ANY_VERSION@@ARCHIVE_EXT@ ignore' + helperWatch siteWebNonNativeMUT 1.0 2.0+~cs3.0 +} + +. shunit2 |