]> granicus.if.org Git - python/commitdiff
#17485: Delete the Content-Length header if the data attribute is deleted.
authorR David Murray <rdmurray@bitdance.com>
Wed, 20 Mar 2013 04:10:51 +0000 (00:10 -0400)
committerR David Murray <rdmurray@bitdance.com>
Wed, 20 Mar 2013 04:10:51 +0000 (00:10 -0400)
This is a follow on to issue 16464.  Original patch by Daniel Wozniak.

Lib/test/test_urllib2.py
Lib/urllib/request.py
Misc/ACKS
Misc/NEWS

index 3e19ecff0904c7f71826d69bd1cf5034c5ebe891..0e0572383d32acc80c08afda2ab1c4ee4b8ef032 100644 (file)
@@ -1488,11 +1488,20 @@ class RequestTests(unittest.TestCase):
     # if we change data we need to remove content-length header
     # (cause it's most probably calculated for previous value)
     def test_setting_data_should_remove_content_length(self):
-        self.assertFalse("Content-length" in self.get.unredirected_hdrs)
+        self.assertNotIn("Content-length", self.get.unredirected_hdrs)
         self.get.add_unredirected_header("Content-length", 42)
         self.assertEqual(42, self.get.unredirected_hdrs["Content-length"])
         self.get.data = "spam"
-        self.assertFalse("Content-length" in self.get.unredirected_hdrs)
+        self.assertNotIn("Content-length", self.get.unredirected_hdrs)
+
+    # issue 17485 same for deleting data.
+    def test_deleting_data_should_remove_content_length(self):
+        self.assertNotIn("Content-length", self.get.unredirected_hdrs)
+        self.get.data = 'foo'
+        self.get.add_unredirected_header("Content-length", 3)
+        self.assertEqual(3, self.get.unredirected_hdrs["Content-length"])
+        del self.get.data
+        self.assertNotIn("Content-length", self.get.unredirected_hdrs)
 
     def test_get_full_url(self):
         self.assertEqual("http://www.python.org/~jeremy/",
index 90731cb05932c1cfab992e259017fe896f7c6556..8b3cdf9d2cc78f385ed54594e0d8844b7cc48db8 100644 (file)
@@ -296,7 +296,7 @@ class Request:
 
     @data.deleter
     def data(self):
-        self._data = None
+        self.data = None
 
     def _parse(self):
         self.type, rest = splittype(self.full_url)
index 600e0bf03c5129c650080391d288c1e21191d801..21f2cd57f25f4812e8c27e748693c8d8cb0efa8c 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1341,6 +1341,7 @@ Steven Work
 Gordon Worley
 Darren Worrall
 Thomas Wouters
+Daniel Wozniak
 Heiko Wundram
 Doug Wyatt
 Robert Xiao
index e7c59b18b5ef3f8164af48bae9b38aa9c4013f0d..8e46c60e9ee2718d7dd28ca336a6693fca678c26 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -292,6 +292,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #17485: Also delete the Request Content-Length header if the data
+  attribute is deleted.  (Follow on to issue 16464).
+
 - Issue #15927: CVS now correctly parses escaped newlines and carriage
   when parsing with quoting turned off.