Example #1
0
	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
Example #2
0
    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,
            )
Example #3
0
	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)
Example #4
0
	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
Example #5
0
    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
Example #6
0
    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