From: Benjamin Peterson Date: Wed, 30 Oct 2013 16:48:59 +0000 (-0400) Subject: merge 3.1 (#19435) X-Git-Tag: v3.3.4rc1~71^2~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=35aca89617c14e0a15f728e4991eac8c01ccf170;p=python merge 3.1 (#19435) --- 35aca89617c14e0a15f728e4991eac8c01ccf170 diff --cc Lib/test/test_httpservers.py index d71da1a83d,2f1324dada..f8198f8ae3 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@@ -322,8 -379,6 +322,9 @@@ class CGIHTTPServerTestCase(BaseTestCas self.parent_dir = tempfile.mkdtemp() self.cgi_dir = os.path.join(self.parent_dir, 'cgi-bin') os.mkdir(self.cgi_dir) ++ self.nocgi_path = None + self.file1_path = None + self.file2_path = None # The shebang line should be pure ASCII: use symlink if possible. # See issue #7668. @@@ -333,17 -388,13 +334,22 @@@ else: self.pythonexe = sys.executable + try: + # The python executable path is written as the first line of the + # CGI Python script. The encoding cookie cannot be used, and so the + # path should be encodable to the default script encoding (utf-8) + self.pythonexe.encode('utf-8') + except UnicodeEncodeError: + self.tearDown() + self.skipTest("Python executable path is not encodable to utf-8") + + self.nocgi_path = os.path.join(self.parent_dir, 'nocgi.py') + with open(self.nocgi_path, 'w') as fp: + fp.write(cgi_file1 % self.pythonexe) + os.chmod(self.nocgi_path, 0o777) + self.file1_path = os.path.join(self.cgi_dir, 'file1.py') - with open(self.file1_path, 'w') as file1: + with open(self.file1_path, 'w', encoding='utf-8') as file1: file1.write(cgi_file1 % self.pythonexe) os.chmod(self.file1_path, 0o777) @@@ -359,10 -411,9 +365,12 @@@ os.chdir(self.cwd) if self.pythonexe != sys.executable: os.remove(self.pythonexe) - os.remove(self.nocgi_path) - os.remove(self.file1_path) - os.remove(self.file2_path) ++ if self.nocgi_path: ++ os.remove(self.nocgi_path) + if self.file1_path: + os.remove(self.file1_path) + if self.file2_path: + os.remove(self.file2_path) os.rmdir(self.cgi_dir) os.rmdir(self.parent_dir) finally: @@@ -412,9 -460,13 +420,13 @@@ def test_headers_and_content(self): res = self.request('/cgi-bin/file1.py') - self.assertEqual((b'Hello World\n', 'text/html', 200), \ - (res.read(), res.getheader('Content-type'), res.status)) + self.assertEqual((b'Hello World' + self.linesep, 'text/html', 200), + (res.read(), res.getheader('Content-type'), res.status)) + def test_issue19435(self): + res = self.request('///////////nocgi.py/../cgi-bin/nothere.sh') + self.assertEqual(res.status, 404) + def test_post(self): params = urllib.parse.urlencode( {'spam' : 1, 'eggs' : 'python', 'bacon' : 123456})