Issue #747320: Use email.utils.formatdate() to avoid code duplication

in BaseHTTPRequestHandler

Initial patch by karlcow.
This commit is contained in:
Berker Peksag 2016-03-14 06:06:03 +02:00
parent 0647ef05eb
commit 04bc5b9e48
2 changed files with 16 additions and 6 deletions

View 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."""

View 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):