<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 29, 2015 at 1:19 AM, Kshitij Gupta <span dir="ltr"><<a href="mailto:kgupta8592@gmail.com" target="_blank">kgupta8592@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi,<br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Fri, Oct 23, 2015 at 5:53 PM, Christian Boltz <span dir="ltr"><<a href="mailto:apparmor@cboltz.de" target="_blank">apparmor@cboltz.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
$subject.<br>
<br>
Also add a test to ensure it raises an AppArmorBug.<br>
<br>
<br>
[ 05-baserule-add-abstract-get_clean.diff ]<br>
<br>
=== modified file ./utils/apparmor/rule/__init__.py<br>
--- utils/apparmor/rule/__init__.py     2015-06-06 14:53:16.868029000 +0200<br>
+++ utils/apparmor/rule/__init__.py     2015-10-23 14:08:28.639214618 +0200<br>
@@ -81,6 +85,11 @@<br>
            required to be implemented by subclasses; raise exception if not'''<br>
         raise AppArmorBug("'%s' needs to implement _parse(), but didn't" % (str(cls)))<br>
<br>
+    # @abstractmethod  FIXME - uncomment when python3 only<br>
+    def get_clean(self, depth=0):<br>
+        '''return clean rule (with default formatting, and leading whitespace as specified in the depth parameter)'''<br>
+        raise AppArmorBug("'%s' needs to implement get_clean(), but didn't" % (str(self.__class__)))<br></blockquote></span></div></div></div></blockquote><div>On second thought, could we use:<br><pre style="" class=""><code><span class=""></span><span class="">raise</span><span class=""> </span><span class="">NotImplementedError</span><span class="">(</span></code><code><span class=""><span class="">"'%s' needs to implement get_clean(), but didn't" % (str(self.__class__)</span>)<br><br></span></code></pre><pre style="" class=""><code><span class=""><font face="arial,helvetica,sans-serif">Its the traditional style of writing abstract classes.</font><br></span></code></pre> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"></blockquote></span><div>Should be also give the class a detention? (Sorry couldn't resist) <br></div><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+ </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
     def get_raw(self, depth=0):<br>
         '''return raw rule (with original formatting, and leading whitespace in the depth parameter)'''<br>
         if self.raw_rule:<br>
=== modified file 'utils/test/test-baserule.py'<br>
--- utils/test/test-baserule.py 2015-06-06 12:04:11 +0000<br>
+++ utils/test/test-baserule.py 2015-10-23 12:17:53 +0000<br>
@@ -35,6 +35,11 @@<br>
         with self.assertRaises(AppArmorBug):<br>
             BaseRule.match('foo')<br>
<br>
+    def test_abstract_get_clean(self):<br>
+        obj = BaseRule()<br>
+        with self.assertRaises(AppArmorBug):<br>
+            obj.get_clean()<br>
+<br>
     def test_is_equal_localvars(self):<br>
         obj = BaseRule()<br>
         with self.assertRaises(AppArmorBug):<br>
<br>
<br></blockquote></span><div> <span></span><div>Thanks for the patch.<br><br>Acked-by: Kshitij Gupta <<a href="mailto:kgupta8592@gmail.com" target="_blank">kgupta8592@gmail.com</a>>.<br><br></div></div><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Regards,<br>
<br>
Christian Boltz<br>
<span><font color="#888888">--<br>
> Write the code like you are going to lose your memory in six months.<br>
Most people would say I write code like I've already lost my mind.<br>
Is that the same thing?   [Randal L. Schwartz]<br></font></span></blockquote></span><div>haha... laughed out loud for real. :-) <br></div><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><font color="#888888">
<br>
<br>
--<br>
AppArmor mailing list<br>
<a href="mailto:AppArmor@lists.ubuntu.com" target="_blank">AppArmor@lists.ubuntu.com</a><br>
Modify settings or unsubscribe at: <a href="https://lists.ubuntu.com/mailman/listinfo/apparmor" rel="noreferrer" target="_blank">https://lists.ubuntu.com/mailman/listinfo/apparmor</a><br>
</font></span></blockquote></span></div><span class=""><font color="#888888"><br><br clear="all"><br>-- <br><div><div dir="ltr"><div>Regards,<br><br></div>Kshitij Gupta<br></div></div>
</font></span></div></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div>Regards,<br><br></div>Kshitij Gupta<br></div></div>
</div></div>