[Yum-devel] [PATCH] Test cases for previous change
James Antill
james at and.org
Thu Dec 10 17:29:53 UTC 2009
---
test/operationstests.py | 93 +++++++++++++++++++++++++++++++++++++++++++++++
test/testbase.py | 5 ++-
yum/__init__.py | 8 ++--
3 files changed, 101 insertions(+), 5 deletions(-)
diff --git a/test/operationstests.py b/test/operationstests.py
index 18f4b84..dd85ed6 100644
--- a/test/operationstests.py
+++ b/test/operationstests.py
@@ -141,3 +141,96 @@ class KernelTests(OperationsTests):
p = self.pkgs
res, msg = self.runOperation(['install','kernel-2.6.23.8'], p.inst, p.avail)
self.assertResult(p.inst)
+
+class MultiLibTests(OperationsTests):
+
+ @staticmethod
+ def buildPkgs(pkgs, *args):
+ pkgs.inst = []
+ pkgs.i_foo_1_12_x = FakePackage('foo', '1', '12',arch='x86_64')
+ pkgs.i_wbar_1_12_i = FakePackage('wbar', '1', '12', arch='i586')
+ pkgs.inst.append(pkgs.i_foo_1_12_x)
+ pkgs.inst.append(pkgs.i_wbar_1_12_i)
+
+ pkgs.avail = []
+ pkgs.a_foo_0_2_x = FakePackage('foo', '0', '2', arch='x86_64')
+ pkgs.a_foo_0_2_i = FakePackage('foo', '0', '2', arch='i686')
+ pkgs.a_foo_1_12_x = FakePackage('foo', '1', '12', arch='x86_64')
+ pkgs.a_foo_1_12_i = FakePackage('foo', '1', '12', arch='i686')
+ pkgs.a_foo_2_22_x = FakePackage('foo', '2', '22', arch='x86_64')
+ pkgs.a_foo_2_22_i = FakePackage('foo', '2', '22', arch='i686')
+ pkgs.a_bar_1_12_x = FakePackage('bar', '1', '12', arch='x86_64')
+ pkgs.a_bar_1_12_i = FakePackage('bar', '1', '12', arch='i686')
+ pkgs.a_bar_2_22_x = FakePackage('bar', '2', '22', arch='x86_64')
+ pkgs.a_bar_2_22_i = FakePackage('bar', '2', '22', arch='i686')
+
+ # ibar is .i?86 older
+ pkgs.a_ibar_2_22_x = FakePackage('ibar', '2', '22', arch='x86_64')
+ pkgs.a_ibar_1_12_i = FakePackage('ibar', '1', '12', arch='i686')
+
+ # xbar is .x86_64 older
+ pkgs.a_xbar_1_12_x = FakePackage('xbar', '1', '12', arch='x86_64')
+ pkgs.a_xbar_2_22_i = FakePackage('xbar', '2', '22', arch='i686')
+
+ # wbar is arch changing update/downgrade
+ pkgs.a_wbar_0_2_i = FakePackage('wbar', '0', '2', arch='i386')
+ pkgs.a_wbar_2_22_i = FakePackage('wbar', '2', '22', arch='i686')
+
+ for i in ('a_foo_0_2', 'a_foo_1_12', 'a_foo_2_22',
+ 'a_bar_1_12', 'a_bar_2_22'):
+ pkgs.avail.append(getattr(pkgs, i + '_x'))
+ pkgs.avail.append(getattr(pkgs, i + '_i'))
+ pkgs.avail.append(pkgs.a_ibar_2_22_x)
+ pkgs.avail.append(pkgs.a_ibar_1_12_i)
+ pkgs.avail.append(pkgs.a_xbar_1_12_x)
+ pkgs.avail.append(pkgs.a_xbar_2_22_i)
+ pkgs.avail.append(pkgs.a_wbar_0_2_i)
+ pkgs.avail.append(pkgs.a_wbar_2_22_i)
+
+ def testBestInstall1(self):
+ p = self.pkgs
+ ninst = p.inst[:]
+ ninst.append(p.a_bar_2_22_x)
+ res, msg = self.runOperation(['install', 'bar'], p.inst, p.avail)
+ self.assertResult(ninst)
+
+ def testBestInstall2(self):
+ p = self.pkgs
+ ninst = p.inst[:]
+ ninst.append(p.a_bar_1_12_x)
+ res, msg = self.runOperation(['install', 'bar-1'], p.inst, p.avail)
+ self.assertResult(ninst)
+
+ def testAllInstall1(self):
+ p = self.pkgs
+ ninst = p.inst[:]
+ ninst.append(p.a_bar_2_22_x)
+ ninst.append(p.a_bar_2_22_i)
+ res, msg = self.runOperation(['install', 'bar'], p.inst, p.avail,
+ {'multilib_policy' : 'all'})
+ self.assertResult(ninst)
+
+ def testAllInstall2(self):
+ p = self.pkgs
+ ninst = p.inst[:]
+ ninst.append(p.a_bar_1_12_x)
+ ninst.append(p.a_bar_1_12_i)
+ res, msg = self.runOperation(['install', 'bar-1'], p.inst, p.avail,
+ {'multilib_policy' : 'all'})
+ self.assertResult(ninst)
+
+ def testAllInstall3(self):
+ p = self.pkgs
+ ninst = p.inst[:]
+ ninst.append(p.a_ibar_2_22_x)
+ res, msg = self.runOperation(['install', 'ibar'], p.inst, p.avail,
+ {'multilib_policy' : 'all'})
+ self.assertResult(ninst)
+
+ def testAllInstall4(self):
+ p = self.pkgs
+ ninst = p.inst[:]
+ ninst.append(p.a_xbar_2_22_i)
+ res, msg = self.runOperation(['install', 'xbar'], p.inst, p.avail,
+ {'multilib_policy' : 'all'})
+ self.assertResult(ninst)
diff --git a/test/testbase.py b/test/testbase.py
index 3edfe57..c004bdb 100644
--- a/test/testbase.py
+++ b/test/testbase.py
@@ -332,7 +332,8 @@ class OperationsTests(_DepsolveTestsBase):
buildPkg code.
"""
- def runOperation(self, args, installed=[], available=[]):
+ def runOperation(self, args, installed=[], available=[],
+ confs={}):
"""Sets up and runs the depsolver. args[0] must be a valid yum command
("install", "update", ...). It might be followed by pkg names as on the
yum command line. The pkg objects in installed are added to self.rpmdb and
@@ -345,6 +346,8 @@ class OperationsTests(_DepsolveTestsBase):
self.xsack = depsolver._pkgSack = packageSack.PackageSack()
self.repo = depsolver.repo = FakeRepo("installed")
depsolver.conf = FakeConf()
+ for conf in confs:
+ setattr(depsolver.conf, conf, confs[conf])
# We are running nosetest, so we want to see some yum output
# if a testcase if failing
depsolver.doLoggingSetup(9,9)
diff --git a/yum/__init__.py b/yum/__init__.py
index 3c324d8..6b25e76 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -51,7 +51,7 @@ import transactioninfo
import urlgrabber
from urlgrabber.grabber import URLGrabber, URLGrabError
from urlgrabber.progress import format_number
-from packageSack import packagesNewestByName, ListPackageSack
+from packageSack import packagesNewestByName, packagesNewestByNameArch, ListPackageSack
import depsolve
import plugins
import logginglevels
@@ -2329,7 +2329,7 @@ class YumBase(depsolve.Depsolve):
use.append(pkg)
pkgs = use
- pkgs = packagesNewestByName(pkgs)
+ pkgs = packagesNewestByNameArch(pkgs)
if not self.tsInfo.conditionals.has_key(cond):
self.tsInfo.conditionals[cond] = []
@@ -2772,7 +2772,7 @@ class YumBase(depsolve.Depsolve):
pkgs = use
- pkgs = packagesNewestByName(pkgs)
+ pkgs = packagesNewestByNameArch(pkgs)
pkgbyname = {}
for pkg in pkgs:
@@ -3087,7 +3087,7 @@ class YumBase(depsolve.Depsolve):
# This is done so we don't have to returnObsoletes(newest=True)
# It's a minor UI problem for RHEL, but might as well dtrt.
obs_pkgs = [self.getPackageObject(tup) for tup in obs_tups]
- for obsoleting_pkg in packagesNewestByName(obs_pkgs):
+ for obsoleting_pkg in packagesNewestByNameArch(obs_pkgs):
tx_return.extend(self.install(po=obsoleting_pkg))
for available_pkg in availpkgs:
for obsoleted in self.up.obsoleting_dict.get(available_pkg.pkgtup, []):
--
1.6.5.2
More information about the Yum-devel
mailing list