[Zope3-checkins] CVS: Products3/z3checkins/tests - test_message.py:1.2

Marius Gedminas mgedmin@codeworks.lt
Thu, 3 Apr 2003 04:17:47 -0500


Update of /cvs-repository/Products3/z3checkins/tests
In directory cvs.zope.org:/tmp/cvs-serv27939/tests

Modified Files:
	test_message.py 
Log Message:
Handle CVS import messages, messages without signatures, and messages with
DOS line endings.


=== Products3/z3checkins/tests/test_message.py 1.1.1.1 => 1.2 ===
--- Products3/z3checkins/tests/test_message.py:1.1.1.1	Thu Apr  3 03:20:00 2003
+++ Products3/z3checkins/tests/test_message.py	Thu Apr  3 04:17:47 2003
@@ -118,6 +118,30 @@
 http://mail.zope.org/mailman/listinfo/zope3-checkins
 """
 
+    sample_import_msg = """\
+From: Foo Bar <foo.bar@bar.com>
+Subject: [Zope3-checkins] CVS: Zope3/src/foo/bar - Imported sources
+Date: Fri, 28 Mar 2003 11:58:05 +03:00
+Message-Id: <42@bar.com>
+
+Update of /cvs-repository/Zope3/src/foo/bar
+In directory cvs.zope.org:/tmp/cvs-serv12345
+
+Log message:
+Ipsum suum dolores quantum est er nonsensicum textum writum esmum inum tuum
+lineum furum testum logum messageum.
+
+Status:
+
+Vendor Tag:\tbarfulator
+Release Tags:\tyo-yo
+
+N Zope3/src/foo/bar/baz.py
+N Zope3/src/foo/bar/bar.pt
+
+No conflicts created by this import
+"""
+
     def test_interface(self):
         from zopeproducts.z3checkins.message import CheckinMessageParser
         verifyObject(ICheckinMessageParser, CheckinMessageParser())
@@ -139,6 +163,24 @@
 lineum furum testum logum messageum.""")
         self.assertEquals(msg.body, self.sample_msg.split("\n\n", 1)[1].strip())
 
+    def test_parser_importmsg(self):
+        from zopeproducts.z3checkins.message import CheckinMessageParser
+        from zopeproducts.z3checkins.message import FixedTimezone
+        parser = CheckinMessageParser()
+        msg = parser.parse(StringIO(self.sample_import_msg))
+        self.assertEquals(msg.message_id, "<42@bar.com>")
+        self.assertEquals(msg.author, "Foo Bar <foo.bar@bar.com>")
+        self.assertEquals(msg.author_name, "Foo Bar")
+        self.assertEquals(msg.author_email, "foo.bar@bar.com")
+        self.assertEquals(msg.date, datetime(2003, 03, 28, 11, 58, 05,
+                                             tzinfo=FixedTimezone(3*60)))
+        self.assertEquals(msg.directory, "Zope3/src/foo/bar")
+        self.assertEquals(msg.log_message, """\
+Ipsum suum dolores quantum est er nonsensicum textum writum esmum inum tuum
+lineum furum testum logum messageum.""")
+        self.assertEquals(msg.body,
+                          self.sample_import_msg.split("\n\n", 1)[1].strip())
+
 
 class MessageStub:
 
@@ -261,8 +303,8 @@
     def test_body_strange(self):
         from zopeproducts.z3checkins.message import CheckinMessageView
         view = CheckinMessageView()
-        view.context = MessageStub(body="Something strange")
-        self.assertEquals(view.body(), "Something strange")
+        view.context = MessageStub(body="Something & strange")
+        self.assertEquals(view.body(), "<pre>Something &amp; strange</pre>")
 
     def test_body(self):
         from zopeproducts.z3checkins.message import CheckinMessageView
@@ -300,11 +342,133 @@
                     ' fwoosh &lt;&gt;&amp;&quot;\n'
                     '<div class="old">-fouoww\n</div>'
                     '<div class="new">+fruuuh\n</div>'
