aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/YouCompleteMe/third_party/requests-futures/test_requests_futures.py
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/YouCompleteMe/third_party/requests-futures/test_requests_futures.py')
-rw-r--r--vim/bundle/YouCompleteMe/third_party/requests-futures/test_requests_futures.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/vim/bundle/YouCompleteMe/third_party/requests-futures/test_requests_futures.py b/vim/bundle/YouCompleteMe/third_party/requests-futures/test_requests_futures.py
new file mode 100644
index 0000000..b41836e
--- /dev/null
+++ b/vim/bundle/YouCompleteMe/third_party/requests-futures/test_requests_futures.py
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""Tests for Requests."""
+
+from concurrent.futures import Future
+from requests import Response
+from os import environ
+from requests_futures.sessions import FuturesSession
+from unittest import TestCase, main
+
+HTTPBIN = environ.get('HTTPBIN_URL', 'http://httpbin.org/')
+
+def httpbin(*suffix):
+ """Returns url for HTTPBIN resource."""
+ return HTTPBIN + '/'.join(suffix)
+
+
+class RequestsTestCase(TestCase):
+
+ def test_futures_session(self):
+ # basic futures get
+ sess = FuturesSession()
+ future = sess.get(httpbin('get'))
+ self.assertIsInstance(future, Future)
+ resp = future.result()
+ self.assertIsInstance(resp, Response)
+ self.assertEqual(200, resp.status_code)
+
+ # non-200, 404
+ future = sess.get(httpbin('status/404'))
+ resp = future.result()
+ self.assertEqual(404, resp.status_code)
+
+ def cb(s, r):
+ self.assertIsInstance(s, FuturesSession)
+ self.assertIsInstance(r, Response)
+ # add the parsed json data to the response
+ r.data = r.json()
+
+ future = sess.get(httpbin('get'), background_callback=cb)
+ # this should block until complete
+ resp = future.result()
+ self.assertEqual(200, resp.status_code)
+ # make sure the callback was invoked
+ self.assertTrue(hasattr(resp, 'data'))
+
+ def rasing_cb(s, r):
+ raise Exception('boom')
+
+ future = sess.get(httpbin('get'), background_callback=rasing_cb)
+ with self.assertRaises(Exception) as cm:
+ resp = future.result()
+ self.assertEqual('boom', cm.exception.args[0])
+
+ def test_max_workers(self):
+ """ Tests the `max_workers` shortcut. """
+ from concurrent.futures import ThreadPoolExecutor
+ session = FuturesSession()
+ self.assertEqual(session.executor._max_workers, 2)
+ session = FuturesSession(max_workers=5)
+ self.assertEqual(session.executor._max_workers, 5)
+ session = FuturesSession(executor=ThreadPoolExecutor(max_workers=10))
+ self.assertEqual(session.executor._max_workers, 10)
+ session = FuturesSession(executor=ThreadPoolExecutor(max_workers=10),
+ max_workers=5)
+ self.assertEqual(session.executor._max_workers, 10)
+
+ def test_redirect(self):
+ """ Tests for the ability to cleanly handle redirects. """
+ sess = FuturesSession()
+ future = sess.get(httpbin('redirect-to?url=get'))
+ self.assertIsInstance(future, Future)
+ resp = future.result()
+ self.assertIsInstance(resp, Response)
+ self.assertEqual(200, resp.status_code)
+
+ future = sess.get(httpbin('redirect-to?url=status/404'))
+ resp = future.result()
+ self.assertEqual(404, resp.status_code)
+
+
+if __name__ == '__main__':
+ main()