def testStackDictList(self): from portage.util import stack_dictlist tests = [ ({ 'a': 'b' }, { 'x': 'y' }, False, { 'a': ['b'], 'x': ['y'] }), ({ 'KEYWORDS': ['alpha', 'x86'] }, { 'KEYWORDS': ['-*'] }, True, {}), ({ 'KEYWORDS': ['alpha', 'x86'] }, { 'KEYWORDS': ['-x86'] }, True, { 'KEYWORDS': ['alpha'] }), ] for test in tests: self.assertEqual( stack_dictlist([test[0], test[1]], incremental=test[2]), test[3])
def _compile_virtuals(self): """Stack installed and profile virtuals. Preference for virtuals decreases from left to right. Order of preference: 1. installed and in profile 2. installed only 3. profile only """ assert self._treeVirtuals is not None, "_populate_treeVirtuals() must be called before " + \ "any query about virtuals" # Virtuals by profile+tree preferences. ptVirtuals = {} for virt, installed_list in self._treeVirtuals.items(): profile_list = self._dirVirtuals.get(virt, None) if not profile_list: continue for cp in installed_list: if cp in profile_list: ptVirtuals.setdefault(virt, []) ptVirtuals[virt].append(cp) virtuals = stack_dictlist([ptVirtuals, self._treeVirtuals, self._dirVirtuals, self._depgraphVirtuals]) self._virtuals = virtuals self._virts_p = None
def testStackDictList(self): from portage.util import stack_dictlist tests = [({"a": "b"}, {"x": "y"}, False, {"a": ["b"], "x": ["y"]})] tests.append(({"KEYWORDS": ["alpha", "x86"]}, {"KEYWORDS": ["-*"]}, True, {})) tests.append(({"KEYWORDS": ["alpha", "x86"]}, {"KEYWORDS": ["-x86"]}, True, {"KEYWORDS": ["alpha"]})) for test in tests: self.assertEqual(stack_dictlist([test[0], test[1]], incremental=test[2]), test[3])
def testStackDictList(self): from portage.util import stack_dictlist tests = [ ({'a':'b'},{'x':'y'},False,{'a':['b'],'x':['y']}) ] tests.append(( {'KEYWORDS':['alpha','x86']},{'KEYWORDS':['-*']},True,{} )) tests.append(( {'KEYWORDS':['alpha','x86']},{'KEYWORDS':['-x86']},True,{'KEYWORDS':['alpha']} )) for test in tests: self.assertEqual( stack_dictlist([test[0],test[1]],incremental=test[2]), test[3] )
def _read_dirVirtuals(self, profiles): """ Read the 'virtuals' file in all profiles. """ virtuals_list = [] for x in profiles: virtuals_file = os.path.join(x, "virtuals") virtuals_dict = grabdict(virtuals_file) atoms_dict = {} for k, v in virtuals_dict.items(): try: virt_atom = Atom(k) except InvalidAtom: virt_atom = None else: if virt_atom.blocker or \ str(virt_atom) != str(virt_atom.cp): virt_atom = None if virt_atom is None: writemsg(_("--- Invalid virtuals atom in %s: %s\n") % \ (virtuals_file, k), noiselevel=-1) continue providers = [] for atom in v: atom_orig = atom if atom[:1] == '-': # allow incrementals atom = atom[1:] try: atom = Atom(atom) except InvalidAtom: atom = None else: if atom.blocker: atom = None if atom is None: writemsg(_("--- Invalid atom in %s: %s\n") % \ (virtuals_file, atom_orig), noiselevel=-1) else: if atom_orig == str(atom): # normal atom, so return as Atom instance providers.append(atom) else: # atom has special prefix, so return as string providers.append(atom_orig) if providers: atoms_dict[virt_atom] = providers if atoms_dict: virtuals_list.append(atoms_dict) self._dirVirtuals = stack_dictlist(virtuals_list, incremental=True) for virt in self._dirVirtuals: # Preference for virtuals decreases from left to right. self._dirVirtuals[virt].reverse()
def testStackDictList(self): from portage.util import stack_dictlist tests = [ ({"a": "b"}, {"x": "y"}, False, {"a": ["b"], "x": ["y"]}), ({"KEYWORDS": ["alpha", "x86"]}, {"KEYWORDS": ["-*"]}, True, {}), ( {"KEYWORDS": ["alpha", "x86"]}, {"KEYWORDS": ["-x86"]}, True, {"KEYWORDS": ["alpha"]}, ), ] for test in tests: self.assertEqual( stack_dictlist([test[0], test[1]], incremental=test[2]), test[3] )