[apparmor] [patch] [2/9] Add strip_parenthesis() to regex.py
Christian Boltz
apparmor at cboltz.de
Sun Dec 27 15:04:07 UTC 2015
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.
[ 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'))
Regards,
Christian Boltz
--
> Und fuer die Jahre-Hiersein finde ich die zwei Ergebnisse
> (unechte Mini-FAQ und Etikette) recht duenn!!!!!!!!
Ich glaub es hackt. Du kannst ja das Geld zurück verlangen, wenn es Dir
nicht paßt. [> toRBEN pOLLmann und Bernd Brodesser in suse-linux]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20151227/3a4a9ff0/attachment.pgp>
More information about the AppArmor
mailing list