[Python-checkins] cpython (3.5): Issue #26609: Fix HTTP server tests to request an absolute URL path

martin.panter python-checkins at python.org
Sat Apr 9 09:44:35 EDT 2016


https://hg.python.org/cpython/rev/0e19f421dc9e
changeset: 100890:0e19f421dc9e
branch: 3.5
parent: 100888:60ac28b612af
user: Martin Panter <vadmium+py at gmail.com>
date: Sat Apr 09 04:56:10 2016 +0000
summary:
 Issue #26609: Fix HTTP server tests to request an absolute URL path
files:
 Lib/test/test_httpservers.py | 41 ++++++++++++++++-------
 1 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py
--- a/Lib/test/test_httpservers.py
+++ b/Lib/test/test_httpservers.py
@@ -284,6 +284,7 @@
 self.data = b'We are the knights who say Ni!'
 self.tempdir = tempfile.mkdtemp(dir=basetempdir)
 self.tempdir_name = os.path.basename(self.tempdir)
+ self.base_url = '/' + self.tempdir_name
 with open(os.path.join(self.tempdir, 'test'), 'wb') as temp:
 temp.write(self.data)
 
@@ -330,7 +331,7 @@
 filename = os.fsdecode(support.TESTFN_UNDECODABLE) + '.txt'
 with open(os.path.join(self.tempdir, filename), 'wb') as f:
 f.write(support.TESTFN_UNDECODABLE)
- response = self.request(self.tempdir_name + '/')
+ response = self.request(self.base_url + '/')
 if sys.platform == 'darwin':
 # On Mac OS the HFS+ filesystem replaces bytes that aren't valid
 # UTF-8 into a percent-encoded value.
@@ -344,27 +345,27 @@
 .encode(enc, 'surrogateescape'), body)
 self.assertIn(('>%s<' % html.escape(filename))
 .encode(enc, 'surrogateescape'), body)
- response = self.request(self.tempdir_name + '/' + quotedname)
+ response = self.request(self.base_url + '/' + quotedname)
 self.check_status_and_reason(response, HTTPStatus.OK,
 data=support.TESTFN_UNDECODABLE)
 
 def test_get(self):
 #constructs the path relative to the root directory of the HTTPServer
- response = self.request(self.tempdir_name + '/test')
+ response = self.request(self.base_url + '/test')
 self.check_status_and_reason(response, HTTPStatus.OK, data=self.data)
 # check for trailing "/" which should return 404. See Issue17324
- response = self.request(self.tempdir_name + '/test/')
+ response = self.request(self.base_url + '/test/')
 self.check_status_and_reason(response, HTTPStatus.NOT_FOUND)
- response = self.request(self.tempdir_name + '/')
+ response = self.request(self.base_url + '/')
 self.check_status_and_reason(response, HTTPStatus.OK)
- response = self.request(self.tempdir_name)
+ response = self.request(self.base_url)
 self.check_status_and_reason(response, HTTPStatus.MOVED_PERMANENTLY)
- response = self.request(self.tempdir_name + '/?hi=2')
+ response = self.request(self.base_url + '/?hi=2')
 self.check_status_and_reason(response, HTTPStatus.OK)
- response = self.request(self.tempdir_name + '?hi=1')
+ response = self.request(self.base_url + '?hi=1')
 self.check_status_and_reason(response, HTTPStatus.MOVED_PERMANENTLY)
 self.assertEqual(response.getheader("Location"),
- self.tempdir_name + "/?hi=1")
+ self.base_url + "/?hi=1")
 response = self.request('/ThisDoesNotExist')
 self.check_status_and_reason(response, HTTPStatus.NOT_FOUND)
 response = self.request('/' + 'ThisDoesNotExist' + '/')
@@ -373,7 +374,7 @@
 data = b"Dummy index file\r\n"
 with open(os.path.join(self.tempdir_name, 'index.html'), 'wb') as f:
 f.write(data)
- response = self.request('/' + self.tempdir_name + '/')
+ response = self.request(self.base_url + '/')
 self.check_status_and_reason(response, HTTPStatus.OK, data)
 
 # chmod() doesn't work as expected on Windows, and filesystem
@@ -381,14 +382,14 @@
 if os.name == 'posix' and os.geteuid() != 0:
 os.chmod(self.tempdir, 0)
 try:
- response = self.request(self.tempdir_name + '/')
+ response = self.request(self.base_url + '/')
 self.check_status_and_reason(response, HTTPStatus.NOT_FOUND)
 finally:
 os.chmod(self.tempdir, 0o755)
 
 def test_head(self):
 response = self.request(
- self.tempdir_name + '/test', method='HEAD')
+ self.base_url + '/test', method='HEAD')
 self.check_status_and_reason(response, HTTPStatus.OK)
 self.assertEqual(response.getheader('content-length'),
 str(len(self.data)))
@@ -404,6 +405,22 @@
 response = self.request('/', method='GETs')
 self.check_status_and_reason(response, HTTPStatus.NOT_IMPLEMENTED)
 
+ def test_path_without_leading_slash(self):
+ response = self.request(self.tempdir_name + '/test')
+ self.check_status_and_reason(response, HTTPStatus.OK, data=self.data)
+ response = self.request(self.tempdir_name + '/test/')
+ self.check_status_and_reason(response, HTTPStatus.NOT_FOUND)
+ response = self.request(self.tempdir_name + '/')
+ self.check_status_and_reason(response, HTTPStatus.OK)
+ response = self.request(self.tempdir_name)
+ self.check_status_and_reason(response, HTTPStatus.MOVED_PERMANENTLY)
+ response = self.request(self.tempdir_name + '/?hi=2')
+ self.check_status_and_reason(response, HTTPStatus.OK)
+ response = self.request(self.tempdir_name + '?hi=1')
+ self.check_status_and_reason(response, HTTPStatus.MOVED_PERMANENTLY)
+ self.assertEqual(response.getheader("Location"),
+ self.tempdir_name + "/?hi=1")
+
 
 cgi_file1 = """\
 #!%s
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /