On Sun, Dec 27, 2015 at 04:04:07PM +0100, Christian Boltz wrote: > Hello, > > some dbus rule conditionals come with optional parenthesis. Instead of > making the regex even more complicated, use a small function to strip > those parenthesis. > > Also add some tests for strip_parenthesis() to test-regex.py.
How will this handle '() foo ()' or '(((())))'? Thanks > > > [ 53-add-strip_parenthesis.diff ] > > === modified file ./utils/apparmor/regex.py > --- utils/apparmor/regex.py 2015-12-21 00:13:57.207799592 +0100 > +++ utils/apparmor/regex.py 2015-12-24 01:19:47.916978461 +0100 > @@ -128,6 +128,15 @@ > > return matches.group('magicpath') > > +def strip_parenthesis(data): > + '''strips parenthesis from the given string and returns the strip()ped > result. > + The parenthesis must be the first and last char, otherwise they won't > be removed. > + Even if no parenthesis get removed, the result will be strip()ped. > + ''' > + if data[0] + data[-1] == '()': > + return data[1:-1].strip() > + else: > + return data.strip() > > def strip_quotes(data): > if data[0] + data[-1] == '""': > === modified file ./utils/test/test-regex_matches.py > --- utils/test/test-regex_matches.py 2015-12-21 00:13:57.207799592 +0100 > +++ utils/test/test-regex_matches.py 2015-12-24 00:56:50.382751188 +0100 > @@ -14,7 +14,7 @@ > from common_test import AATest, setup_all_loops > from apparmor.common import AppArmorBug, AppArmorException > > -from apparmor.regex import strip_quotes, parse_profile_start_line, > re_match_include, RE_PROFILE_START, RE_PROFILE_CAP, RE_PROFILE_PTRACE, > RE_PROFILE_SIGNAL > +from apparmor.regex import strip_parenthesis, strip_quotes, > parse_profile_start_line, re_match_include, RE_PROFILE_START, RE_PROFILE_CAP, > RE_PROFILE_PTRACE, RE_PROFILE_SIGNAL > > > class AARegexTest(AATest): > @@ -501,6 +501,24 @@ > re_match_include(params) > > > +class TestStripParenthesis(AATest): > + tests = [ > + ('foo', 'foo' ), > + ('(foo)', 'foo' ), > + ('( foo )', 'foo' ), > + ('(foo', '(foo' ), > + ('foo )', 'foo )' ), > + ('foo ()', 'foo ()' ), > + ('()', '' ), > + ('( )', '' ), > + ('(())', '()' ), > + (' (foo)', '(foo)' ), # parenthesis not first char, > whitespace stripped nevertheless > + ('(foo) ', '(foo)' ), # parenthesis not last char, > whitespace stripped nevertheless > + ] > + > + def _run_test(self, params, expected): > + self.assertEqual(strip_parenthesis(params), expected) > + > class TestStripQuotes(AATest): > def test_strip_quotes_01(self): > self.assertEqual('foo', strip_quotes('foo')) > >
signature.asc
Description: PGP signature
-- AppArmor mailing list AppArmor@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor