Fix 5931 - Python runtime hardcoded in wsgiref.simple_server - Now it specifies an implementation specific term.

This commit is contained in:
Senthil Kumaran 2012-07-07 14:29:58 -07:00
parent bc1a7ddc9b
commit a5e0eaf2e1
4 changed files with 18 additions and 3 deletions

View File

@ -609,6 +609,11 @@ input, output, and error streams.
as :class:`BaseCGIHandler` and :class:`CGIHandler`) that are not HTTP origin as :class:`BaseCGIHandler` and :class:`CGIHandler`) that are not HTTP origin
servers. servers.
.. versionchanged:: 3.3
The term "Python" is replaced with implementation specific term like
"CPython", "Jython" etc.
.. method:: BaseHandler.get_scheme() .. method:: BaseHandler.get_scheme()

View File

@ -9,6 +9,8 @@ from wsgiref.simple_server import WSGIServer, WSGIRequestHandler, demo_app
from wsgiref.simple_server import make_server from wsgiref.simple_server import make_server
from io import StringIO, BytesIO, BufferedReader from io import StringIO, BytesIO, BufferedReader
from socketserver import BaseServer from socketserver import BaseServer
from platform import python_implementation
import os import os
import re import re
import sys import sys
@ -129,9 +131,11 @@ def compare_generic_iter(make_it,match):
class IntegrationTests(TestCase): class IntegrationTests(TestCase):
def check_hello(self, out, has_length=True): def check_hello(self, out, has_length=True):
pyver = (python_implementation() + "/" +
sys.version.split()[0])
self.assertEqual(out, self.assertEqual(out,
("HTTP/1.0 200 OK\r\n" ("HTTP/1.0 200 OK\r\n"
"Server: WSGIServer/0.2 Python/"+sys.version.split()[0]+"\r\n" "Server: WSGIServer/0.2 " + pyver +"\r\n"
"Content-Type: text/plain\r\n" "Content-Type: text/plain\r\n"
"Date: Mon, 05 Jun 2006 18:49:54 GMT\r\n" + "Date: Mon, 05 Jun 2006 18:49:54 GMT\r\n" +
(has_length and "Content-Length: 13\r\n" or "") + (has_length and "Content-Length: 13\r\n" or "") +
@ -185,9 +189,11 @@ class IntegrationTests(TestCase):
out, err = run_amock(validator(app)) out, err = run_amock(validator(app))
self.assertTrue(err.endswith('"GET / HTTP/1.0" 200 4\n')) self.assertTrue(err.endswith('"GET / HTTP/1.0" 200 4\n'))
ver = sys.version.split()[0].encode('ascii') ver = sys.version.split()[0].encode('ascii')
py = python_implementation().encode('ascii')
pyver = py + b"/" + ver
self.assertEqual( self.assertEqual(
b"HTTP/1.0 200 OK\r\n" b"HTTP/1.0 200 OK\r\n"
b"Server: WSGIServer/0.2 Python/" + ver + b"\r\n" b"Server: WSGIServer/0.2 "+ pyver + b"\r\n"
b"Content-Type: text/plain; charset=utf-8\r\n" b"Content-Type: text/plain; charset=utf-8\r\n"
b"Date: Wed, 24 Dec 2008 13:29:32 GMT\r\n" b"Date: Wed, 24 Dec 2008 13:29:32 GMT\r\n"
b"\r\n" b"\r\n"

View File

@ -14,13 +14,14 @@ from http.server import BaseHTTPRequestHandler, HTTPServer
import sys import sys
import urllib.parse import urllib.parse
from wsgiref.handlers import SimpleHandler from wsgiref.handlers import SimpleHandler
from platform import python_implementation
__version__ = "0.2" __version__ = "0.2"
__all__ = ['WSGIServer', 'WSGIRequestHandler', 'demo_app', 'make_server'] __all__ = ['WSGIServer', 'WSGIRequestHandler', 'demo_app', 'make_server']
server_version = "WSGIServer/" + __version__ server_version = "WSGIServer/" + __version__
sys_version = "Python/" + sys.version.split()[0] sys_version = python_implementation() + "/" + sys.version.split()[0]
software_version = server_version + ' ' + sys_version software_version = server_version + ' ' + sys_version

View File

@ -23,6 +23,9 @@ Core and Builtins
Library Library
------- -------
- Issue #5931: wsgiref environ variable SERVER_SOFTWARE will specify an
implementation specific term like Cpython, Jython instead of generic "Python"
- Issue #13248: Remove obsolete argument "max_buffer_size" of BufferedWriter - Issue #13248: Remove obsolete argument "max_buffer_size" of BufferedWriter
and BufferedRWPair, from the io module. and BufferedRWPair, from the io module.