From be9acfad9008685a6ea6f93162f4ab78e46a6a92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Honza=20Kr=C3=A1l?= Date: Wed, 11 Dec 2013 14:41:42 +0100 Subject: [PATCH] Make sure we handle quotes correctly in the trace logger --- elasticsearch/connection/base.py | 2 +- test_elasticsearch/test_connection.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/elasticsearch/connection/base.py b/elasticsearch/connection/base.py index bbc3a710..7fffaf78 100644 --- a/elasticsearch/connection/base.py +++ b/elasticsearch/connection/base.py @@ -39,7 +39,7 @@ class Connection(object): def _pretty_json(data): # pretty JSON in tracer curl logs try: - return json.dumps(json.loads(data), sort_keys=True, indent=2, separators=(',', ': ')) + return json.dumps(json.loads(data), sort_keys=True, indent=2, separators=(',', ': ')).replace("'", r'\u0027') except (ValueError, TypeError): # non-json data or a bulk request return data diff --git a/test_elasticsearch/test_connection.py b/test_elasticsearch/test_connection.py index e63bd4fb..e940f34e 100644 --- a/test_elasticsearch/test_connection.py +++ b/test_elasticsearch/test_connection.py @@ -128,19 +128,19 @@ class TestRequestsConnection(TestCase): @patch('elasticsearch.connection.base.tracer') @patch('elasticsearch.connection.base.logger') def test_success_logs_and_traces(self, logger, tracer): - con = self._get_mock_connection(response_body='{"answer": 42}') - status, data = con.perform_request('GET', '/', {'param': 42}, '{}') + con = self._get_mock_connection(response_body='''{"answer": "that's it!"}''') + status, data = con.perform_request('GET', '/', {'param': 42}, '''{"question": "what's that?"}''') # trace request self.assertEquals(1, tracer.info.call_count) self.assertEquals( - "curl -XGET 'http://localhost:9200/?pretty¶m=42' -d '{}'", + """curl -XGET 'http://localhost:9200/?pretty¶m=42' -d '{\n "question": "what\\u0027s that?"\n}'""", tracer.info.call_args[0][0] % tracer.info.call_args[0][1:] ) # trace response self.assertEquals(1, tracer.debug.call_count) self.assertTrue(re.match( - '#\[200\] \(0.[0-9]{3}s\)\n#\{\n# "answer": 42\n#\}', + '#\[200\] \(0.[0-9]{3}s\)\n#\{\n# "answer": "that\\\\u0027s it!"\n#\}', tracer.debug.call_args[0][0] % tracer.debug.call_args[0][1:] )) @@ -154,11 +154,11 @@ class TestRequestsConnection(TestCase): self.assertEquals(2, logger.debug.call_count) req, resp = logger.debug.call_args_list self.assertEquals( - '> {}', + '> {"question": "what\'s that?"}', req[0][0] % req[0][1:] ) self.assertEquals( - '< {"answer": 42}', + '< {"answer": "that\'s it!"}', resp[0][0] % resp[0][1:] )