]> granicus.if.org Git - python/commitdiff
Issue #747320: Use email.utils.formatdate() to avoid code duplication
authorBerker Peksag <berker.peksag@gmail.com>
Mon, 14 Mar 2016 04:06:03 +0000 (06:06 +0200)
committerBerker Peksag <berker.peksag@gmail.com>
Mon, 14 Mar 2016 04:06:03 +0000 (06:06 +0200)
in BaseHTTPRequestHandler

Initial patch by karlcow.

Lib/http/server.py
Lib/test/test_httpservers.py

index e1b71abf37420665f5c36a2df9c1f1e160616aa0..5e91826d15fb8dda2b5f6d831db0a6b3be97ff71 100644 (file)
@@ -87,6 +87,7 @@ __all__ = [
     "SimpleHTTPRequestHandler", "CGIHTTPRequestHandler",
 ]
 
+import email.utils
 import html
 import http.client
 import io
@@ -566,12 +567,7 @@ class BaseHTTPRequestHandler(socketserver.StreamRequestHandler):
         """Return the current date and time formatted for a message header."""
         if timestamp is None:
             timestamp = time.time()
-        year, month, day, hh, mm, ss, wd, y, z = time.gmtime(timestamp)
-        s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
-                self.weekdayname[wd],
-                day, self.monthname[month], year,
-                hh, mm, ss)
-        return s
+        return email.utils.formatdate(timestamp, usegmt=True)
 
     def log_date_time_string(self):
         """Return the current time formatted for logging."""
index d4c8eabd42205b04d005d0d5fe6759a55044dd2b..5d44825cc8fe02b0f188f65c72afb95ac28b8203 100644 (file)
@@ -17,6 +17,7 @@ import urllib.parse
 import html
 import http.client
 import tempfile
+import time
 from io import BytesIO
 
 import unittest
@@ -873,6 +874,19 @@ class BaseHTTPRequestHandlerTestCase(unittest.TestCase):
         self.handler.handle()
         self.assertRaises(StopIteration, next, close_values)
 
+    def test_date_time_string(self):
+        now = time.time()
+        # this is the old code that formats the timestamp
+        year, month, day, hh, mm, ss, wd, y, z = time.gmtime(now)
+        expected = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
+            self.handler.weekdayname[wd],
+            day,
+            self.handler.monthname[month],
+            year, hh, mm, ss
+        )
+        self.assertEqual(self.handler.date_time_string(timestamp=now), expected)
+
+
 class SimpleHTTPRequestHandlerTestCase(unittest.TestCase):
     """ Test url parsing """
     def setUp(self):