diff --git a/.travis.yml b/.travis.yml
index 534fffdaf..4fe8630bc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -37,6 +37,10 @@ matrix:
env: TOXENV=postgresql
addons:
postgresql: "9.5"
+ - python: 3.7
+ env: TOXENV=mariadb
+ addons:
+ mariadb: "10.3"
- env: TOXENV=flake8
- python: 3.7
env: TOXENV=style
diff --git a/tests/models.py b/tests/models.py
index 93f860bb1..ed6dbc1bd 100644
--- a/tests/models.py
+++ b/tests/models.py
@@ -2,9 +2,14 @@
from __future__ import absolute_import, unicode_literals
+from django.db import models
from django.utils import six
class NonAsciiRepr(object):
def __repr__(self):
return "nôt åscíì" if six.PY3 else "nôt åscíì".encode("utf-8")
+
+
+class Binary(models.Model):
+ field = models.BinaryField()
diff --git a/tests/panels/test_sql.py b/tests/panels/test_sql.py
index 4092cfbc1..81fd94e61 100644
--- a/tests/panels/test_sql.py
+++ b/tests/panels/test_sql.py
@@ -113,23 +113,26 @@ def test_param_conversion(self):
('["Foo", true, false]', "[10, 1]", '["2017-12-22 16:07:01"]'),
)
- @unittest.skipIf(
- connection.vendor in ("sqlite", "postgresql"),
- "Mixing bytestrings and text is not allowed on PostgreSQL and SQLite",
- )
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"])
+ cursor.execute(
+ "SELECT * FROM tests_binary WHERE field = %s",
+ [connection.Database.Binary(b"\xff")],
+ )
self.panel.process_response(self.request, self.response)
self.panel.generate_stats(self.request, self.response)
self.assertEqual(len(self.panel._queries), 1)
- self.assertEqual(
- self.panel._queries[0][1]["sql"],
- "SELECT * FROM auth_user WHERE username = '\ufffd'",
+ self.assertTrue(
+ self.panel._queries[0][1]["sql"].startswith(
+ (
+ "SELECT * FROM"
+ " tests_binary WHERE field = "
+ )
+ )
)
@unittest.skipUnless(connection.vendor != "sqlite", "Test invalid for SQLite")
diff --git a/tests/settings.py b/tests/settings.py
index e4d865f03..7bdc3ade8 100644
--- a/tests/settings.py
+++ b/tests/settings.py
@@ -85,15 +85,8 @@
"default": {"ENGINE": "django.db.backends.postgresql", "NAME": "debug-toolbar"}
}
elif os.environ.get("DJANGO_DATABASE_ENGINE") == "mysql":
- # % mysql
- # CREATE USER 'debug_toolbar'@'localhost' IDENTIFIED BY '';
- # GRANT ALL PRIVILEGES ON debug_toolbar.* TO 'test_debug_toolbar'@'localhost';
DATABASES = {
- "default": {
- "ENGINE": "django.db.backends.mysql",
- "NAME": "debug_toolbar",
- "USER": "debug_toolbar",
- }
+ "default": {"ENGINE": "django.db.backends.mysql", "NAME": "debug_toolbar"}
}
else:
DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3"}}
diff --git a/tox.ini b/tox.ini
index b2c323e7d..d14b7f71a 100644
--- a/tox.ini
+++ b/tox.ini
@@ -5,6 +5,7 @@ envlist =
py{35,36,37}-dj21
py{35,36,37}-djmaster
postgresql,
+ mariadb,
flake8,
style,
readme
@@ -42,6 +43,22 @@ whitelist_externals = make
pip_pre = True
commands = make coverage TEST_ARGS='{posargs:tests}'
+[testenv:mariadb]
+deps =
+ Django>=2.1,<2.2
+ coverage
+ django_jinja
+ html5lib
+ mysqlclient
+ selenium<4.0
+ sqlparse
+setenv =
+ PYTHONPATH = {toxinidir}
+ DJANGO_DATABASE_ENGINE = mysql
+whitelist_externals = make
+pip_pre = True
+commands = make coverage TEST_ARGS='{posargs:tests}'
+
[testenv:flake8]
basepython = python3
commands = make flake8