Skip to content

Commit a112999

Browse files
DanielDaniel
Daniel
authored and
Daniel
committed
Add test case and six.binary_type
1 parent 3bf2b74 commit a112999

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

debug_toolbar/panels/sql/tracking.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from time import time
77

88
from django.utils import six
9-
from django.utils.encoding import force_text, DjangoUnicodeDecodeError
9+
from django.utils.encoding import DjangoUnicodeDecodeError, force_text
1010

1111
from debug_toolbar import settings as dt_settings
1212
from debug_toolbar.utils import get_stack, get_template_info, tidy_stacktrace
@@ -88,6 +88,8 @@ def _quote_expr(self, element):
8888
return "'%s'" % force_text(element).replace("'", "''")
8989
except DjangoUnicodeDecodeError:
9090
return repr(element)
91+
elif isinstance(element, six.binary_type):
92+
return '(binary data)'
9193
else:
9294
return repr(element)
9395

tests/panels/test_sql.py

+12
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@ def test_param_conversion(self):
122122
'["2017-12-22 16:07:01"]'
123123
))
124124

125+
@unittest.skipUnless(connection.vendor not in ('sqlite', 'postgresql'), '')
126+
def test_binary_param_force_text(self):
127+
self.assertEqual(len(self.panel._queries), 0)
128+
129+
with connection.cursor() as cursor:
130+
cursor.execute("SELECT * FROM auth_user WHERE username = %s", [b'\xff'])
131+
132+
self.assertEqual(len(self.panel._queries), 1)
133+
134+
self.panel.process_response(self.request, self.response)
135+
self.panel.generate_stats(self.request, self.response)
136+
125137
@unittest.skipUnless(connection.vendor != 'sqlite',
126138
'Test invalid for SQLite')
127139
def test_raw_query_param_conversion(self):

0 commit comments

Comments
 (0)