diff options
author | Géry Ogam <gery.ogam@gmail.com> | 2019-09-11 15:03:46 +0200 |
---|---|---|
committer | Zachary Ware <zachary.ware@gmail.com> | 2019-09-11 14:03:46 +0100 |
commit | 781266ebb60e7ac781a3e07030d92275721ff3cf (patch) | |
tree | 8a39e79a64aa7421f2fc0f191ee2c053fa746966 /Lib/test/test_httpservers.py | |
parent | e1d455f3a3b82c2e08d5e133bcbab5a181b66cfb (diff) | |
download | cpython-git-781266ebb60e7ac781a3e07030d92275721ff3cf.tar.gz |
bpo-35640: Allow passing PathLike arguments to SimpleHTTPRequestHandler (GH-11398)
Diffstat (limited to 'Lib/test/test_httpservers.py')
-rw-r--r-- | Lib/test/test_httpservers.py | 97 |
1 files changed, 74 insertions, 23 deletions
diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index 87d4924a34..1c980a2fa6 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -14,6 +14,7 @@ import sys import re import base64 import ntpath +import pathlib import shutil import email.message import email.utils @@ -790,10 +791,10 @@ class CGIHTTPServerTestCase(BaseTestCase): class SocketlessRequestHandler(SimpleHTTPRequestHandler): - def __init__(self, *args, **kwargs): + def __init__(self, directory=None): request = mock.Mock() request.makefile.return_value = BytesIO() - super().__init__(request, None, None) + super().__init__(request, None, None, directory=directory) self.get_called = False self.protocol_version = "HTTP/1.1" @@ -1068,41 +1069,91 @@ class BaseHTTPRequestHandlerTestCase(unittest.TestCase): class SimpleHTTPRequestHandlerTestCase(unittest.TestCase): """ Test url parsing """ def setUp(self): - self.translated = os.getcwd() - self.translated = os.path.join(self.translated, 'filename') - self.handler = SocketlessRequestHandler() + self.translated_1 = os.path.join(os.getcwd(), 'filename') + self.translated_2 = os.path.join('foo', 'filename') + self.translated_3 = os.path.join('bar', 'filename') + self.handler_1 = SocketlessRequestHandler() + self.handler_2 = SocketlessRequestHandler(directory='foo') + self.handler_3 = SocketlessRequestHandler(directory=pathlib.PurePath('bar')) def test_query_arguments(self): - path = self.handler.translate_path('/filename') - self.assertEqual(path, self.translated) - path = self.handler.translate_path('/filename?foo=bar') - self.assertEqual(path, self.translated) - path = self.handler.translate_path('/filename?a=b&spam=eggs#zot') - self.assertEqual(path, self.translated) + path = self.handler_1.translate_path('/filename') + self.assertEqual(path, self.translated_1) + path = self.handler_2.translate_path('/filename') + self.assertEqual(path, self.translated_2) + path = self.handler_3.translate_path('/filename') + self.assertEqual(path, self.translated_3) + + path = self.handler_1.translate_path('/filename?foo=bar') + self.assertEqual(path, self.translated_1) + path = self.handler_2.translate_path('/filename?foo=bar') + self.assertEqual(path, self.translated_2) + path = self.handler_3.translate_path('/filename?foo=bar') + self.assertEqual(path, self.translated_3) + + path = self.handler_1.translate_path('/filename?a=b&spam=eggs#zot') + self.assertEqual(path, self.translated_1) + path = self.handler_2.translate_path('/filename?a=b&spam=eggs#zot') + self.assertEqual(path, self.translated_2) + path = self.handler_3.translate_path('/filename?a=b&spam=eggs#zot') + self.assertEqual(path, self.translated_3) def test_start_with_double_slash(self): - path = self.handler.translate_path('//filename') - self.assertEqual(path, self.translated) - path = self.handler.translate_path('//filename?foo=bar') - self.assertEqual(path, self.translated) + path = self.handler_1.translate_path('//filename') + self.assertEqual(path, self.translated_1) + path = self.handler_2.translate_path('//filename') + self.assertEqual(path, self.translated_2) + path = self.handler_3.translate_path('//filename') + self.assertEqual(path, self.translated_3) + + path = self.handler_1.translate_path('//filename?foo=bar') + self.assertEqual(path, self.translated_1) + path = self.handler_2.translate_path('//filename?foo=bar') + self.assertEqual(path, self.translated_2) + path = self.handler_3.translate_path('//filename?foo=bar') + self.assertEqual(path, self.translated_3) def test_windows_colon(self): with support.swap_attr(server.os, 'path', ntpath): - path = self.handler.translate_path('c:c:c:foo/filename') + path = self.handler_1.translate_path('c:c:c:foo/filename') + path = path.replace(ntpath.sep, os.sep) + self.assertEqual(path, self.translated_1) + path = self.handler_2.translate_path('c:c:c:foo/filename') + path = path.replace(ntpath.sep, os.sep) + self.assertEqual(path, self.translated_2) + path = self.handler_3.translate_path('c:c:c:foo/filename') path = path.replace(ntpath.sep, os.sep) - self.assertEqual(path, self.translated) + self.assertEqual(path, self.translated_3) - path = self.handler.translate_path('\\c:../filename') + path = self.handler_1.translate_path('\\c:../filename') + path = path.replace(ntpath.sep, os.sep) + self.assertEqual(path, self.translated_1) + path = self.handler_2.translate_path('\\c:../filename') + path = path.replace(ntpath.sep, os.sep) + self.assertEqual(path, self.translated_2) + path = self.handler_3.translate_path('\\c:../filename') path = path.replace(ntpath.sep, os.sep) - self.assertEqual(path, self.translated) + self.assertEqual(path, self.translated_3) - path = self.handler.translate_path('c:\\c:..\\foo/filename') + path = self.handler_1.translate_path('c:\\c:..\\foo/filename') path = path.replace(ntpath.sep, os.sep) - self.assertEqual(path, self.translated) + self.assertEqual(path, self.translated_1) + path = self.handler_2.translate_path('c:\\c:..\\foo/filename') + path = path.replace(ntpath.sep, os.sep) + self.assertEqual(path, self.translated_2) + path = self.handler_3.translate_path('c:\\c:..\\foo/filename') + path = path.replace(ntpath.sep, os.sep) + self.assertEqual(path, self.translated_3) - path = self.handler.translate_path('c:c:foo\\c:c:bar/filename') + path = self.handler_1.translate_path('c:c:foo\\c:c:bar/filename') + path = path.replace(ntpath.sep, os.sep) + self.assertEqual(path, self.translated_1) + path = self.handler_2.translate_path('c:c:foo\\c:c:bar/filename') + path = path.replace(ntpath.sep, os.sep) + self.assertEqual(path, self.translated_2) + path = self.handler_3.translate_path('c:c:foo\\c:c:bar/filename') path = path.replace(ntpath.sep, os.sep) - self.assertEqual(path, self.translated) + self.assertEqual(path, self.translated_3) class MiscTestCase(unittest.TestCase): |