From efdf681d7c9721c2a20457de8489edefff689512 Mon Sep 17 00:00:00 2001 From: Oleg Pudeyev Date: Wed, 21 Sep 2016 09:57:04 -0400 Subject: [PATCH] Fix Curl reuse bug --- python/curl/__init__.py | 2 ++ tests/high_level_curl_test.py | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 tests/high_level_curl_test.py diff --git a/python/curl/__init__.py b/python/curl/__init__.py index fae8cd5c1..f92687d64 100644 --- a/python/curl/__init__.py +++ b/python/curl/__init__.py @@ -83,6 +83,8 @@ def __request(self, relative_url=None): if relative_url: self.set_option(pycurl.URL, urljoin(self.base_url, relative_url)) self.payload = None + self.payload_io.seek(0) + self.payload_io.truncate() self.hdr = "" self.handle.perform() self.payload = self.payload_io.getvalue() diff --git a/tests/high_level_curl_test.py b/tests/high_level_curl_test.py new file mode 100644 index 000000000..32e5ef1c7 --- /dev/null +++ b/tests/high_level_curl_test.py @@ -0,0 +1,25 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- +# vi:ts=4:et + +# uses the high level interface +import curl +import unittest + +from . import appmanager + +setup_module, teardown_module = appmanager.setup(('app', 8380)) + +class RelativeUrlTest(unittest.TestCase): + def setUp(self): + self.curl = curl.Curl('http://localhost:8380/') + + def tearDown(self): + self.curl.close() + + def test_reuse(self): + result = self.curl.get('/success') + self.assertEqual('success', result) + + result = self.curl.get('/success') + self.assertEqual('success', result)