def _get_installed_best(self, pkg, pkg_info): """ we need to use "--emptrytree" testing here rather than "empty" param testing because "empty" param is used for -u, where you still *do* want to see when something is being upgraded. @param pkg: _emerge.Package.Package instance @param pkg_info: dictionay @rtype addl, myoldbest: list, myinslotlist: list Modifies self.counters.reinst, self.counters.new """ myoldbest = [] myinslotlist = None installed_versions = self.vardb.match_pkgs(pkg.cp) if self.vardb.cpv_exists(pkg.cpv): pkg_info.attr_display.replace = True installed_version = pkg_info.previous_pkg if installed_version.slot != pkg.slot or installed_version.sub_slot != pkg.sub_slot or \ not self.quiet_repo_display and installed_version.repo != pkg.repo: myoldbest = [installed_version] if pkg_info.ordered: if pkg_info.merge: self.counters.reinst += 1 # filter out old-style virtual matches elif installed_versions and \ installed_versions[0].cp == pkg.cp: myinslotlist = self.vardb.match_pkgs(pkg.slot_atom) # If this is the first install of a new-style virtual, we # need to filter out old-style virtual matches. if myinslotlist and \ myinslotlist[0].cp != pkg.cp: myinslotlist = None if myinslotlist: myoldbest = myinslotlist[:] if not cpvequal(pkg.cpv, best([pkg.cpv] + [x.cpv for x in myinslotlist])): # Downgrade in slot pkg_info.attr_display.new_version = True pkg_info.attr_display.downgrade = True if pkg_info.ordered: self.counters.downgrades += 1 else: # Update in slot pkg_info.attr_display.new_version = True if pkg_info.ordered: self.counters.upgrades += 1 else: myoldbest = installed_versions pkg_info.attr_display.new = True pkg_info.attr_display.new_slot = True if pkg_info.ordered: self.counters.newslot += 1 if self.conf.changelog: self.do_changelog(pkg, pkg_info) else: pkg_info.attr_display.new = True if pkg_info.ordered: self.counters.new += 1 return myoldbest, myinslotlist
def testCPVequal(self): test_cases = ( ("sys-apps/portage-2.1", "sys-apps/portage-2.1", True), ("sys-apps/portage-2.1", "sys-apps/portage-2.0", False), ("sys-apps/portage-2.1", "sys-apps/portage-2.1-r1", False), ("sys-apps/portage-2.1-r1", "sys-apps/portage-2.1", False), ("sys-apps/portage-2.1_alpha3", "sys-apps/portage-2.1", False), ("sys-apps/portage-2.1_alpha3_p6", "sys-apps/portage-2.1_alpha3", False), ("sys-apps/portage-2.1_alpha3", "sys-apps/portage-2.1", False), ("sys-apps/portage-2.1", "sys-apps/X-2.1", False), ("sys-apps/portage-2.1", "portage-2.1", False), ) test_cases_xfail = ( ("sys-apps/portage", "sys-apps/portage"), ("sys-apps/portage-2.1-6", "sys-apps/portage-2.1-6"), ) for cpv1, cpv2, expected_result in test_cases: self.assertEqual( cpvequal(cpv1, cpv2), expected_result, "cpvequal('%s', '%s') != %s" % (cpv1, cpv2, expected_result), ) for cpv1, cpv2 in test_cases_xfail: self.assertRaisesMsg( "cpvequal(%s, %s)" % (cpv1, cpv2), PortageException, cpvequal, cpv1, cpv2, )
def testCPVequal(self): test_cases = ( ("sys-apps/portage-2.1", "sys-apps/portage-2.1", True), ("sys-apps/portage-2.1", "sys-apps/portage-2.0", False), ("sys-apps/portage-2.1", "sys-apps/portage-2.1-r1", False), ("sys-apps/portage-2.1-r1", "sys-apps/portage-2.1", False), ("sys-apps/portage-2.1_alpha3", "sys-apps/portage-2.1", False), ("sys-apps/portage-2.1_alpha3_p6", "sys-apps/portage-2.1_alpha3", False), ("sys-apps/portage-2.1_alpha3", "sys-apps/portage-2.1", False), ("sys-apps/portage-2.1", "sys-apps/X-2.1", False), ("sys-apps/portage-2.1", "portage-2.1", False), ) test_cases_xfail = ( ("sys-apps/portage", "sys-apps/portage"), ("sys-apps/portage-2.1-6", "sys-apps/portage-2.1-6"), ) for cpv1, cpv2, expected_result in test_cases: self.assertEqual(cpvequal(cpv1, cpv2), expected_result, "cpvequal('%s', '%s') != %s" % (cpv1, cpv2, expected_result)) for cpv1, cpv2 in test_cases_xfail: self.assertRaisesMsg("cpvequal(%s, %s)" % (cpv1, cpv2), PortageException, cpvequal, cpv1, cpv2)
def _insert_slot(self, pkg, pkg_info, myinslotlist): """Adds slot info to the message @returns addl: formatted slot info @returns myoldbest: installed version list Modifies self.counters.downgrades, self.counters.upgrades, self.counters.binary """ addl = " " + pkg_info.fetch_symbol if not cpvequal(pkg.cpv, best([pkg.cpv] + [x.cpv for x in myinslotlist])): # Downgrade in slot addl += turquoise("U")+blue("D") if pkg_info.ordered: self.counters.downgrades += 1 if pkg.type_name == "binary": self.counters.binary += 1 else: # Update in slot addl += turquoise("U") + " " if pkg_info.ordered: self.counters.upgrades += 1 if pkg.type_name == "binary": self.counters.binary += 1 return addl
def _get_installed_best(self, pkg, pkg_info): """ we need to use "--emptrytree" testing here rather than "empty" param testing because "empty" param is used for -u, where you still *do* want to see when something is being upgraded. @param pkg: _emerge.Package.Package instance @param pkg_info: dictionay @rtype addl, myoldbest: list, myinslotlist: list Modifies self.counters.reinst, self.counters.new """ myoldbest = [] myinslotlist = None installed_versions = self.vardb.match_pkgs(pkg.cp) if self.vardb.cpv_exists(pkg.cpv): pkg_info.attr_display.replace = True installed_version = self.vardb.match_pkgs(pkg.cpv)[0] if not self.quiet_repo_display and installed_version.repo != pkg.repo: myoldbest = [installed_version] if pkg_info.ordered: if pkg_info.merge: self.counters.reinst += 1 # filter out old-style virtual matches elif installed_versions and \ installed_versions[0].cp == pkg.cp: myinslotlist = self.vardb.match_pkgs(pkg.slot_atom) # If this is the first install of a new-style virtual, we # need to filter out old-style virtual matches. if myinslotlist and \ myinslotlist[0].cp != pkg.cp: myinslotlist = None if myinslotlist: myoldbest = myinslotlist[:] if not cpvequal( pkg.cpv, best([pkg.cpv] + [x.cpv for x in myinslotlist])): # Downgrade in slot pkg_info.attr_display.new_version = True pkg_info.attr_display.downgrade = True if pkg_info.ordered: self.counters.downgrades += 1 else: # Update in slot pkg_info.attr_display.new_version = True if pkg_info.ordered: self.counters.upgrades += 1 else: myoldbest = installed_versions pkg_info.attr_display.new = True pkg_info.attr_display.new_slot = True if pkg_info.ordered: self.counters.newslot += 1 if self.conf.changelog: self.do_changelog(pkg, pkg_info) else: pkg_info.attr_display.new = True if pkg_info.ordered: self.counters.new += 1 return myoldbest, myinslotlist
def _insert_slot(self, pkg, pkg_info, myinslotlist): """Adds slot info to the message @returns addl: formatted slot info @returns myoldbest: installed version list Modifies self.counters.downgrades, self.counters.upgrades, self.counters.binary """ addl = " " + pkg_info.fetch_symbol if not cpvequal(pkg.cpv, best([pkg.cpv] + [x.cpv for x in myinslotlist])): # Downgrade in slot addl += turquoise("U") + blue("D") if pkg_info.ordered: self.counters.downgrades += 1 if pkg.type_name == "binary": self.counters.binary += 1 else: # Update in slot addl += turquoise("U") + " " if pkg_info.ordered: self.counters.upgrades += 1 if pkg.type_name == "binary": self.counters.binary += 1 return addl