]> granicus.if.org Git - python/commitdiff
merge 3.1 (#19435)
authorBenjamin Peterson <benjamin@python.org>
Wed, 30 Oct 2013 16:48:59 +0000 (12:48 -0400)
committerBenjamin Peterson <benjamin@python.org>
Wed, 30 Oct 2013 16:48:59 +0000 (12:48 -0400)
1  2 
Lib/http/server.py
Lib/test/test_httpservers.py
Misc/NEWS

Simple merge
index d71da1a83ddc8bfc52bceb9389613b975982bdbb,2f1324dada095dd87819235162badc52d314f25d..f8198f8ae3dc06b3323802e6335ab6595f6a4f56
@@@ -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.
          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)
  
              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:
  
      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})
diff --cc Misc/NEWS
Simple merge