summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2011-08-17 11:27:50 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2011-08-17 11:27:50 +0200
commit01380ef62a453e44613dba87086177162a52c5fa (patch)
tree4b69db9e0e7081f338be79ac807bc07eed633dd8
parentbb3e64527b0c1ccf3f31a5a56c21819e25f128ae (diff)
parentd95dbc2ffd4acd5776ae6de300be320ef459325e (diff)
merged lp:~donkult/apt/sid
-rw-r--r--apt-pkg/packagemanager.cc3
-rw-r--r--apt-pkg/pkgcache.cc2
-rw-r--r--debian/changelog4
-rw-r--r--test/conf.cc37
-rw-r--r--test/conf_clear.cc23
-rw-r--r--test/integration/framework5
-rwxr-xr-xtest/integration/test-ubuntu-bug-802901-multiarch-early-remove24
-rw-r--r--test/libapt/configuration_test.cc78
-rw-r--r--test/libapt/globalerror_test.cc2
-rw-r--r--test/libapt/makefile12
-rw-r--r--test/libapt/uri_test.cc112
-rw-r--r--test/makefile18
-rw-r--r--test/uri.cc34
13 files changed, 239 insertions, 115 deletions
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
index a3ba26f7c..db18c5521 100644
--- a/apt-pkg/packagemanager.cc
+++ b/apt-pkg/packagemanager.cc
@@ -598,7 +598,8 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate)
for (PrvIterator P = instVer.ProvidesList();
P.end() == false; ++P)
- CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion());
+ if (Pkg->Group != P.OwnerPkg()->Group)
+ CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion());
List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States);
diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc
index faccafbef..07d85377d 100644
--- a/apt-pkg/pkgcache.cc
+++ b/apt-pkg/pkgcache.cc
@@ -637,7 +637,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const
continue;
if (IsNegative() == true &&
- ParentPkg() == I.OwnerPkg())
+ ParentPkg()->Group == I.OwnerPkg()->Group)
continue;
Size++;
diff --git a/debian/changelog b/debian/changelog
index 80189bcc9..f0a08aab3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,10 @@ apt (0.8.16~exp5ubuntu6) UNRELEASED; urgency=low
[ David Kalnischkies ]
* lots of cppcheck fixes
+ * apt-pkg/packagemanager.cc, apt-pkg/pkgcache.cc:
+ - ignore "self"-conflicts for all architectures of a package
+ instead of just for the architecture of the package locked at
+ in the ordering of installations too (Closes: #802901)
-- Michael Vogt <michael.vogt@ubuntu.com> Thu, 11 Aug 2011 18:09:45 +0200
diff --git a/test/conf.cc b/test/conf.cc
deleted file mode 100644
index 340647b5f..000000000
--- a/test/conf.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <apt-pkg/configuration.h>
-#include <apt-pkg/error.h>
-
-using namespace std;
-
-int main(int argc,const char *argv[])
-{
- Configuration Cnf;
-
- ReadConfigFile(Cnf,argv[1],true);
-
- // Process 'simple-key' type sections
- const Configuration::Item *Top = Cnf.Tree("simple-key");
- for (Top = (Top == 0?0:Top->Child); Top != 0; Top = Top->Next)
- {
- Configuration Block(Top);
-
- string VendorID = Top->Tag;
- string FingerPrint = Block.Find("Fingerprint");
- string Name = Block.Find("Name"); // Description?
-
- if (FingerPrint.empty() == true || Name.empty() == true)
- _error->Error("Block %s is invalid",VendorID.c_str());
-
- cout << VendorID << ' ' << FingerPrint << ' ' << Name << endl;
- }
-
- // Print any errors or warnings found during parsing
- if (_error->empty() == false)
- {
- bool Errors = _error->PendingError();
- _error->DumpErrors();
- return Errors == true?100:0;
- }
-
- return 0;
-}
diff --git a/test/conf_clear.cc b/test/conf_clear.cc
deleted file mode 100644
index 259aa0f39..000000000
--- a/test/conf_clear.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <apt-pkg/configuration.h>
-#include <apt-pkg/error.h>
-
-using namespace std;
-
-int main(int argc,const char *argv[])
-{
- Configuration Cnf;
-
- cout << "adding elements" << endl;
- Cnf.Set("APT::Keep-Fds::",28);
- Cnf.Set("APT::Keep-Fds::",17);
- Cnf.Set("APT::Keep-Fds::",47);
- Cnf.Dump();
-
- cout << "Removing elements" << endl;
- Cnf.Clear("APT::Keep-Fds",17);
- Cnf.Clear("APT::Keep-Fds",28);
- Cnf.Clear("APT::Keep-Fds",47);
- Cnf.Dump();
-
- return 0;
-}
diff --git a/test/integration/framework b/test/integration/framework
index fa451cf4f..ccab010e6 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -612,6 +612,11 @@ changetowebserver() {
if which weborf > /dev/null; then
weborf -xb aptarchive/ 2>&1 > /dev/null &
addtrap "kill $!;"
+ elif which gatling > /dev/null; then
+ cd aptarchive
+ gatling -p 8080 -F -S 2>&1 > /dev/null &
+ addtrap "kill $!;"
+ cd - > /dev/null
elif which lighttpd > /dev/null; then
echo "server.document-root = \"$(readlink -f ./aptarchive)\"
server.port = 8080
diff --git a/test/integration/test-ubuntu-bug-802901-multiarch-early-remove b/test/integration/test-ubuntu-bug-802901-multiarch-early-remove
new file mode 100755
index 000000000..bdb4e5e4f
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-802901-multiarch-early-remove
@@ -0,0 +1,24 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libgl1-mesa-glx' 'amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+insertpackage 'unstable' 'libgl1-mesa-glx' 'i386,amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+
+setupaptarchive
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libgl1-mesa-glx:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libgl1-mesa-glx:i386 (2.0 unstable [i386])
+Conf libgl1-mesa-glx:i386 (2.0 unstable [i386])' aptget install libgl1-mesa-glx:i386 -s
diff --git a/test/libapt/configuration_test.cc b/test/libapt/configuration_test.cc
new file mode 100644
index 000000000..5b23d17fb
--- /dev/null
+++ b/test/libapt/configuration_test.cc
@@ -0,0 +1,78 @@
+#include <apt-pkg/configuration.h>
+
+#include <string>
+#include <vector>
+
+#include "assert.h"
+
+int main(int argc,const char *argv[]) {
+ Configuration Cnf;
+ std::vector<std::string> fds;
+
+ Cnf.Set("APT::Keep-Fds::",28);
+ Cnf.Set("APT::Keep-Fds::",17);
+ Cnf.Set("APT::Keep-Fds::2",47);
+ Cnf.Set("APT::Keep-Fds::","broken");
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ equals(fds[0], "28");
+ equals(fds[1], "17");
+ equals(fds[2], "47");
+ equals(fds[3], "broken");
+ equals(fds.size(), 4);
+ equals(Cnf.Exists("APT::Keep-Fds::2"), true);
+ equals(Cnf.Find("APT::Keep-Fds::2"), "47");
+ equals(Cnf.FindI("APT::Keep-Fds::2"), 47);
+ equals(Cnf.Exists("APT::Keep-Fds::3"), false);
+ equals(Cnf.Find("APT::Keep-Fds::3"), "");
+ equals(Cnf.FindI("APT::Keep-Fds::3", 56), 56);
+ equals(Cnf.Find("APT::Keep-Fds::3", "not-set"), "not-set");
+
+ Cnf.Clear("APT::Keep-Fds::2");
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ equals(fds[0], "28");
+ equals(fds[1], "17");
+ equals(fds[2], "");
+ equals(fds[3], "broken");
+ equals(fds.size(), 4);
+ equals(Cnf.Exists("APT::Keep-Fds::2"), true);
+
+ Cnf.Clear("APT::Keep-Fds",28);
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ equals(fds[0], "17");
+ equals(fds[1], "");
+ equals(fds[2], "broken");
+ equals(fds.size(), 3);
+
+ Cnf.Clear("APT::Keep-Fds","");
+ equals(Cnf.Exists("APT::Keep-Fds::2"), false);
+
+ Cnf.Clear("APT::Keep-Fds",17);
+ Cnf.Clear("APT::Keep-Fds","broken");
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ equals(fds.empty(), true);
+
+ Cnf.Set("APT::Keep-Fds::",21);
+ Cnf.Set("APT::Keep-Fds::",42);
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ equals(fds[0], "21");
+ equals(fds[1], "42");
+ equals(fds.size(), 2);
+
+ Cnf.Clear("APT::Keep-Fds");
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ equals(fds.empty(), true);
+
+ Cnf.CndSet("APT::Version", 42);
+ Cnf.CndSet("APT::Version", "66");
+ equals(Cnf.Find("APT::Version"), "42");
+ equals(Cnf.FindI("APT::Version"), 42);
+ equals(Cnf.Find("APT::Version", "33"), "42");
+ equals(Cnf.FindI("APT::Version", 33), 42);
+ equals(Cnf.Find("APT2::Version", "33"), "33");
+ equals(Cnf.FindI("APT2::Version", 33), 33);
+
+ //FIXME: Test for configuration file parsing;
+ // currently only integration/ tests test them implicitly
+
+ return 0;
+}
diff --git a/test/libapt/globalerror_test.cc b/test/libapt/globalerror_test.cc
index 7d933f5a8..5d27414f9 100644
--- a/test/libapt/globalerror_test.cc
+++ b/test/libapt/globalerror_test.cc
@@ -101,7 +101,7 @@ int main(int argc,char *argv[])
longText.clear();
for (size_t i = 0; i < 50; ++i)
longText.append("РезийбёбAZ");
- equals(_error->Warning(longText.c_str()), false);
+ equals(_error->Warning("%s", longText.c_str()), false);
equals(_error->PopMessage(text), false);
equals(text, longText);
diff --git a/test/libapt/makefile b/test/libapt/makefile
index a8acabd8e..a5f79da1a 100644
--- a/test/libapt/makefile
+++ b/test/libapt/makefile
@@ -58,3 +58,15 @@ PROGRAM = StrUtil${BASENAME}
SLIBS = -lapt-pkg
SOURCE = strutil_test.cc
include $(PROGRAM_H)
+
+# test the URI parsing stuff
+PROGRAM = URI${BASENAME}
+SLIBS = -lapt-pkg
+SOURCE = uri_test.cc
+include $(PROGRAM_H)
+
+# test the Configuration class
+PROGRAM = Configuration${BASENAME}
+SLIBS = -lapt-pkg
+SOURCE = configuration_test.cc
+include $(PROGRAM_H)
diff --git a/test/libapt/uri_test.cc b/test/libapt/uri_test.cc
new file mode 100644
index 000000000..99bb3067e
--- /dev/null
+++ b/test/libapt/uri_test.cc
@@ -0,0 +1,112 @@
+#include <apt-pkg/strutl.h>
+
+#include "assert.h"
+
+int main() {
+ // Basic stuff
+ {
+ URI U("http://www.debian.org:90/temp/test");
+ equals("http", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(90, U.Port);
+ equals("www.debian.org", U.Host);
+ equals("/temp/test", U.Path);
+ } {
+ URI U("http://jgg:foo@ualberta.ca/blah");
+ equals("http", U.Access);
+ equals("jgg", U.User);
+ equals("foo", U.Password);
+ equals(0, U.Port);
+ equals("ualberta.ca", U.Host);
+ equals("/blah", U.Path);
+ } {
+ URI U("file:/usr/bin/foo");
+ equals("file", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(0, U.Port);
+ equals("", U.Host);
+ equals("/usr/bin/foo", U.Path);
+ } {
+ URI U("cdrom:Moo Cow Rom:/debian");
+ equals("cdrom", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(0, U.Port);
+ equals("Moo Cow Rom", U.Host);
+ equals("/debian", U.Path);
+ } {
+ URI U("gzip:./bar/cow");
+ equals("gzip", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(0, U.Port);
+ equals(".", U.Host);
+ equals("/bar/cow", U.Path);
+ } {
+ URI U("ftp:ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb");
+ equals("ftp", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(0, U.Port);
+ equals("ftp.fr.debian.org", U.Host);
+ equals("/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", U.Path);
+ }
+
+ // RFC 2732 stuff
+ {
+ URI U("http://[1080::8:800:200C:417A]/foo");
+ equals("http", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(0, U.Port);
+ equals("1080::8:800:200C:417A", U.Host);
+ equals("/foo", U.Path);
+ } {
+ URI U("http://[::FFFF:129.144.52.38]:80/index.html");
+ equals("http", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(80, U.Port);
+ equals("::FFFF:129.144.52.38", U.Host);
+ equals("/index.html", U.Path);
+ } {
+ URI U("http://[::FFFF:129.144.52.38:]:80/index.html");
+ equals("http", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(80, U.Port);
+ equals("::FFFF:129.144.52.38:", U.Host);
+ equals("/index.html", U.Path);
+ } {
+ URI U("http://[::FFFF:129.144.52.38:]/index.html");
+ equals("http", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(0, U.Port);
+ equals("::FFFF:129.144.52.38:", U.Host);
+ equals("/index.html", U.Path);
+ }
+ /* My Evil Corruption of RFC 2732 to handle CDROM names! Fun for
+ the whole family! */
+ {
+ URI U("cdrom:[The Debian 1.2 disk, 1/2 R1:6]/debian/");
+ equals("cdrom", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(0, U.Port);
+ equals("The Debian 1.2 disk, 1/2 R1:6", U.Host);
+ equals("/debian/", U.Path);
+ } {
+ URI U("cdrom:Foo Bar Cow/debian/");
+ equals("cdrom", U.Access);
+ equals("", U.User);
+ equals("", U.Password);
+ equals(0, U.Port);
+ equals("Foo Bar Cow", U.Host);
+ equals("/debian/", U.Path);
+ }
+
+ return 0;
+}
diff --git a/test/makefile b/test/makefile
index 52adb96a2..9fcd6a826 100644
--- a/test/makefile
+++ b/test/makefile
@@ -11,12 +11,6 @@ SLIBS =
SOURCE = mthdcat.cc
include $(PROGRAM_H)
-# Program for testing methods
-PROGRAM=uritest
-SLIBS = -lapt-pkg
-SOURCE = uri.cc
-include $(PROGRAM_H)
-
# Scratch program to test incomplete code fragments in
PROGRAM=scratch-test
SLIBS = -lapt-inst -lapt-pkg
@@ -31,18 +25,6 @@ LIB_MAKES = apt-pkg/makefile apt-inst/makefile
SOURCE = testextract.cc
include $(PROGRAM_H)
-# Program for testing the config file parser
-PROGRAM=conftest_clear
-SLIBS = -lapt-pkg
-SOURCE = conf_clear.cc
-include $(PROGRAM_H)
-
-# Program for testing the config file parser
-PROGRAM=conftest
-SLIBS = -lapt-pkg
-SOURCE = conf.cc
-include $(PROGRAM_H)
-
# Program for testing the tar/deb extractor
PROGRAM=testdeb
SLIBS = -lapt-pkg -lapt-inst
diff --git a/test/uri.cc b/test/uri.cc
deleted file mode 100644
index ae9dc9d05..000000000
--- a/test/uri.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <apt-pkg/strutl.h>
-#include <stdio.h>
-
-void Test(const char *Foo)
-{
- URI U(Foo);
-
- printf("%s a='%s' u='%s' p='%s' port='%u'\n h='%s' p='%s'\n",
- Foo,U.Access.c_str(),U.User.c_str(),U.Password.c_str(),
- U.Port,U.Host.c_str(),U.Path.c_str());
-}
-
-int main()
-{
- // Basic stuff
- Test("http://www.debian.org:90/temp/test");
- Test("http://jgg:foo@ualberta.ca/blah");
- Test("file:/usr/bin/foo");
- Test("cdrom:Moo Cow Rom:/debian");
- Test("gzip:./bar/cow");
-
- // RFC 2732 stuff
- Test("http://[1080::8:800:200C:417A]/foo");
- Test("http://[::FFFF:129.144.52.38]:80/index.html");
- Test("http://[::FFFF:129.144.52.38:]:80/index.html");
- Test("http://[::FFFF:129.144.52.38:]/index.html");
-
- /* My Evil Corruption of RFC 2732 to handle CDROM names! Fun for
- the whole family! */
- Test("cdrom:[The Debian 1.2 disk, 1/2 R1:6]/debian/");
- Test("cdrom:Foo Bar Cow/debian/");
-
- Test("ftp:ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb");
-}