Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r11279 - in main/trunk/pym/portage: . tests/dep
Date: Wed, 30 Jul 2008 06:05:04
Message-Id: E1KO4o1-00031t-Gb@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-07-30 06:05:00 +0000 (Wed, 30 Jul 2008)
3 New Revision: 11279
4
5 Modified:
6 main/trunk/pym/portage/dep.py
7 main/trunk/pym/portage/tests/dep/test_isvalidatom.py
8 Log:
9 * Add more use dep validation.
10 * Fix broken handling of !foo? reported by ABCD.
11
12
13 Modified: main/trunk/pym/portage/dep.py
14 ===================================================================
15 --- main/trunk/pym/portage/dep.py 2008-07-30 04:57:34 UTC (rev 11278)
16 +++ main/trunk/pym/portage/dep.py 2008-07-30 06:05:00 UTC (rev 11279)
17 @@ -347,6 +347,8 @@
18 _conditionals_class = portage.cache.mappings.slot_dict_class(
19 ("disabled", "enabled", "equal", "not_equal"), prefix="")
20
21 + _valid_use_re = re.compile(r'^[^-?!=][^?!=]*$')
22 +
23 def __init__(self, use):
24 enabled_flags = []
25 disabled_flags = []
26 @@ -357,25 +359,32 @@
27 for x in use:
28 last_char = x[-1:]
29 first_char = x[:1]
30 + second_char = x[1:2]
31 if "?" == last_char:
32 - if "-" == first_char:
33 - conditional.disabled.append(x[1:-1])
34 + if "!" == first_char:
35 + conditional.disabled.append(
36 + self._validate_flag(x, x[1:-1]))
37 else:
38 - conditional.enabled.append(x[:-1])
39 + conditional.enabled.append(
40 + self._validate_flag(x, x[:-1]))
41 elif "=" == last_char:
42 if "-" == first_char:
43 raise InvalidAtom("Invalid use dep: '%s'" % (x,))
44 if "!" == x[-2:-1]:
45 raise InvalidAtom("Invalid use dep: '%s'" % (x,))
46 if "!" == first_char:
47 - conditional.not_equal.append(x[1:-1])
48 + conditional.not_equal.append(
49 + self._validate_flag(x, x[1:-1]))
50 else:
51 - conditional.equal.append(x[:-1])
52 + conditional.equal.append(
53 + self._validate_flag(x, x[:-1]))
54 else:
55 + if "!" == first_char:
56 + raise InvalidAtom("Invalid use dep: '%s'" % (x,))
57 if "-" == first_char:
58 - disabled_flags.append(x[1:])
59 + disabled_flags.append(self._validate_flag(x, x[1:]))
60 else:
61 - enabled_flags.append(x)
62 + enabled_flags.append(self._validate_flag(x, x))
63
64 self.tokens = use
65 if not isinstance(self.tokens, tuple):
66 @@ -398,6 +407,11 @@
67 self.conditional = conditional
68 break
69
70 + def _validate_flag(self, token, flag):
71 + if self._valid_use_re.match(flag) is None:
72 + raise InvalidAtom("Invalid use dep: '%s'" % (token,))
73 + return flag
74 +
75 def __nonzero__(self):
76 return bool(self.tokens)
77
78
79 Modified: main/trunk/pym/portage/tests/dep/test_isvalidatom.py
80 ===================================================================
81 --- main/trunk/pym/portage/tests/dep/test_isvalidatom.py 2008-07-30 04:57:34 UTC (rev 11278)
82 +++ main/trunk/pym/portage/tests/dep/test_isvalidatom.py 2008-07-30 06:05:00 UTC (rev 11279)
83 @@ -30,11 +30,16 @@
84 ( "=sys-apps/portage-2.2*:foo[!doc?]", True ),
85 ( "=sys-apps/portage-2.2*:foo[doc=]", True ),
86 ( "=sys-apps/portage-2.2*:foo[!doc=]", True ),
87 + ( "=sys-apps/portage-2.2*:foo[!doc]", False ),
88 + ( "=sys-apps/portage-2.2*:foo[!-doc]", False ),
89 + ( "=sys-apps/portage-2.2*:foo[!-doc=]", False ),
90 + ( "=sys-apps/portage-2.2*:foo[!-doc?]", False ),
91 + ( "=sys-apps/portage-2.2*:foo[-doc?]", False ),
92 ( "=sys-apps/portage-2.2*:foo[-doc=]", False ),
93 ( "=sys-apps/portage-2.2*:foo[-doc!=]", False ),
94 ( "=sys-apps/portage-2.2*:foo[-doc=]", False ),
95 - ( "=sys-apps/portage-2.2*:foo[bar][-baz][doc?][-build?]", False ),
96 - ( "=sys-apps/portage-2.2*:foo[bar,-baz,doc?,-build?]", True ),
97 + ( "=sys-apps/portage-2.2*:foo[bar][-baz][doc?][!build?]", False ),
98 + ( "=sys-apps/portage-2.2*:foo[bar,-baz,doc?,!build?]", True ),
99 ( "=sys-apps/portage-2.2*:foo[bar,-baz,doc?,!build?,]", False ),
100 ( "=sys-apps/portage-2.2*:foo[,bar,-baz,doc?,!build?]", False ),
101 ( "=sys-apps/portage-2.2*:foo[bar,-baz][doc?,!build?]", False ),