From 1b21033f218368f3307b487f15ee0c52860ccd2f Mon Sep 17 00:00:00 2001 From: Illia Volochii Date: Fri, 27 May 2022 22:50:43 +0300 Subject: [PATCH] gh-93296: test that urllib sets wrong `Content-Length` for pseudo files --- Lib/test/test_urllib2.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index 46a0ab1d83e60e..da9e6095b8c2ad 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -872,6 +872,29 @@ def test_file(self): self.assertEqual(req.type, "ftp") self.assertEqual(req.type == "ftp", ftp) + @unittest.skipUnless(sys.platform == "linux", "only relevant for Linux") + @unittest.expectedFailure + def test_special_file_system_file(self): + """ + Test that addinfo of a requested pseudo file /proc/cpuinfo is + correct. See gh-93296. + """ + url = "file:///proc/cpuinfo" + handler = urllib.request.FileHandler() + response = handler.file_open(Request(url)) + try: + data = response.read() + headers = response.info() + response_url = response.geturl() + finally: + response.close() + self.assertEqual(headers["Content-type"], "text/plain") + # A failure is expected on the next line, because st_size + # was used to determine the file size. st_size is 0 for + # /proc/cpuinfo despite it is not empty. + self.assertEqual(headers["Content-length"], str(len(data))) + self.assertEqual(response_url, url) + def test_http(self): h = urllib.request.AbstractHTTPHandler()