summaryrefslogtreecommitdiff
path: root/test/integration/framework
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/framework')
-rw-r--r--test/integration/framework95
1 files changed, 71 insertions, 24 deletions
diff --git a/test/integration/framework b/test/integration/framework
index 2422f0886..4bbe1b408 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -78,6 +78,15 @@ aptkey() { runapt apt-key $*; }
dpkg() {
$(which dpkg) --root=${TMPWORKINGDIRECTORY}/rootdir --force-not-root --force-bad-path --log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log $*
}
+aptitude() {
+ if [ -f ./aptconfig.conf ]; then
+ APT_CONFIG=aptconfig.conf LD_LIBRARY_PATH=${BUILDDIRECTORY} $(which aptitude) $*
+ elif [ -f ../aptconfig.conf ]; then
+ APT_CONFIG=../aptconfig.conf LD_LIBRARY_PATH=${BUILDDIRECTORY} $(which aptitude) $*
+ else
+ LD_LIBRARY_PATH=${BUILDDIRECTORY} $(which aptitude) $*
+ fi
+}
setupenvironment() {
TMPWORKINGDIRECTORY=$(mktemp -d)
@@ -107,8 +116,10 @@ setupenvironment() {
local PACKAGESFILE=$(echo "$(basename $0)" | sed -e 's/^test-/Packages-/' -e 's/^skip-/Packages-/')
if [ -f "${TESTDIR}/${PACKAGESFILE}" ]; then
cp "${TESTDIR}/${PACKAGESFILE}" aptarchive/Packages
- else
- touch aptarchive/Packages
+ fi
+ local SOURCESSFILE=$(echo "$(basename $0)" | sed -e 's/^test-/Sources-/' -e 's/^skip-/Sources-/')
+ if [ -f "${TESTDIR}/${SOURCESSFILE}" ]; then
+ cp "${TESTDIR}/${SOURCESSFILE}" aptarchive/Sources
fi
cp $(find $TESTDIR -name '*.pub' -o -name '*.sec') keys/
ln -s ${TMPWORKINGDIRECTORY}/keys/joesixpack.pub rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg
@@ -116,12 +127,14 @@ setupenvironment() {
echo "Dir::state::status \"${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status\";" >> aptconfig.conf
echo "Debug::NoLocking \"true\";" >> aptconfig.conf
echo "APT::Get::Show-User-Simulation-Note \"false\";" >> aptconfig.conf
+ echo "Dir::Bin::Methods \"${BUILDDIRECTORY}/methods\";" >> 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
+ echo 'quiet::NoUpdate "true";' >> aptconfig.conf
export LC_ALL=C
msgdone "info"
}
@@ -307,6 +320,38 @@ buildaptftparchivedirectorystructure() {
done
}
+insertpackage() {
+ local RELEASE="$1"
+ local NAME="$2"
+ local ARCH="$3"
+ local VERSION="$4"
+ local DEPENDENCIES="$5"
+ local ARCHS="$ARCH"
+ if [ "$ARCHS" = "all" ]; then
+ ARCHS="$(aptconfig dump | grep APT::Architecture | cut -d'"' -f 2 | sed '/^$/ d' | sort | uniq | tr '\n' ' ')"
+ fi
+ for BUILDARCH in $ARCHS; do
+ local PPATH="aptarchive/dists/${RELEASE}/main/binary-${BUILDARCH}"
+ mkdir -p $PPATH aptarchive/dists/${RELEASE}/main/source
+ touch aptarchive/dists/${RELEASE}/main/source/Sources
+ local FILE="${PPATH}/Packages"
+ echo "Package: $NAME
+Priority: optional
+Section: other
+Installed-Size: 42
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: $ARCH
+Version: $VERSION
+Filename: pool/main/${NAME}/${NAME}_${VERSION}_${ARCH}.deb" >> $FILE
+ test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> $FILE
+ 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…
+" >> $FILE
+ done
+}
+
buildaptarchivefromincoming() {
msginfo "Build APT archive for ${CCMD}$(basename $0)${CINFO} based on incoming packages…"
cd aptarchive
@@ -315,36 +360,38 @@ buildaptarchivefromincoming() {
[ -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 -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"
+ generatereleasefiles
}
buildaptarchivefromfiles() {
msginfo "Build APT archive for ${CCMD}$(basename $0)${CINFO} based on prebuild files…"
- cd aptarchive
- if [ -f Packages ]; then
- msgninfo "\tPackages file… "
- cat Packages | gzip > Packages.gz
- cat Packages | bzip2 > Packages.bz2
- cat Packages | lzma > Packages.lzma
- msgdone "info"
- fi
- if [ -f Sources ]; then
- msgninfo "\tSources file… "
- cat Sources | gzip > Sources.gz
- cat Sources | bzip2 > Sources.bz2
- cat Sources | lzma > Sources.lzma
+ find aptarchive -name 'Packages' -o -name 'Sources' | while read line; do
+ msgninfo "\t${line} file… "
+ cat ${line} | gzip > ${line}.gz
+ cat ${line} | bzip2 > ${line}.bz2
+ cat ${line} | lzma > ${line}.lzma
msgdone "info"
+ done
+ generatereleasefiles
+}
+
+generatereleasefiles() {
+ msgninfo "\tGenerate Release files… "
+ if [ -e aptarchive/dists ]; then
+ for dir in $(find ./aptarchive/dists -mindepth 1 -maxdepth 1 -type d); do
+ local CODENAME="$(echo "$dir" | cut -d'/' -f 4)"
+ aptftparchive -qq release $dir -o APT::FTPArchive::Release::Suite="${CODENAME}" -o APT::FTPArchive::Release::Codename="${CODENAME}" | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference
+ if [ "$CODENAME" = "experimental" -o "$CODENAME" = "experimental2" ]; then
+ sed -i '/^Date: / a\
+NotAutomatic: yes' $dir/Release
+ fi
+ done
+ else
+ aptftparchive -qq release ./aptarchive | sed -e '/0 Release$/ d' > aptarchive/Release # remove the self reference
fi
- msgninfo "\tRelease file… "
- aptftparchive -qq release . | sed -e '/0 Release$/ d' > Release # remove the self reference
msgdone "info"
- cd ..
}
setupdistsaptarchive() {
@@ -411,7 +458,7 @@ signreleasefiles() {
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"
+ CURRENTTRAP="kill $!; $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