Skip to content

Commit

Permalink
Add test case and six.binary_type
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel authored and Daniel committed Oct 25, 2018
1 parent 3bf2b74 commit a112999
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
4 changes: 3 additions & 1 deletion debug_toolbar/panels/sql/tracking.py
Expand Up @@ -6,7 +6,7 @@
from time import time

from django.utils import six
from django.utils.encoding import force_text, DjangoUnicodeDecodeError
from django.utils.encoding import DjangoUnicodeDecodeError, force_text

from debug_toolbar import settings as dt_settings
from debug_toolbar.utils import get_stack, get_template_info, tidy_stacktrace
Expand Down Expand Up @@ -88,6 +88,8 @@ def _quote_expr(self, element):
return "'%s'" % force_text(element).replace("'", "''")
except DjangoUnicodeDecodeError:
return repr(element)
elif isinstance(element, six.binary_type):
return '(binary data)'
else:
return repr(element)

Expand Down
12 changes: 12 additions & 0 deletions tests/panels/test_sql.py
Expand Up @@ -122,6 +122,18 @@ def test_param_conversion(self):
'["2017-12-22 16:07:01"]'
))

@unittest.skipUnless(connection.vendor not in ('sqlite', 'postgresql'), '')
def test_binary_param_force_text(self):
self.assertEqual(len(self.panel._queries), 0)

with connection.cursor() as cursor:
cursor.execute("SELECT * FROM auth_user WHERE username = %s", [b'\xff'])

self.assertEqual(len(self.panel._queries), 1)

self.panel.process_response(self.request, self.response)
self.panel.generate_stats(self.request, self.response)

@unittest.skipUnless(connection.vendor != 'sqlite',
'Test invalid for SQLite')
def test_raw_query_param_conversion(self):
Expand Down

0 comments on commit a112999

Please sign in to comment.