We were already considering these cases, but the code was flawed, so
that packages changing architectures are incorrectly handled and hence
the wrong architecture is used to call dpkg with, so that dpkg says the
package isn't installed (which it isn't for the requested architecture).
Closes: 770898
{
pkgCache::VerIterator Ver;
for (Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
{
pkgCache::VerIterator Ver;
for (Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
- {
- pkgCache::VerFileIterator Vf = Ver.FileList();
- pkgCache::PkgFileIterator F = Vf.File();
- for (F = Vf.File(); F.end() == false; ++F)
- {
- if (F && F.Archive())
- {
- if (strcmp(F.Archive(), "now"))
- return Ver;
- }
- }
- }
+ for (pkgCache::VerFileIterator Vf = Ver.FileList(); Vf.end() == false; ++Vf)
+ for (pkgCache::PkgFileIterator F = Vf.File(); F.end() == false; ++F)
+ if (F->Archive != 0 && strcmp(F.Archive(), "now") == 0)
+ return Ver;
createaptftparchiveconfig() {
local COMPRESSORS="$(cut -d' ' -f 1 ${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf | tr '\n' ' ')"
createaptftparchiveconfig() {
local COMPRESSORS="$(cut -d' ' -f 1 ${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf | tr '\n' ' ')"
- COMPRESSORS="${COMPRESSORS%* }"
- 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' ' ')"
- if [ -z "$ARCHS" ]; then
- # the pool is empty, so we will operate on faked packages - let us use the configured archs
- ARCHS="$(getarchitectures)"
- fi
+ local COMPRESSORS="${COMPRESSORS%* }"
+ local ARCHS="$(getarchitectures)"
echo -n 'Dir {
ArchiveDir "' >> ftparchive.conf
echo -n $(readlink -f .) >> ftparchive.conf
echo -n 'Dir {
ArchiveDir "' >> ftparchive.conf
echo -n $(readlink -f .) >> ftparchive.conf
done
}
aptautotest_apt_update() { aptautotest_aptget_update "$@"; }
done
}
aptautotest_apt_update() { aptautotest_aptget_update "$@"; }
+
+testaptautotestnodpkgwarning() {
+ local TESTCALL="$1"
+ while [ -n "$2" ]; do
+ if [ "$2" = '-s' ]; then return; fi
+ shift
+ done
+ testfailure grep '^dpkg: warning:.*ignor.*' "${TMPWORKINGDIRECTORY}/rootdir/tmp-before/${TESTCALL}.output"
+}
+
+aptautotest_aptget_install() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_aptget_remove() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_aptget_purge() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_apt_install() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_apt_remove() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_apt_purge() { testaptautotestnodpkgwarning "$@"; }
TESTDIR=$(readlink -f $(dirname $0))
. $TESTDIR/framework
setupenvironment
TESTDIR=$(readlink -f $(dirname $0))
. $TESTDIR/framework
setupenvironment
-configarchitecture 'native'
-
-setupsimplenativepackage 'compiz-core' 'native' '1.0' 'unstable'
-BUILDDIR='incoming/compiz-core-1.0'
-mkdir -p ${BUILDDIR}/debian/compiz-core/etc
-echo 'foo=bar;' > ${BUILDDIR}/compiz.conf
-echo 'compiz.conf /etc/compiz.conf' >> ${BUILDDIR}/debian/install
-buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
-rm -rf "$BUILDDIR"
+configarchitecture 'amd64' 'i386'
+
+buildcompizpkg() {
+ setupsimplenativepackage "compiz-core-$1" "$2" "$3" "$4"
+ BUILDDIR="incoming/compiz-core-$1-$3"
+ mkdir -p ${BUILDDIR}/debian/compiz-core/etc
+ echo 'foo=bar;' > ${BUILDDIR}/compiz.conf
+ echo 'compiz.conf /etc/compiz.conf' >> ${BUILDDIR}/debian/install
+ buildpackage "$BUILDDIR" "$4" 'main' "$2"
+ rm -rf "$BUILDDIR"
+}
+buildcompizpkg 'native' 'all' '1.0' 'stable'
+buildcompizpkg 'all' 'native' '1.0' 'stable'
+buildcompizpkg 'native' 'native' '2.0' 'unstable'
+buildcompizpkg 'all' 'all' '2.0' 'unstable'
+runtests() {
+ testdpkgnotinstalled compiz-core-$1
+ testsuccess aptget install compiz-core-$1 -t "${2:-unstable}"
+ testdpkginstalled compiz-core-$1
-testdpkgnotinstalled compiz-core
-testsuccess aptget install compiz-core
-testdpkginstalled compiz-core
-
-testsuccess aptget remove compiz-core -y
-testdpkgnotinstalled compiz-core
-
-msgtest 'Check that conffiles are still around for' 'compiz-core'
-dpkg -l compiz-core | grep -q '^rc' && msgpass || msgfail
+ testsuccess aptget remove compiz-core-$1 -y
+ testdpkgnotinstalled compiz-core-$1
+ testdpkgstatus 'rc' '1' "compiz-core-$1"
-testequal 'Reading package lists...
+ testequal "Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be REMOVED:
Building dependency tree...
Reading state information...
The following packages will be REMOVED:
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
-Purg compiz-core' aptget purge compiz-core -s
+Purg compiz-core-$1" aptget purge compiz-core-$1 -s
+ testsuccess aptget purge compiz-core-$1 -y
+ testequal "dpkg-query: no packages found matching compiz-core-$1" dpkg -l compiz-core-$1
+}
+
+msgmsg 'Test in multi arch environment'
+runtests 'native'
+runtests 'all'
+runtests 'native' 'stable'
+runtests 'all' 'stable'
+
+msgmsg 'Test in single arch environment'
+configarchitecture 'amd64'
+runtests 'native'
+runtests 'all'
+runtests 'native' 'stable'
+runtests 'all' 'stable'