From 7d0627b62aa24b970f18d52be8576c314556b680 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 14 Aug 2010 00:25:57 +0200 Subject: add a small script to automate the task of creating Packages and status files for tests with "real" problems --- test/integration/framework | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index b4e9302e8..f01bb989b 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -36,7 +36,11 @@ msgdone() { if [ "$1" = "debug" -o "$1" = "info" ]; then true; else echo "${CDON runapt() { msgdebug "Executing: ${CCMD}$*${CDEBUG} " - APT_CONFIG=aptconfig.conf LD_LIBRARY_PATH=${BUILDDIRECTORY} ${BUILDDIRECTORY}/$* + if [ -f ./aptconfig.conf ]; then + APT_CONFIG=aptconfig.conf LD_LIBRARY_PATH=${BUILDDIRECTORY} ${BUILDDIRECTORY}/$* + else + LD_LIBRARY_PATH=${BUILDDIRECTORY} ${BUILDDIRECTORY}/$* + fi } aptconfig() { runapt apt-config $*; } aptcache() { runapt apt-cache $*; } -- cgit v1.2.3 From 4bec02c237e8e218bc7d4bcf7142e0450480138b Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 14 Aug 2010 01:18:11 +0200 Subject: fix testcase framework to test correctly for virtual packages --- test/integration/framework | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index f01bb989b..5e6c5427f 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -73,7 +73,7 @@ setupenvironment() { if [ -f "${TESTDIR}/${PACKAGESFILE}" ]; then cp "${TESTDIR}/${PACKAGESFILE}" aptarchive/Packages else - touch var/lib/dpkg/status + touch aptarchive/Packages fi echo "RootDir \"${TMPWORKINGDIRECTORY}/rootdir\";" > aptconfig.conf echo "Debug::NoLocking \"true\";" >> aptconfig.conf @@ -172,18 +172,18 @@ testequalor2() { } testshowvirtual() { - local VIRTUAL="E: Can't select versions from package '$1' as it purely virtual" + local VIRTUAL="N: Can't select versions from package '$1' as it purely virtual" local PACKAGE="$1" shift while [ -n "$1" ]; do VIRTUAL="${VIRTUAL} -E: Can't select versions from package '$1' as it purely virtual" +N: Can't select versions from package '$1' as it purely virtual" PACKAGE="${PACKAGE} $1" shift done msgtest "Test for virtual packages" "apt-cache show $PACKAGE" VIRTUAL="${VIRTUAL} -E: No packages found" +N: No packages found" local COMPAREFILE=$(mktemp) local ARCH=$(dpkg-architecture -qDEB_HOST_ARCH_CPU) eval `apt-config shell ARCH APT::Architecture` -- cgit v1.2.3 From ce9864a8bfdfc7f5380b3335a6a14f305d372d45 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 18 Aug 2010 12:56:57 +0200 Subject: implement the first round of automated dummy package building and archive building --- test/integration/framework | 129 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 122 insertions(+), 7 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index 5e6c5427f..e3d77c5cd 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -92,10 +92,124 @@ configarchitecture() { done } -buildflataptarchive() { - msginfo "Build APT archive for ${CCMD}$0${CINFO}…" +buildsimplenativepackage() { + local NAME="$1" + local ARCH="$2" + local VERSION="$3" + local RELEASE="${4:-unstable}" + local DEPENDENCIES="$5" + local DESCRIPTION="$6" + msgndebug "Build package ${CCMD}${NAME}=${VERSION}/${RELEASE}${CDEBUG}… " + local BUILDDIR=incoming/${NAME}-${VERSION} + mkdir -p ${BUILDDIR}/debian/source + cd ${BUILDDIR} + echo "* most suckless software product ever" > FEATURES + test -e debian/copyright || (echo "Copyleft by Joe Sixpack $(date +%Y)" > debian/copyright) + test -e debian/changelog || (echo "$NAME ($VERSION) $RELEASE; urgency=low + + * Initial release + + -- Joe Sixpack $(date -R)" > debian/changelog) + test -e debian/control || (echo "Source: $NAME +Section: admin +Priority: optional +Maintainer: Joe Sixpack +Build-Depends: debhelper (>= 7) +Standards-Version: 3.9.1 + +Package: $NAME +Architecture: $ARCH" > debian/control) + test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> debian/control + if [ -z "$DESCRIPTION" ]; then + echo "Description: an autogenerated dummy ${NAME}=${VERSION}/${RELEASE} + If you find such a package installed on your system, + YOU did something horribly wrong! They are autogenerated + und used only by testcases for APT and surf no other propose…" >> debian/control + else + echo "Description: $DESCRIPTION" >> debian/control + fi + test -e debian/compat || (echo "7" > debian/compat) + test -e debian/source/format || (echo "3.0 (native)" > debian/source/format) + test -e debian/rules || cp /usr/share/doc/debhelper/examples/rules.tiny debian/rules + dpkg-buildpackage -uc -us -a$ARCH > /dev/null 2> /dev/null + cd - > /dev/null + rm -rf $BUILDDIR + msgdone "debug" +} + +buildaptarchive() { + msgninfo "Build APT archive for ${CCMD}$0${CINFO} based on " + if [ -d incoming ]; then + buildaptarchivefromincoming $* + else + buildaptarchivefromfiles $* + fi +} + +createaptftparchiveconfig() { + local ARCHS="$(find pool/ -name '*.deb' | grep -oE '_[a-z0-9-]+\.deb$' | sort | uniq | sed -e '/^_all.deb$/ d' -e 's#^_\([a-z0-9-]*\)\.deb$#\1#' | tr '\n' ' ')" + echo -n 'Dir { + ArchiveDir "' >> ftparchive.conf + echo -n $(readlink -f .) >> ftparchive.conf + echo -n '"; + CacheDir "' >> ftparchive.conf + echo -n $(readlink -f ..) >> ftparchive.conf + echo -n '"; +}; +TreeDefault { + Directory "pool/"; + SrcDirectory "pool/"; +}; +APT { + FTPArchive { + Release { + Origin "joesixpack"; + Label "apttestcases"; + Suite "unstable"; + Description "repository with dummy packages"; + Architectures "' >> ftparchive.conf + echo -n "$ARCHS" >> ftparchive.conf + echo 'source"; + }; + }; +};' >> ftparchive.conf + if [ -z "$1" ]; then + echo -n 'tree "dists/unstable" { + Architectures "' >> ftparchive.conf + echo -n "$ARCHS" >> ftparchive.conf + echo 'source"; + Sections "main"; +};' >> ftparchive.conf + fi +} + +buildaptftparchivedirectorystructure() { + local ARCHS="$(find pool/ -name '*.deb' | grep -oE '_[a-z0-9-]+\.deb$' | sort | uniq | sed -e '/^_all.deb$/ d' -e 's#^_\([a-z0-9-]*\)\.deb$#\1#')" + for arch in $ARCHS; do + mkdir -p dists/unstable/main/binary-${arch} + done + mkdir -p dists/unstable/main/source + mkdir -p dists/unstable/main/i18n +} + +buildaptarchivefromincoming() { + msginfo "incoming packages…" + cd aptarchive + [ -e pool ] || ln -s ../incoming pool + [ -e ftparchive.conf ] || createaptftparchiveconfig + [ -e dists ] || buildaptftparchivedirectorystructure + aptftparchive -qq generate ftparchive.conf + for dir in $(find ./dists -mindepth 1 -maxdepth 1 -type d); do + aptftparchive -qq release $dir > $dir/Release + sed -i -e '/0 Release$/ d' $dir/Release # remove the self reference + done + cd - > /dev/null + msgdone "info" +} + +buildaptarchivefromfiles() { + msginfo "prebuild files…" cd aptarchive - APTARCHIVE=$(readlink -f .) if [ -f Packages ]; then msgninfo "\tPackages file… " cat Packages | gzip > Packages.gz @@ -110,13 +224,14 @@ buildflataptarchive() { cat Sources | lzma > Sources.lzma msgdone "info" fi + aptftparchive -qq release . > Release + sed -i -e '/0 Release$/ d' Release # remove the self reference cd .. - aptftparchive release . > Release } -setupflataptarchive() { - buildflataptarchive - APTARCHIVE=$(readlink -f ./aptarchive) +setupaptarchive() { + buildaptarchive + local APTARCHIVE=$(readlink -f ./aptarchive) if [ -f ${APTARCHIVE}/Packages ]; then msgninfo "\tadd deb sources.list line… " echo "deb file://$APTARCHIVE /" > rootdir/etc/apt/sources.list.d/apt-test-archive-deb.list -- cgit v1.2.3 From fc89263e0dc1eceb016d52f2007a458b2dc5afaf Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 18 Aug 2010 13:20:16 +0200 Subject: add proper MSGLEVEL handling by overriding methods dynamic --- test/integration/framework | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index e3d77c5cd..a4c857f17 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -28,11 +28,37 @@ msgskip() { echo "${CWARNING}SKIP${CNORMAL}" >&2; } msgfail() { echo "${CFAIL}FAIL${CNORMAL}" >&2; } # enable / disable Debugging -msginfo() { true; } -msgdebug() { true; } -msgninfo() { true; } -msgndebug() { true; } -msgdone() { if [ "$1" = "debug" -o "$1" = "info" ]; then true; else echo "${CDONE}DONE${CNORMAL}" >&2; fi } +MSGLEVEL=${MSGLEVEL:-3} +if [ $MSGLEVEL -le 0 ]; then + msgdie() { true; } +fi +if [ $MSGLEVEL -le 1 ]; then + msgwarn() { true; } + msgnwarn() { true; } +fi +if [ $MSGLEVEL -le 2 ]; then + msgmsg() { true; } + msgnmsg() { true; } +fi +if [ $MSGLEVEL -le 3 ]; then + msginfo() { true; } + msgninfo() { true; } +fi +if [ $MSGLEVEL -le 4 ]; then + msgdebug() { true; } + msgndebug() { true; } +fi +msgdone() { + if [ "$1" = "debug" -a $MSGLEVEL -le 4 ] || + [ "$1" = "info" -a $MSGLEVEL -le 3 ] || + [ "$1" = "msg" -a $MSGLEVEL -le 2 ] || + [ "$1" = "warn" -a $MSGLEVEL -le 1 ] || + [ "$1" = "die" -a $MSGLEVEL -le 0 ]; then + true; + else + echo "${CDONE}DONE${CNORMAL}" >&2; + fi +} runapt() { msgdebug "Executing: ${CCMD}$*${CDEBUG} " -- cgit v1.2.3 From b7899b004710a0050407d4c6cdfc792110dd03cd Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 18 Aug 2010 18:21:34 +0200 Subject: extend the magic which creates the test archive by using FileLists to ship the build packages in the correct distribution and section --- test/integration/framework | 119 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 91 insertions(+), 28 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index a4c857f17..66a0b5dc7 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -125,26 +125,33 @@ buildsimplenativepackage() { local RELEASE="${4:-unstable}" local DEPENDENCIES="$5" local DESCRIPTION="$6" + local SECTION="${7:-others}" + local DISTSECTION + if [ "$SECTION" = "$(echo "$SECTION" | cut -d'/' -f 2)" ]; then + DISTSECTION="main" + else + DISTSECTION="$(echo "$SECTION" | cut -d'/' -f 1)" + fi msgndebug "Build package ${CCMD}${NAME}=${VERSION}/${RELEASE}${CDEBUG}… " local BUILDDIR=incoming/${NAME}-${VERSION} mkdir -p ${BUILDDIR}/debian/source cd ${BUILDDIR} echo "* most suckless software product ever" > FEATURES - test -e debian/copyright || (echo "Copyleft by Joe Sixpack $(date +%Y)" > debian/copyright) - test -e debian/changelog || (echo "$NAME ($VERSION) $RELEASE; urgency=low + test -e debian/copyright || echo "Copyleft by Joe Sixpack $(date +%Y)" > debian/copyright + test -e debian/changelog || echo "$NAME ($VERSION) $RELEASE; urgency=low * Initial release - -- Joe Sixpack $(date -R)" > debian/changelog) - test -e debian/control || (echo "Source: $NAME -Section: admin + -- Joe Sixpack $(date -R)" > debian/changelog + test -e debian/control || echo "Source: $NAME +Section: $SECTION Priority: optional Maintainer: Joe Sixpack Build-Depends: debhelper (>= 7) Standards-Version: 3.9.1 Package: $NAME -Architecture: $ARCH" > debian/control) +Architecture: $ARCH" > debian/control test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> debian/control if [ -z "$DESCRIPTION" ]; then echo "Description: an autogenerated dummy ${NAME}=${VERSION}/${RELEASE} @@ -154,17 +161,24 @@ Architecture: $ARCH" > debian/control) else echo "Description: $DESCRIPTION" >> debian/control fi - test -e debian/compat || (echo "7" > debian/compat) - test -e debian/source/format || (echo "3.0 (native)" > debian/source/format) + test -e debian/compat || echo "7" > debian/compat + test -e debian/source/format || echo "3.0 (native)" > debian/source/format test -e debian/rules || cp /usr/share/doc/debhelper/examples/rules.tiny debian/rules - dpkg-buildpackage -uc -us -a$ARCH > /dev/null 2> /dev/null + local BUILT="$(dpkg-buildpackage -uc -us -a$ARCH 2> /dev/null)" + local PKGS="$( echo "$BUILT" | grep '^dpkg-deb: building package' | cut -d'/' -f 2 | sed -e "s#'\.##")" + local SRCS="$( echo "$BUILT" | grep '^dpkg-source: info: building' | grep -o '[a-z0-9._-]*$')" cd - > /dev/null + for PKG in $PKGS; do + echo "pool/${PKG}" >> ./incoming/${RELEASE}.${DISTSECTION}.pkglist + done + for SRC in $SRCS; do + echo "pool/${SRC}" >> ./incoming/${RELEASE}.${DISTSECTION}.srclist + done rm -rf $BUILDDIR msgdone "debug" } buildaptarchive() { - msgninfo "Build APT archive for ${CCMD}$0${CINFO} based on " if [ -d incoming ]; then buildaptarchivefromincoming $* else @@ -181,6 +195,14 @@ createaptftparchiveconfig() { CacheDir "' >> ftparchive.conf echo -n $(readlink -f ..) >> ftparchive.conf echo -n '"; + FileListDir "' >> ftparchive.conf + echo -n $(readlink -f pool/) >> ftparchive.conf + echo -n '"; +}; +Default { + Packages::Compress ". gzip bzip2 lzma"; + Sources::Compress ". gzip bzip2 lzma"; + Contents::Compress ". gzip bzip2 lzma"; }; TreeDefault { Directory "pool/"; @@ -199,42 +221,61 @@ APT { }; }; };' >> ftparchive.conf - if [ -z "$1" ]; then - echo -n 'tree "dists/unstable" { + for DIST in $(find ./pool/ -maxdepth 1 -name '*.pkglist' -type f | cut -d'/' -f 3 | cut -d'.' -f 1 | sort | uniq); do + echo -n 'tree "dists/' >> ftparchive.conf + echo -n "$DIST" >> ftparchive.conf + echo -n '" { Architectures "' >> ftparchive.conf echo -n "$ARCHS" >> ftparchive.conf - echo 'source"; - Sections "main"; + echo -n 'source"; + FileList "' >> ftparchive.conf + echo -n "${DIST}.\$(SECTION).pkglist" >> ftparchive.conf + echo -n '"; + SourceFileList "' >> ftparchive.conf + echo -n "${DIST}.\$(SECTION).srclist" >> ftparchive.conf + echo -n '"; + Sections "' >> ftparchive.conf + echo -n "$(find ./pool/ -maxdepth 1 -name "${DIST}.*.pkglist" -type f | cut -d'/' -f 3 | cut -d'.' -f 2 | sort | uniq | tr '\n' ' ')" >> ftparchive.conf + echo '"; };' >> ftparchive.conf - fi + done + less ftparchive.conf } buildaptftparchivedirectorystructure() { - local ARCHS="$(find pool/ -name '*.deb' | grep -oE '_[a-z0-9-]+\.deb$' | sort | uniq | sed -e '/^_all.deb$/ d' -e 's#^_\([a-z0-9-]*\)\.deb$#\1#')" - for arch in $ARCHS; do - mkdir -p dists/unstable/main/binary-${arch} + local DISTS="$(grep -i '^tree ' ftparchive.conf | cut -d'/' -f 2 | sed -e 's#".*##')" + for DIST in $DISTS; do + local SECTIONS="$(grep -i -A 5 "dists/$DIST" ftparchive.conf | grep -i 'Sections' | cut -d'"' -f 2)" + for SECTION in $SECTIONS; do + local ARCHS="$(grep -A 5 "dists/$DIST" ftparchive.conf | grep Architectures | cut -d'"' -f 2 | sed -e 's#source##')" + for ARCH in $ARCHS; do + mkdir -p dists/${DIST}/${SECTION}/binary-${ARCH} + done + mkdir -p dists/${DIST}/${SECTION}/source + mkdir -p dists/${DIST}/${SECTION}/i18n + done done - mkdir -p dists/unstable/main/source - mkdir -p dists/unstable/main/i18n } buildaptarchivefromincoming() { - msginfo "incoming packages…" + msginfo "Build APT archive for ${CCMD}$0${CINFO} based on incoming packages…" cd aptarchive [ -e pool ] || ln -s ../incoming pool [ -e ftparchive.conf ] || createaptftparchiveconfig [ -e dists ] || buildaptftparchivedirectorystructure + msgninfo "\tGenerate Packages, Sources and Contents files… " aptftparchive -qq generate ftparchive.conf + msgdone "info" + msgninfo "\tGenerate Release files… " for dir in $(find ./dists -mindepth 1 -maxdepth 1 -type d); do - aptftparchive -qq release $dir > $dir/Release - sed -i -e '/0 Release$/ d' $dir/Release # remove the self reference + aptftparchive -qq release $dir | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference done cd - > /dev/null msgdone "info" } buildaptarchivefromfiles() { - msginfo "prebuild files…" + msginfo "Build APT archive for ${CCMD}$0${CINFO} based on prebuild files…" cd aptarchive if [ -f Packages ]; then msgninfo "\tPackages file… " @@ -250,13 +291,26 @@ buildaptarchivefromfiles() { cat Sources | lzma > Sources.lzma msgdone "info" fi - aptftparchive -qq release . > Release - sed -i -e '/0 Release$/ d' Release # remove the self reference + msgninfo "\tRelease file… " + aptftparchive -qq release . | sed -e '/0 Release$/ d' > Release # remove the self reference + msgdone "info" cd .. } -setupaptarchive() { - buildaptarchive +setupdistsaptarchive() { + local APTARCHIVE=$(readlink -f ./aptarchive) + rm -f root/etc/apt/sources.list.d/apt-test-*-deb.list + rm -f root/etc/apt/sources.list.d/apt-test-*-deb-src.list + for DISTS in $(find ./aptarchive/dists/ -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 4); do + SECTIONS=$(find ./aptarchive/dists/${DISTS}/ -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 5 | tr '\n' ' ') + msgninfo "\tadd deb and deb-src sources.list lines for ${CCMD}${DISTS} ${SECTIONS}${CINFO}… " + echo "deb file://$APTARCHIVE $DISTS $SECTIONS" > rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb.list + echo "deb-src file://$APTARCHIVE $DISTS $SECTIONS" > rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb-src.list + msgdone "info" + done +} + +setupflataptarchive() { local APTARCHIVE=$(readlink -f ./aptarchive) if [ -f ${APTARCHIVE}/Packages ]; then msgninfo "\tadd deb sources.list line… " @@ -272,6 +326,15 @@ setupaptarchive() { else rm -f rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list fi +} + +setupaptarchive() { + buildaptarchive + if [ -e aptarchive/dists ]; then + setupdistsaptarchive + else + setupflataptarchive + fi aptget update -qq } -- cgit v1.2.3 From cffea9af1a8819e7caf6d8655318867660a05bec Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 18 Aug 2010 21:03:50 +0200 Subject: setup the environment correctly for dpkg, too --- test/integration/framework | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index 66a0b5dc7..e964235b0 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -84,14 +84,16 @@ setupenvironment() { cd $TMPWORKINGDIRECTORY mkdir rootdir aptarchive cd rootdir - mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d var/cache var/lib/dpkg - mkdir -p var/cache/apt/archives/partial var/lib/apt/lists/partial + mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d var/cache + mkdir -p var/log/apt var/lib/apt + mkdir -p var/lib/dpkg/info var/lib/dpkg/updates var/lib/dpkg/triggers local STATUSFILE=$(echo "$(basename $0)" | sed 's/^test-/status-/') if [ -f "${TESTDIR}/${STATUSFILE}" ]; then cp "${TESTDIR}/${STATUSFILE}" var/lib/dpkg/status else touch var/lib/dpkg/status fi + touch var/lib/apt/extended_states var/lib/dpkg/available mkdir -p usr/lib/apt ln -s ${BUILDDIRECTORY}/methods usr/lib/apt/methods cd .. @@ -101,9 +103,15 @@ setupenvironment() { else touch aptarchive/Packages fi - echo "RootDir \"${TMPWORKINGDIRECTORY}/rootdir\";" > aptconfig.conf + echo "Dir \"${TMPWORKINGDIRECTORY}/rootdir\";" > aptconfig.conf echo "Debug::NoLocking \"true\";" >> aptconfig.conf echo "APT::Get::Show-User-Simulation-Note \"false\";" >> aptconfig.conf + echo "Dir::Bin::dpkg \"fakeroot\";" >> aptconfig.conf + echo "DPKG::options:: \"dpkg\";" >> aptconfig.conf + echo "DPKG::options:: \"--root=${TMPWORKINGDIRECTORY}/rootdir\";" >> aptconfig.conf + echo "DPKG::options:: \"--force-not-root\";" >> aptconfig.conf + echo "DPKG::options:: \"--force-bad-path\";" >> aptconfig.conf + echo "DPKG::options:: \"--log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log\";" >> aptconfig.conf export LC_ALL=C msgdone "info" } @@ -132,7 +140,7 @@ buildsimplenativepackage() { else DISTSECTION="$(echo "$SECTION" | cut -d'/' -f 1)" fi - msgndebug "Build package ${CCMD}${NAME}=${VERSION}/${RELEASE}${CDEBUG}… " + msgninfo "Build package ${CCMD}${NAME}=${VERSION}/${RELEASE}${CINFO}… " local BUILDDIR=incoming/${NAME}-${VERSION} mkdir -p ${BUILDDIR}/debian/source cd ${BUILDDIR} @@ -175,7 +183,7 @@ Architecture: $ARCH" > debian/control echo "pool/${SRC}" >> ./incoming/${RELEASE}.${DISTSECTION}.srclist done rm -rf $BUILDDIR - msgdone "debug" + msgdone "info" } buildaptarchive() { @@ -239,7 +247,6 @@ APT { echo '"; };' >> ftparchive.conf done - less ftparchive.conf } buildaptftparchivedirectorystructure() { -- cgit v1.2.3 From cd725954f6df5b809fe8d90ee135e222d1cef30e Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 19 Aug 2010 00:32:56 +0200 Subject: sign the created Release files with our own dummy key "Joe Sixpack" --- test/integration/framework | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index e964235b0..01b795ba9 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -82,7 +82,7 @@ setupenvironment() { local OLDWORKINGDIRECTORY=$(pwd) trap "cd /; rm -rf $TMPWORKINGDIRECTORY; cd $OLDWORKINGDIRECTORY" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM cd $TMPWORKINGDIRECTORY - mkdir rootdir aptarchive + mkdir rootdir aptarchive keys cd rootdir mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d var/cache mkdir -p var/log/apt var/lib/apt @@ -93,7 +93,7 @@ setupenvironment() { else touch var/lib/dpkg/status fi - touch var/lib/apt/extended_states var/lib/dpkg/available + touch var/lib/dpkg/available mkdir -p usr/lib/apt ln -s ${BUILDDIRECTORY}/methods usr/lib/apt/methods cd .. @@ -103,6 +103,8 @@ setupenvironment() { else touch aptarchive/Packages fi + cp $(find $TESTDIR -name '*.pub' -o -name '*.sec') keys/ + ln -s ${TMPWORKINGDIRECTORY}/keys/joesixpack.pub rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg echo "Dir \"${TMPWORKINGDIRECTORY}/rootdir\";" > aptconfig.conf echo "Debug::NoLocking \"true\";" >> aptconfig.conf echo "APT::Get::Show-User-Simulation-Note \"false\";" >> aptconfig.conf @@ -275,7 +277,7 @@ buildaptarchivefromincoming() { msgdone "info" msgninfo "\tGenerate Release files… " for dir in $(find ./dists -mindepth 1 -maxdepth 1 -type d); do - aptftparchive -qq release $dir | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference + aptftparchive -qq release $dir -o APT::FTPArchive::Release::Codename="$(echo "$dir" | cut -d'/' -f 3)" | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference done cd - > /dev/null msgdone "info" @@ -342,7 +344,14 @@ setupaptarchive() { else setupflataptarchive fi + msgninfo "\tSign archive with Joe Sixpack key… " + for RELEASE in $(find aptarchive/ -name Release); do + gpg --no-default-keyring --secret-keyring ./keys/joesixpack.sec --keyring ./keys/joesixpack.pub --default-key Joe -abs -o ${RELEASE}.gpg ${RELEASE} + done + msgdone "info" + msgninfo "\tSync APT's cache with the archive… " aptget update -qq + msgdone "info" } diff() { -- cgit v1.2.3 From 75954ae2420ae7755d8482f2f1eecc03595a5153 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 20 Aug 2010 19:09:16 +0200 Subject: * apt-pkg/deb/dpkgpm.cc: - use the InstVer instead of the CurrentVer for the autobit transfer Add also a small testcase to check the handling automatical --- test/integration/framework | 54 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 7 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index 01b795ba9..82fca2046 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -74,13 +74,13 @@ aptget() { runapt apt-get $*; } aptftparchive() { runapt apt-ftparchive $*; } setupenvironment() { - local TMPWORKINGDIRECTORY=$(mktemp -d) + TMPWORKINGDIRECTORY=$(mktemp -d) local TESTDIR=$(readlink -f $(dirname $0)) msgninfo "Preparing environment for ${CCMD}$0${CINFO} in ${TMPWORKINGDIRECTORY}… " BUILDDIRECTORY="${TESTDIR}/../../build/bin" test -x "${BUILDDIRECTORY}/apt-get" || msgdie "You need to build tree first" local OLDWORKINGDIRECTORY=$(pwd) - trap "cd /; rm -rf $TMPWORKINGDIRECTORY; cd $OLDWORKINGDIRECTORY" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM +# trap "cd /; rm -rf $TMPWORKINGDIRECTORY; cd $OLDWORKINGDIRECTORY" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM cd $TMPWORKINGDIRECTORY mkdir rootdir aptarchive keys cd rootdir @@ -128,7 +128,7 @@ configarchitecture() { done } -buildsimplenativepackage() { +setupsimplenativepackage() { local NAME="$1" local ARCH="$2" local VERSION="$3" @@ -142,7 +142,6 @@ buildsimplenativepackage() { else DISTSECTION="$(echo "$SECTION" | cut -d'/' -f 1)" fi - msgninfo "Build package ${CCMD}${NAME}=${VERSION}/${RELEASE}${CINFO}… " local BUILDDIR=incoming/${NAME}-${VERSION} mkdir -p ${BUILDDIR}/debian/source cd ${BUILDDIR} @@ -174,17 +173,47 @@ Architecture: $ARCH" > debian/control test -e debian/compat || echo "7" > debian/compat test -e debian/source/format || echo "3.0 (native)" > debian/source/format test -e debian/rules || cp /usr/share/doc/debhelper/examples/rules.tiny debian/rules + cd - > /dev/null +} + +buildsimplenativepackage() { + local NAME="$1" + local ARCH="$2" + local VERSION="$3" + local RELEASE="${4:-unstable}" + local DEPENDENCIES="$5" + local DESCRIPTION="$6" + local SECTION="${7:-others}" + local DISTSECTION + if [ "$SECTION" = "$(echo "$SECTION" | cut -d'/' -f 2)" ]; then + DISTSECTION="main" + else + DISTSECTION="$(echo "$SECTION" | cut -d'/' -f 1)" + fi + setupsimplenativepackage "$NAME" "$ARCH" "$VERSION" "$RELEASE" "$DEPENDENCIES" "$DESCRIPTION" "$SECTION" + buildpackage "incoming/${NAME}-${VERSION}" "$RELEASE" "$DISTSECTION" + rm -rf "incoming/${NAME}-${VERSION}" +} + +buildpackage() { + local BUILDDIR=$1 + local RELEASE=$2 + local SECTION=$3 + msgninfo "Build package $(echo "$BUILDDIR" | grep -o '[^/]*$') for ${RELEASE} in ${SECTION}… " + cd $BUILDDIR + if [ "$ARCH" = "all" ]; then + ARCH="$(dpkg-architecture -qDEB_HOST_ARCH 2> /dev/null)" + fi local BUILT="$(dpkg-buildpackage -uc -us -a$ARCH 2> /dev/null)" local PKGS="$( echo "$BUILT" | grep '^dpkg-deb: building package' | cut -d'/' -f 2 | sed -e "s#'\.##")" local SRCS="$( echo "$BUILT" | grep '^dpkg-source: info: building' | grep -o '[a-z0-9._-]*$')" cd - > /dev/null for PKG in $PKGS; do - echo "pool/${PKG}" >> ./incoming/${RELEASE}.${DISTSECTION}.pkglist + echo "pool/${PKG}" >> ${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.pkglist done for SRC in $SRCS; do - echo "pool/${SRC}" >> ./incoming/${RELEASE}.${DISTSECTION}.srclist + echo "pool/${SRC}" >> ${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.srclist done - rm -rf $BUILDDIR msgdone "info" } @@ -365,6 +394,17 @@ diff() { fi } +testfileequal() { + local FILE="$1" + shift + msgtest "Test for correctness of file" "$FILE" + if [ -z "$*" ]; then + echo -n "" | diff $FILE - && msgpass || msgfail + else + echo "$*" | diff $FILE - && msgpass || msgfail + fi +} + testequal() { local COMPAREFILE=$(mktemp) echo "$1" > $COMPAREFILE -- cgit v1.2.3 From f213b6ea7397f2ba5b770e1a30e57dc8438bf61e Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 21 Aug 2010 22:19:56 +0200 Subject: * apt-pkg/acquire-item.cc: - don't use ReadOnlyGzip mode for PDiffs as this mode doesn't work in combination with the AddFd methods of our hashclasses Add also 2 testcases: one to test pdiffs in general and one to test the handling of compressed indexes. --- test/integration/framework | 58 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 15 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index 82fca2046..8efe47330 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -80,7 +80,8 @@ setupenvironment() { BUILDDIRECTORY="${TESTDIR}/../../build/bin" test -x "${BUILDDIRECTORY}/apt-get" || msgdie "You need to build tree first" local OLDWORKINGDIRECTORY=$(pwd) -# trap "cd /; rm -rf $TMPWORKINGDIRECTORY; cd $OLDWORKINGDIRECTORY" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM + CURRENTTRAP="cd /; rm -rf $TMPWORKINGDIRECTORY; cd $OLDWORKINGDIRECTORY" + trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM cd $TMPWORKINGDIRECTORY mkdir rootdir aptarchive keys cd rootdir @@ -373,17 +374,44 @@ setupaptarchive() { else setupflataptarchive fi - msgninfo "\tSign archive with Joe Sixpack key… " - for RELEASE in $(find aptarchive/ -name Release); do - gpg --no-default-keyring --secret-keyring ./keys/joesixpack.sec --keyring ./keys/joesixpack.pub --default-key Joe -abs -o ${RELEASE}.gpg ${RELEASE} - done - msgdone "info" + signreleasefiles msgninfo "\tSync APT's cache with the archive… " aptget update -qq msgdone "info" } -diff() { +signreleasefiles() { + local SIGNER="${1:-Joe Sixpack}" + msgninfo "\tSign archive with $SIGNER key… " + local SECKEYS="" + for KEY in $(find keys/ -name '*.sec'); do + SECKEYS="$SECKEYS --secret-keyring $KEY" + done + local PUBKEYS="" + for KEY in $(find keys/ -name '*.pub'); do + PUBKEYS="$PUBKEYS --keyring $KEY" + done + for RELEASE in $(find aptarchive/ -name Release); do + gpg --yes --no-default-keyring $SECKEYS $PUBKEYS --default-key "$SIGNER" -abs -o ${RELEASE}.gpg ${RELEASE} + done + msgdone "info" +} + +changetowebserver() { + if which weborf > /dev/null; then + weborf -xb aptarchive/ 2>&1 > /dev/null & + CURRENTTRAP="kill $(ps | grep weborf | sed -e 's#^[ ]*##' | cut -d' ' -f 1); $CURRENTTRAP" + trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM + local APTARCHIVE="file://$(readlink -f ./aptarchive)" + for LIST in $(find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list'); do + sed -i $LIST -e "s#$APTARCHIVE#http://localhost:8080/#" + done + return 0 + fi + return 1 +} + +checkdiff() { local DIFFTEXT="$($(which diff) -u $* | sed -e '/^---/ d' -e '/^+++/ d' -e '/^@@/ d')" if [ -n "$DIFFTEXT" ]; then echo @@ -399,9 +427,9 @@ testfileequal() { shift msgtest "Test for correctness of file" "$FILE" if [ -z "$*" ]; then - echo -n "" | diff $FILE - && msgpass || msgfail + echo -n "" | checkdiff $FILE - && msgpass || msgfail else - echo "$*" | diff $FILE - && msgpass || msgfail + echo "$*" | checkdiff $FILE - && msgpass || msgfail fi } @@ -410,7 +438,7 @@ testequal() { echo "$1" > $COMPAREFILE shift msgtest "Test for equality of" "$*" - $* 2>&1 | diff $COMPAREFILE - && msgpass || msgfail + $* 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail rm $COMPAREFILE } @@ -423,10 +451,10 @@ testequalor2() { shift 2 msgtest "Test for equality OR of" "$*" $* 2>&1 1> $COMPAREAGAINST - (diff $COMPAREFILE1 $COMPAREAGAINST 1> /dev/null || - diff $COMPAREFILE2 $COMPAREAGAINST 1> /dev/null) && msgpass || - ( echo "\n${CINFO}Diff against OR 1${CNORMAL}" "$(diff $COMPAREFILE1 $COMPAREAGAINST)" \ - "\n${CINFO}Diff against OR 2${CNORMAL}" "$(diff $COMPAREFILE2 $COMPAREAGAINST)" && + (checkdiff $COMPAREFILE1 $COMPAREAGAINST 1> /dev/null || + checkdiff $COMPAREFILE2 $COMPAREAGAINST 1> /dev/null) && msgpass || + ( echo "\n${CINFO}Diff against OR 1${CNORMAL}" "$(checkdiff $COMPAREFILE1 $COMPAREAGAINST)" \ + "\n${CINFO}Diff against OR 2${CNORMAL}" "$(checkdiff $COMPAREFILE2 $COMPAREAGAINST)" && msgfail ) rm $COMPAREFILE1 $COMPAREFILE2 $COMPAREAGAINST } @@ -448,7 +476,7 @@ N: No packages found" local ARCH=$(dpkg-architecture -qDEB_HOST_ARCH_CPU) eval `apt-config shell ARCH APT::Architecture` echo "$VIRTUAL" | sed -e "s/:$ARCH//" -e 's/:all//' > $COMPAREFILE - aptcache show $PACKAGE 2>&1 | diff $COMPAREFILE - && msgpass || msgfail + aptcache show $PACKAGE 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail rm $COMPAREFILE } -- cgit v1.2.3