-                    ' fargle\n'
-                    '<div class="signature">'
+                    ' fargle'
+                    '<div class="signature">\n'
+                    '_______________________________________________\n'
+                    'signature\n'
+                    '</div>'
+                    '</pre>')
+        self.assertEquals(result, expected, diff(expected, result))
+
+    def test_body_crlf(self):
+        from zopeproducts.z3checkins.message import CheckinMessageView
+        view = CheckinMessageView()
+        view.context = MessageStub(body="Blah blah\r\n"
+                          "blah\r\n"
+                          "Log message:\r\n"
+                          "Blurb blurb\r\n"
+                          "blurb.\r\n"
+                          "\r\n"
+                          "=== foo.py: 1.2 -> 1.3 ===\r\n"
+                          "--- foo.py:1.2\tdatetime\r\n"
+                          "+++ foo.py\tdatetime\r\n"
+                          "@@@ -123,4 +567,8 @@@\r\n"
+                          " fwoosh <>&\"\r\n"
+                          "-fouoww\r\n"
+                          "+fruuuh\r\n"
+                          " fargle\r\n"
+                          "_______________________________________________\r\n"
+                          "signature\r\n")
+        result = view.body()
+        expected = ('<pre>Blah blah\n'
+                    'blah\n'
+                    'Log message:\n'
+                    '</pre>'
+                    '<div class="log">'
+                    '<p>Blurb blurb</p>'
+                    '<p>blurb.</p>'
+                    '</div>'
+                    '<pre>'
+                    '<div class="file">=== foo.py: 1.2 -&gt; 1.3 ===\n</div>'
+                    '<div class="oldfile">--- foo.py:1.2\tdatetime\n</div>'
+                    '<div class="newfile">+++ foo.py\tdatetime\n</div>'
+                    '<div class="chunk">@@@ -123,4 +567,8 @@@\n</div>'
+                    ' fwoosh &lt;&gt;&amp;&quot;\n'
+                    '<div class="old">-fouoww\n</div>'
+                    '<div class="new">+fruuuh\n</div>'
+                    ' fargle'
+                    '<div class="signature">\n'
                     '_______________________________________________\n'
                     'signature\n'
                     '</div>'
+                    '</pre>')
+        self.assertEquals(result, expected, diff(expected, result))
+
+    def test_body_nosig(self):
+        from zopeproducts.z3checkins.message import CheckinMessageView
+        view = CheckinMessageView()
+        view.context = MessageStub(body="Blah blah\n"
+                          "blah\n"
+                          "Log message:\n"
+                          "Blurb blurb\n"
+                          "blurb.\n"
+                          "\n"
+                          "=== foo.py: 1.2 -> 1.3 ===\n"
+                          "--- foo.py:1.2\tdatetime\n"
+                          "+++ foo.py\tdatetime\n"
+                          "@@@ -123,4 +567,8 @@@\n"
+                          " fwoosh <>&\"\n"
+                          "-fouoww\n"
+                          "+fruuuh\n"
+                          " fargle")
+        result = view.body()
+        expected = ('<pre>Blah blah\n'
+                    'blah\n'
+                    'Log message:\n'
+                    '</pre>'
+                    '<div class="log">'
+                    '<p>Blurb blurb</p>'
+                    '<p>blurb.</p>'
+                    '</div>'
+                    '<pre>'
+                    '<div class="file">=== foo.py: 1.2 -&gt; 1.3 ===\n</div>'
+                    '<div class="oldfile">--- foo.py:1.2\tdatetime\n</div>'
+                    '<div class="newfile">+++ foo.py\tdatetime\n</div>'
+                    '<div class="chunk">@@@ -123,4 +567,8 @@@\n</div>'
+                    ' fwoosh &lt;&gt;&amp;&quot;\n'
+                    '<div class="old">-fouoww\n</div>'
+                    '<div class="new">+fruuuh\n</div>'
+                    ' fargle'
+                    '</pre>')
+        self.assertEquals(result, expected, diff(expected, result))
+
+    def test_body_importmsg(self):
+        from zopeproducts.z3checkins.message import CheckinMessageView
+        view = CheckinMessageView()
+        view.context = MessageStub(body="Blah blah\n"
+                          "blah\n"
+                          "Log message:\n"
+                          "Blurb blurb\n"
+                          "blurb.\n"
+                          "\n"
+                          "Status:\n"
+                          "\n"
+                          "Vendor Tag:\tnovendor\n"
+                          "Release Tags:\tstart\n"
+                          "\n"
+                          "N foo/bar.py\n"
+                          "N foo/baz.pt\n"
+                          "\n"
+                          "No conflicts created by this import\n")
+        result = view.body()
+        expected = ('<pre>Blah blah\n'
+                    'blah\n'
+                    'Log message:\n'
+                    '</pre>'
+                    '<div class="log">'
+                    '<p>Blurb blurb</p>'
+                    '<p>blurb.</p>'
+                    '</div>'
+                    '<pre>'
+                    'Status:\n'
+                    '\n'
+                    'Vendor Tag:\tnovendor\n'
+                    'Release Tags:\tstart\n'
+                    '\n'
+                    'N foo/bar.py\n'
+                    'N foo/baz.pt\n'
+                    '\n'
+                    'No conflicts created by this import\n'
                     '</pre>')
         self.assertEquals(result, expected, diff(expected, result))