[Repoze-checkins] r1090 - in repoze.debug/trunk: . repoze/debug

Chris McDonough chrism at agendaless.com
Fri Jun 13 21:34:22 EDT 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Fri Jun 13 21:34:22 2008
New Revision: 1090

Log:
  - Add warning if content-length != body length.



Modified:
   repoze.debug/trunk/CHANGES.txt
   repoze.debug/trunk/repoze/debug/responselogger.py
   repoze.debug/trunk/repoze/debug/tests.py

Modified: repoze.debug/trunk/CHANGES.txt
==============================================================================
--- repoze.debug/trunk/CHANGES.txt	(original)
+++ repoze.debug/trunk/CHANGES.txt	Fri Jun 13 21:34:22 2008
@@ -1,4 +1,8 @@
-0.1
+Next release
 
-  Initial release.
+  - Add warning if content-length != body length.
+
+0.1 (2008/06/13)
+
+  - Initial release.
 

Modified: repoze.debug/trunk/repoze/debug/responselogger.py
==============================================================================
--- repoze.debug/trunk/repoze/debug/responselogger.py	(original)
+++ repoze.debug/trunk/repoze/debug/responselogger.py	Fri Jun 13 21:34:22 2008
@@ -79,9 +79,22 @@
             request_id, t, duration))
         out.append('Status: %s' % status)
         out.append('Response Headers')
+        cl = None
         for header in headers:
-            out.append('  %s: %s' % (header[0], header[1]))
-        out.append('Bodylen: %s' % len(body))
+            k, v = header
+            if k.lower() == 'content-length':
+                try:
+                    cl = int(v)
+                except (TypeError, ValueError):
+                    cl = None
+            out.append('  %s: %s' % (k, v))
+        bodylen = len(body)
+        out.append('Bodylen: %s' % bodylen)
+        if cl is not None:
+            if bodylen != cl:
+                out.append(
+                    'WARNING-1: bodylen (%s) != Content-Length '
+                    'header value (%s)' % (bodylen, cl))
         out.append('Body:')
         out.append('')
         bodyout = body

Modified: repoze.debug/trunk/repoze/debug/tests.py
==============================================================================
--- repoze.debug/trunk/repoze/debug/tests.py	(original)
+++ repoze.debug/trunk/repoze/debug/tests.py	Fri Jun 13 21:34:22 2008
@@ -49,6 +49,18 @@
         self.assertEqual(len(logger.logged), 2)
         self.failUnless('(truncated)' in logger.logged[1])
 
+    def test_call_contentlengthwrong(self):
+        body = ['thebody']
+        app = DummyApp(body, '200 OK', [('Content-Length', '1')])
+        logger = FakeLogger()
+        mw = self._makeOne(app, 1, logger)
+        environ = self._makeEnviron()
+        start_response = FakeStartResponse()
+        app_iter = mw(environ, start_response)
+        self.assertEqual(''.join(app_iter), 'thebody')
+        self.assertEqual(len(logger.logged), 2)
+        self.failUnless('WARNING-1' in logger.logged[1])
+
 class TestMakeMiddleware(unittest.TestCase):
     def _getFUT(self):
         from repoze.debug.responselogger import make_middleware


More information about the Repoze-checkins mailing list