This is an automated email from the git hooks/post-receive script. osamu pushed a commit to branch master in repository devscripts.
commit e1d964f990a776aa6306b60e02ad275da0e61377 Author: Osamu Aoki <[email protected]> Date: Thu Aug 27 22:35:38 2015 +0900 test_uscan_mangle: check mangle rules test for all the mangling rules and directory scanning (split from test_uscan for the ease of debugging) --- test/Makefile | 2 + test/test_uscan_mangle | 397 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 399 insertions(+) diff --git a/test/Makefile b/test/Makefile index 0ff65cb..202b6a6 100644 --- a/test/Makefile +++ b/test/Makefile @@ -6,6 +6,7 @@ test: ./test_debdiff ./test_licensecheck ./test_uscan + ./test_uscan_mangle ./test_mk-origtargz test-installed: @@ -16,6 +17,7 @@ test-installed: ./test_debdiff --installed ./test_licensecheck --installed ./test_uscan --installed + ./test_uscan_mangle --installed ./test_mk-origtargz --installed online-test: diff --git a/test/test_uscan_mangle b/test/test_uscan_mangle new file mode 100755 index 0000000..90d5ec3 --- /dev/null +++ b/test/test_uscan_mangle @@ -0,0 +1,397 @@ +#!/bin/sh + +# Copyright (C) 2013, Rafael Laboissiere <[email protected]> +# +# 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. + +test_dir=$(readlink -f "${0%/*}") + +# Operation mode +if test "$1" = --installed; then + COMMAND="uscan --no-conf --compression=xz" + shift +else + top_srcdir=$(readlink -f "${0%/*}/..") + make -C "$top_srcdir/scripts" uscan mk-origtargz uupdate + PATH="$top_srcdir/scripts:$PATH" + PERL5LIB="$top_srcdir/lib" + export PERL5LIB + COMMAND="uscan --no-conf --compression=xz" +fi + +REPOPATH=repo +POOLPATH=pool + +# Initial Debian revision value is distribution dependent +SUFFIX="1" +if which dpkg-vendor >/dev/null 2>&1; then + case "$(dpkg-vendor --query Vendor 2>/dev/null)" in + "Ubuntu") + SUFFIX="0ubuntu1" + ;; + esac +fi + +# set safe defaults +WEBSCRIPT=":" +DEBUGECHO=":" +DEBUGLSLR=":" +# comment out for debug +#COMMAND="$COMMAND --debug" +#DEBUGECHO=echo +#DEBUGLSLR="ls -laR" + +cleanup(){ + kill -9 $(cat $TMPDIR/$REPOPATH/pid) + rm -rf $TMPDIR + $DEBUGECHO " ***** ================================================ *****" +} + +spawnHttpServer(){ + ( + mkdir -p $TMPDIR/$REPOPATH + cd $TMPDIR/$REPOPATH + python "$test_dir/uscan/server.py" & + echo $! > pid + while ! [ -s port ]; do + : + 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 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 # Debian source package name + DEBVER=$2 # 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 <[email protected]> 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@@@,http://localhost:${PORT}/,g" - \ + >> debian/watch +} + +# make tarball in $REPOPATH/$POOLPATH +makeUpstreamTar() { + UPNAME=$1 # Upstream package name + UPVER=$2 # 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 + if [ "$TYPE" = "native" ]; then + cd $TMPDIR/$REPOPATH/$POOLPATH/$UPNAME-$UPVER + makeDebianDir $UPNAME $UPVER + cd $TMPDIR/$REPOPATH/$POOLPATH + fi + case $COMPRESSION in + gz|gzip) tar -czf $UPNAME-$UPVER.tar.gz $UPNAME-$UPVER + ;; + bz2|bzip2) tar --bzip2 -cf $UPNAME-$UPVER.tar.bz2 $UPNAME-$UPVER + ;; + xz) tar --xz -cf $UPNAME-$UPVER.tar.xz $UPNAME-$UPVER + ;; + zip)zip -r $UPNAME-$UPVER.zip $UPNAME-$UPVER + ;; + *) echo "Wrong compression mode: $COMPRESSION" + exit 1 + ;; + esac + cd $OLDDIR +} + +# setup a common watch file test environment +helperWatch() { + 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 + cd $TMPDIR/${PKG}-${PREFIX}${VEROLD} + 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.gz + 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() { + 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 +} + +sitePoolNonNative() { + 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 +} + +# hide siteNative behind a web page +siteWebNative() { + sitePoolNative + 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 /> +</body> +<html> +END +} + +siteWebNonNative() { + sitePoolNonNative + 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 /> +</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 + 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 + 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 /> +</body> +<html> +END +} + +sitePrWebNonNative() { + sitePoolNonNative + cat <<END > $TMPDIR/$REPOPATH/index.html +<html> +<head> + <meta charset="utf-8"> +</head> +<body> +<a href="/123/boo/xxx/boo-0.0.tar.gz">Very old</a> <br/ > +<a href="/124/boo/xxx/boo-1.0.tar.gz">A bit OLD</a> <br /> +<a href="/125/boo/xxx/boo-2.0.tar.gz">Latest</a> <br /> +</body> +<html> +END +} + +siteWebNonNativeLarge() { + makeUpstreamTar $PKG 19990101 gz non-native + makeUpstreamTar $PKG 20000101 gz non-native + makeUpstreamTar $PKG 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 + 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 /> +</body> +<html> +END +} + +siteXmlNonNative() { + sitePoolNonNative + 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 /> +</body> +<html> +END +} + +# test a watch files + +testWatch3Native() { + PKG=foo + WATCHVER="3" + WATCHLINE='@@@url@@@/(\d+)/(.+)/(.+)/'$PKG'-([\.\d]+).tar.gz debian' + helperWatch sitePoolNative 1.0 2.0 +} + +testWatch3NonNative() { + PKG=foo + WATCHVER="3" + WATCHLINE='@@@url@@@(\d+)/(.+)/(.+)/ '$PKG'-([\.\d]+).tar.gz debian uupdate' + helperWatch sitePoolNonNative 1.0 2.0 +} + +testWatch3WebNative() { + PKG=foo + WATCHVER="3" + WATCHLINE='@@@url@@@ (?:.*)/'$PKG'-([\d\.]+).tar.gz debian' + helperWatch siteWebNative 1.0 2.0 +} + +testWatch3WebNonNative() { + PKG=foo + WATCHVER="3" + WATCHLINE='@@@url@@@/ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate' + helperWatch siteWebNonNative 1.0 2.0 +} + +testWatch3WebNonNativeR() { + PKG=foo + WATCHVER="3" + WATCHLINE='@@@url@@@/ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate' + helperWatch siteWebNonNativeR 1.0 2.0 +} + +testWatch3PrWebNonNative() { + PKG=foo + WATCHVER="3" + 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 +} + +## Debian version is 0.19990101 for future proof while upstream is 19990101 +#testWatch3WebNonNativeLarge() { +# PKG=foo +# WATCHVER="3" +# WATCHLINE='opts=" dversionmangle = s/0\.(.*)/$1/ , oversionmangle = s/(.*)/0.$1/" @@@url@@@ (?:.*)/'$PKG'-([\.\d]+).tar.gz debian uupdate' +# helperWatch siteWebNonNativeLarge 20000101 20010101 0. +#} +# +## test for pagemangle +#testWatch3XmlNonNative() { +# PKG=foo +# WATCHVER="3" +# 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 +#} +# +. shunit2 -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git _______________________________________________ devscripts-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel
