Changeset 516 for yum/trunk/test/testbase.py
- Timestamp:
- Feb 3, 2015, 9:39:54 AM (11 years ago)
- Location:
- yum/trunk
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
test/testbase.py (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
yum/trunk
-
Property svn:mergeinfo
set to
/yum/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
yum/trunk/test/testbase.py
r2 r516 18 18 import inspect 19 19 from rpmUtils import arch 20 from rpmUtils.transaction import initReadOnlyTransaction 21 import rpmUtils.miscutils 22 20 23 21 24 ############################################################# … … 26 29 def _(msg): 27 30 return msg 31 32 # dummy save_ts to avoid lots of errors 33 def save_ts(*args, **kwargs): 34 pass 28 35 29 36 class FakeConf(object): … … 45 52 self.showdupesfromrepos = False 46 53 self.uid = 0 54 self.groupremove_leaf_only = False 55 self.protected_packages = [] 56 self.protected_multilib = False 57 self.clean_requirements_on_remove = True 58 59 class FakeSack: 60 """ Fake PackageSack to use with FakeRepository""" 61 def __init__(self): 62 pass # This is fake, so do nothing 63 64 def have_fastReturnFileEntries(self): 65 return True 47 66 48 67 class FakeRepo(object): 49 68 69 __fake_sack = FakeSack() 50 70 def __init__(self, id=None,sack=None): 51 71 self.id = id 72 if sack is None: 73 sack = self.__fake_sack 52 74 self.sack = sack 53 75 self.cost = 1000 … … 63 85 return 0 64 86 87 class FakeYumDBInfo(object): 88 """Simulate some functionality of RPMAdditionalDataPackage""" 89 _auto_hardlink_attrs = set(['checksum_type', 'reason', 90 'installed_by', 'changed_by', 91 'from_repo', 'from_repo_revision', 92 'from_repo_timestamp', 'releasever', 93 'command_line']) 94 95 def __init__(self, conf=None, pkgdir=None, yumdb_cache=None): 96 self.db = {} 97 for attr in self._auto_hardlink_attrs: 98 self.db[attr] = '' 99 100 def __getattr__(self, attr): 101 return self.db[attr] 102 103 def __setattr__(self, attr, value): 104 if not attr.startswith("db"): 105 self.db[attr] = value 106 else: 107 object.__setattr__(self, attr, value) 108 109 def __iter__(self, show_hidden=False): 110 for item in self.db: 111 yield item 112 113 def get(self, attr, default=None): 114 try: 115 res = self.db[attr] 116 except AttributeError: 117 return default 118 return res 119 65 120 class FakePackage(packages.YumAvailablePackage): 66 121 … … 81 136 self.arch = arch 82 137 self.pkgtup = (self.name, self.arch, self.epoch, self.version, self.release) 83 self.yumdb_info = {}138 self.yumdb_info = FakeYumDBInfo() 84 139 85 140 self.prco['provides'].append((name, 'EQ', (epoch, version, release))) … … 88 143 self.id = self.__hash__() 89 144 self.pkgKey = self.__hash__() 90 145 146 self.required_pkgs = [] 147 self.requiring_pkgs = [] 91 148 def addProvides(self, name, flag=None, evr=(None, None, None)): 92 149 self.prco['provides'].append((name, flag, evr)) 93 150 def addRequires(self, name, flag=None, evr=(None, None, None)): 94 151 self.prco['requires'].append((name, flag, evr)) 152 def addRequiresPkg(self, pkg): 153 self.required_pkgs.append(pkg) 154 def addRequiringPkg(self, pkg): 155 self.requiring_pkgs.append(pkg) 95 156 def addConflicts(self, name, flag=None, evr=(None, None, None)): 96 157 self.prco['conflicts'].append((name, flag, evr)) … … 99 160 def addFile(self, name, ftype='file'): 100 161 self.files[ftype].append(name) 162 def required_packages(self): 163 return self.required_pkgs 164 def requiring_packages(self): 165 return self.requiring_pkgs 101 166 102 167 class _Container(object): … … 114 179 def pkgAdded(self, pkgtup, mode): 115 180 modedict = { 'i': _('installed'), 116 'u': _('updated'), 117 'o': _('obsoleted'), 118 'e': _('erased')} 181 'u': _('an update'), 182 'e': _('erased'), 183 'r': _('reinstalled'), 184 'd': _('a downgrade'), 185 'o': _('obsoleting'), 186 'ud': _('updated'), 187 'od': _('obsoleted'),} 119 188 (n, a, e, v, r) = pkgtup 120 189 modeterm = modedict[mode] 121 190 self.verbose_logger.log(logginglevels.INFO_2, 122 _('---> Package %s.%s %s:%s-%s set tobe %s'), n, a, e, v, r,191 _('---> Package %s.%s %s:%s-%s will be %s'), n, a, e, v, r, 123 192 modeterm) 124 193 … … 281 350 return 282 351 352 def readOnlyTS(self): 353 # Should probably be able to "fake" this, so we can provide different 354 # get_running_kernel_pkgtup(). Bah. 355 return initReadOnlyTransaction("/") 356 283 357 def getProvides(self, name, flags=None, version=(None, None, None)): 284 358 """return dict { packages -> list of matching provides }""" … … 288 362 if not version: 289 363 version=(None, None, None) 364 if type(version) in (str, type(None), unicode): 365 version = rpmUtils.miscutils.stringToVersion(version) 290 366 if flags == '0': 291 367 flags=None … … 338 414 self.tsInfo = transactioninfo.TransactionData() 339 415 340 341 416 def resolveCode(self): 342 417 solver = YumBase() 418 solver.save_ts = save_ts 343 419 solver.conf = FakeConf() 344 420 solver.arch.setup_arch('x86_64') … … 381 457 382 458 def runOperation(self, args, installed=[], available=[], 383 confs={} ):459 confs={}, multi_cmds=False): 384 460 """Sets up and runs the depsolver. args[0] must be a valid yum command 385 461 ("install", "update", ...). It might be followed by pkg names as on the … … 389 465 """ 390 466 depsolver = YumBaseCli() 467 depsolver.save_ts = save_ts 391 468 depsolver.arch.setup_arch('x86_64') 392 469 self.rpmdb = depsolver.rpmdb = FakeRpmDb() … … 410 487 self.depsolver._pkgSack.addPackage(po) 411 488 412 self.depsolver.basecmd = args[0] 413 self.depsolver.extcmds = args[1:] 414 res, msg = self.depsolver.doCommands() 489 if not multi_cmds: 490 self.depsolver.basecmd = args[0] 491 self.depsolver.extcmds = args[1:] 492 res, msg = self.depsolver.doCommands() 493 else: 494 for nargs in args: 495 self.depsolver.basecmd = nargs[0] 496 self.depsolver.extcmds = nargs[1:] 497 res, msg = self.depsolver.doCommands() 498 if res != 2: 499 return res, msg 500 415 501 self.tsInfo = depsolver.tsInfo 416 502 if res!=2:
Note:
See TracChangeset
for help on using the changeset viewer.
