[Yum-devel] [PATCH] Make FakePackage use a simulated RPMDBAdditionalDataPackage for yumdb_info.

Casey Jao cjao at ugcs.caltech.edu
Sat Jun 4 21:22:46 UTC 2011


---
 test/testbase.py |   35 ++++++++++++++++++++++++++++++++++-
 1 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/test/testbase.py b/test/testbase.py
index 12025ce..790eaa9 100644
--- a/test/testbase.py
+++ b/test/testbase.py
@@ -84,6 +84,39 @@ class FakeRepo(object):
         else:
             return 0

+class FakeYumDBInfo(object):
+    """Simulate some functionality of RPMAdditionalDataPackage"""
+     _auto_hardlink_attrs = set(['checksum_type', 'reason',
+                                'installed_by', 'changed_by',
+                                'from_repo', 'from_repo_revision',
+                                'from_repo_timestamp', 'releasever',
+                                'command_line'])
+
+     def __init__(self, conf=None, pkgdir=None, yumdb_cache=None):
+         self.db = {}
+         for attr in self._auto_hardlink_attrs:
+             self.db[attr] = ''
+
+     def __getattr__(self, attr):
+         return self.db[attr]
+
+     def __setattr__(self, attr, value):
+         if not attr.startswith("db"):
+             self.db[attr] = value
+         else:
+             object.__setattr__(self, attr, value)
+
+     def __iter__(self, show_hidden=False):
+         for item in self.db:
+             yield item
+
+     def get(self, attr, default=None):
+         try:
+             res = self.db[attr]
+         except AttributeError:
+             return default
+         return res
+
 class FakePackage(packages.YumAvailablePackage):

     def __init__(self, name, version='1.0', release='1', epoch='0',
arch='noarch', repo=None):
@@ -102,7 +135,7 @@ class FakePackage(packages.YumAvailablePackage):
         self.epoch = epoch
         self.arch = arch
         self.pkgtup = (self.name, self.arch, self.epoch, self.version,
self.release)
-        self.yumdb_info = {}
+        self.yumdb_info = FakeYumDBInfo()

         self.prco['provides'].append((name, 'EQ', (epoch, version,
release)))

-- 
1.7.5.2

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 553 bytes
Desc: OpenPGP digital signature
URL: <http://lists.baseurl.org/pipermail/yum-devel/attachments/20110604/e84759ce/attachment.asc>


More information about the Yum-devel mailing list