Ignore:
Timestamp:
Feb 3, 2015, 9:39:54 AM (11 years ago)
Author:
Yuri Dario
Message:

yum: update trunk to 3.4.3.

Location:
yum/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • yum/trunk

  • yum/trunk/test/testbase.py

    r2 r516  
    1818import inspect
    1919from rpmUtils import arch
     20from rpmUtils.transaction import initReadOnlyTransaction
     21import rpmUtils.miscutils
     22
    2023
    2124#############################################################
     
    2629def _(msg):
    2730    return msg
     31
     32# dummy save_ts to avoid lots of errors
     33def save_ts(*args, **kwargs):
     34    pass
    2835
    2936class FakeConf(object):
     
    4552        self.showdupesfromrepos = False
    4653        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
     59class 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
    4766
    4867class FakeRepo(object):
    4968
     69    __fake_sack = FakeSack()
    5070    def __init__(self, id=None,sack=None):
    5171        self.id = id
     72        if sack is None:
     73            sack = self.__fake_sack
    5274        self.sack = sack
    5375        self.cost = 1000
     
    6385            return 0
    6486
     87class 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       
    65120class FakePackage(packages.YumAvailablePackage):
    66121
     
    81136        self.arch = arch
    82137        self.pkgtup = (self.name, self.arch, self.epoch, self.version, self.release)
    83         self.yumdb_info = {}
     138        self.yumdb_info = FakeYumDBInfo()
    84139
    85140        self.prco['provides'].append((name, 'EQ', (epoch, version, release)))
     
    88143        self.id = self.__hash__()
    89144        self.pkgKey = self.__hash__()
    90 
     145       
     146        self.required_pkgs = []
     147        self.requiring_pkgs = []
    91148    def addProvides(self, name, flag=None, evr=(None, None, None)):
    92149        self.prco['provides'].append((name, flag, evr))
    93150    def addRequires(self, name, flag=None, evr=(None, None, None)):
    94151        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)   
    95156    def addConflicts(self, name, flag=None, evr=(None, None, None)):
    96157        self.prco['conflicts'].append((name, flag, evr))
     
    99160    def addFile(self, name, ftype='file'):
    100161        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
    101166
    102167class _Container(object):
     
    114179    def pkgAdded(self, pkgtup, mode):
    115180        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'),}
    119188        (n, a, e, v, r) = pkgtup
    120189        modeterm = modedict[mode]
    121190        self.verbose_logger.log(logginglevels.INFO_2,
    122             _('---> Package %s.%s %s:%s-%s set to be %s'), n, a, e, v, r,
     191            _('---> Package %s.%s %s:%s-%s will be %s'), n, a, e, v, r,
    123192            modeterm)
    124193       
     
    281350        return
    282351
     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
    283357    def getProvides(self, name, flags=None, version=(None, None, None)):
    284358        """return dict { packages -> list of matching provides }"""
     
    288362        if not version:
    289363            version=(None, None, None)
     364        if type(version) in (str, type(None), unicode):
     365            version = rpmUtils.miscutils.stringToVersion(version)
    290366        if flags == '0':
    291367            flags=None
     
    338414        self.tsInfo = transactioninfo.TransactionData()
    339415       
    340 
    341416    def resolveCode(self):
    342417        solver = YumBase()
     418        solver.save_ts  = save_ts
    343419        solver.conf = FakeConf()
    344420        solver.arch.setup_arch('x86_64')
     
    381457
    382458    def runOperation(self, args, installed=[], available=[],
    383                      confs={}):
     459                     confs={}, multi_cmds=False):
    384460        """Sets up and runs the depsolver. args[0] must be a valid yum command
    385461        ("install", "update", ...). It might be followed by pkg names as on the
     
    389465        """
    390466        depsolver = YumBaseCli()
     467        depsolver.save_ts = save_ts
    391468        depsolver.arch.setup_arch('x86_64')
    392469        self.rpmdb = depsolver.rpmdb = FakeRpmDb()
     
    410487            self.depsolver._pkgSack.addPackage(po)
    411488
    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
    415501        self.tsInfo = depsolver.tsInfo
    416502        if res!=2:
Note: See TracChangeset for help on using the changeset viewer.