When user is passing params we need to make a copy

Fixes #517
This commit is contained in:
Honza Král
2017-01-17 03:10:50 +01:00
parent 5ecfc70a16
commit f38fa51fea
2 changed files with 18 additions and 1 deletions
+3 -1
View File
@@ -57,7 +57,9 @@ def query_params(*es_query_params):
def _wrapper(func): def _wrapper(func):
@wraps(func) @wraps(func)
def _wrapped(*args, **kwargs): def _wrapped(*args, **kwargs):
params = kwargs.pop('params', {}) params = {}
if 'params' in kwargs:
params = kwargs.pop('params').copy()
for p in es_query_params + GLOBAL_PARAMS: for p in es_query_params + GLOBAL_PARAMS:
if p in kwargs: if p in kwargs:
v = kwargs.pop(p) v = kwargs.pop(p)
@@ -54,6 +54,21 @@ class TestClient(ElasticsearchTestCase):
calls = self.assert_url_called('HEAD', '/') calls = self.assert_url_called('HEAD', '/')
self.assertEquals([({'request_timeout': .1}, None)], calls) self.assertEquals([({'request_timeout': .1}, None)], calls)
def test_params_is_copied_when(self):
rt = object()
params = dict(request_timeout=rt)
self.client.ping(params=params)
self.client.ping(params=params)
calls = self.assert_url_called('HEAD', '/', 2)
self.assertEquals(
[
({'request_timeout': rt}, None),
({'request_timeout': rt}, None)
],
calls
)
self.assertFalse(calls[0][0] is calls[1][0])
def test_from_in_search(self): def test_from_in_search(self):
self.client.search(index='i', doc_type='t', from_=10) self.client.search(index='i', doc_type='t', from_=10)
calls = self.assert_url_called('GET', '/i/t/_search') calls = self.assert_url_called('GET', '/i/t/_search')