From 1f04294eb5904f639cdad1de47493691f9f75a79 Mon Sep 17 00:00:00 2001 From: Bertrand Bordage Date: Sat, 3 Jun 2017 01:53:56 +0200 Subject: [PATCH] Updates tests for Django 1.11. --- .travis.yml | 600 ++++++++++++++++---------------- cachalot/tests/api.py | 18 +- cachalot/tests/multi_db.py | 2 +- cachalot/tests/read.py | 33 +- cachalot/tests/settings.py | 2 +- cachalot/tests/thread_safety.py | 2 +- cachalot/tests/transaction.py | 2 +- cachalot/tests/write.py | 12 +- travis-matrix.py | 4 +- 9 files changed, 340 insertions(+), 335 deletions(-) diff --git a/.travis.yml b/.travis.yml index d63863e..302f848 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,306 +11,306 @@ cache: pip matrix: include: - - python: 2.7 - env: TOXENV=py2.7-django1.8-sqlite3-redis - - python: 2.7 - env: TOXENV=py2.7-django1.8-sqlite3-memcached - - python: 2.7 - env: TOXENV=py2.7-django1.8-sqlite3-pylibmc - - python: 2.7 - env: TOXENV=py2.7-django1.8-sqlite3-locmem - - python: 2.7 - env: TOXENV=py2.7-django1.8-sqlite3-filebased - - python: 2.7 - env: TOXENV=py2.7-django1.8-postgresql-redis - - python: 2.7 - env: TOXENV=py2.7-django1.8-postgresql-memcached - - python: 2.7 - env: TOXENV=py2.7-django1.8-postgresql-pylibmc - - python: 2.7 - env: TOXENV=py2.7-django1.8-postgresql-locmem - - python: 2.7 - env: TOXENV=py2.7-django1.8-postgresql-filebased - - python: 2.7 - env: TOXENV=py2.7-django1.8-mysql-redis - - python: 2.7 - env: TOXENV=py2.7-django1.8-mysql-memcached - - python: 2.7 - env: TOXENV=py2.7-django1.8-mysql-pylibmc - - python: 2.7 - env: TOXENV=py2.7-django1.8-mysql-locmem - - python: 2.7 - env: TOXENV=py2.7-django1.8-mysql-filebased - - python: 2.7 - env: TOXENV=py2.7-django1.10-sqlite3-redis - - python: 2.7 - env: TOXENV=py2.7-django1.10-sqlite3-memcached - - python: 2.7 - env: TOXENV=py2.7-django1.10-sqlite3-pylibmc - - python: 2.7 - env: TOXENV=py2.7-django1.10-sqlite3-locmem - - python: 2.7 - env: TOXENV=py2.7-django1.10-sqlite3-filebased - - python: 2.7 - env: TOXENV=py2.7-django1.10-postgresql-redis - - python: 2.7 - env: TOXENV=py2.7-django1.10-postgresql-memcached - - python: 2.7 - env: TOXENV=py2.7-django1.10-postgresql-pylibmc - - python: 2.7 - env: TOXENV=py2.7-django1.10-postgresql-locmem - - python: 2.7 - env: TOXENV=py2.7-django1.10-postgresql-filebased - - python: 2.7 - env: TOXENV=py2.7-django1.10-mysql-redis - - python: 2.7 - env: TOXENV=py2.7-django1.10-mysql-memcached - - python: 2.7 - env: TOXENV=py2.7-django1.10-mysql-pylibmc - - python: 2.7 - env: TOXENV=py2.7-django1.10-mysql-locmem - - python: 2.7 - env: TOXENV=py2.7-django1.10-mysql-filebased - - python: 2.7 - env: TOXENV=py2.7-django1.11-sqlite3-redis - - python: 2.7 - env: TOXENV=py2.7-django1.11-sqlite3-memcached - - python: 2.7 - env: TOXENV=py2.7-django1.11-sqlite3-pylibmc - - python: 2.7 - env: TOXENV=py2.7-django1.11-sqlite3-locmem - - python: 2.7 - env: TOXENV=py2.7-django1.11-sqlite3-filebased - - python: 2.7 - env: TOXENV=py2.7-django1.11-postgresql-redis - - python: 2.7 - env: TOXENV=py2.7-django1.11-postgresql-memcached - - python: 2.7 - env: TOXENV=py2.7-django1.11-postgresql-pylibmc - - python: 2.7 - env: TOXENV=py2.7-django1.11-postgresql-locmem - - python: 2.7 - env: TOXENV=py2.7-django1.11-postgresql-filebased - - python: 2.7 - env: TOXENV=py2.7-django1.11-mysql-redis - - python: 2.7 - env: TOXENV=py2.7-django1.11-mysql-memcached - - python: 2.7 - env: TOXENV=py2.7-django1.11-mysql-pylibmc - - python: 2.7 - env: TOXENV=py2.7-django1.11-mysql-locmem - - python: 2.7 - env: TOXENV=py2.7-django1.11-mysql-filebased - - python: 3.4 - env: TOXENV=py3.4-django1.8-sqlite3-redis - - python: 3.4 - env: TOXENV=py3.4-django1.8-sqlite3-memcached - - python: 3.4 - env: TOXENV=py3.4-django1.8-sqlite3-pylibmc - - python: 3.4 - env: TOXENV=py3.4-django1.8-sqlite3-locmem - - python: 3.4 - env: TOXENV=py3.4-django1.8-sqlite3-filebased - - python: 3.4 - env: TOXENV=py3.4-django1.8-postgresql-redis - - python: 3.4 - env: TOXENV=py3.4-django1.8-postgresql-memcached - - python: 3.4 - env: TOXENV=py3.4-django1.8-postgresql-pylibmc - - python: 3.4 - env: TOXENV=py3.4-django1.8-postgresql-locmem - - python: 3.4 - env: TOXENV=py3.4-django1.8-postgresql-filebased - - python: 3.4 - env: TOXENV=py3.4-django1.8-mysql-redis - - python: 3.4 - env: TOXENV=py3.4-django1.8-mysql-memcached - - python: 3.4 - env: TOXENV=py3.4-django1.8-mysql-pylibmc - - python: 3.4 - env: TOXENV=py3.4-django1.8-mysql-locmem - - python: 3.4 - env: TOXENV=py3.4-django1.8-mysql-filebased - - python: 3.4 - env: TOXENV=py3.4-django1.10-sqlite3-redis - - python: 3.4 - env: TOXENV=py3.4-django1.10-sqlite3-memcached - - python: 3.4 - env: TOXENV=py3.4-django1.10-sqlite3-pylibmc - - python: 3.4 - env: TOXENV=py3.4-django1.10-sqlite3-locmem - - python: 3.4 - env: TOXENV=py3.4-django1.10-sqlite3-filebased - - python: 3.4 - env: TOXENV=py3.4-django1.10-postgresql-redis - - python: 3.4 - env: TOXENV=py3.4-django1.10-postgresql-memcached - - python: 3.4 - env: TOXENV=py3.4-django1.10-postgresql-pylibmc - - python: 3.4 - env: TOXENV=py3.4-django1.10-postgresql-locmem - - python: 3.4 - env: TOXENV=py3.4-django1.10-postgresql-filebased - - python: 3.4 - env: TOXENV=py3.4-django1.10-mysql-redis - - python: 3.4 - env: TOXENV=py3.4-django1.10-mysql-memcached - - python: 3.4 - env: TOXENV=py3.4-django1.10-mysql-pylibmc - - python: 3.4 - env: TOXENV=py3.4-django1.10-mysql-locmem - - python: 3.4 - env: TOXENV=py3.4-django1.10-mysql-filebased - - python: 3.4 - env: TOXENV=py3.4-django1.11-sqlite3-redis - - python: 3.4 - env: TOXENV=py3.4-django1.11-sqlite3-memcached - - python: 3.4 - env: TOXENV=py3.4-django1.11-sqlite3-pylibmc - - python: 3.4 - env: TOXENV=py3.4-django1.11-sqlite3-locmem - - python: 3.4 - env: TOXENV=py3.4-django1.11-sqlite3-filebased - - python: 3.4 - env: TOXENV=py3.4-django1.11-postgresql-redis - - python: 3.4 - env: TOXENV=py3.4-django1.11-postgresql-memcached - - python: 3.4 - env: TOXENV=py3.4-django1.11-postgresql-pylibmc - - python: 3.4 - env: TOXENV=py3.4-django1.11-postgresql-locmem - - python: 3.4 - env: TOXENV=py3.4-django1.11-postgresql-filebased - - python: 3.4 - env: TOXENV=py3.4-django1.11-mysql-redis - - python: 3.4 - env: TOXENV=py3.4-django1.11-mysql-memcached - - python: 3.4 - env: TOXENV=py3.4-django1.11-mysql-pylibmc - - python: 3.4 - env: TOXENV=py3.4-django1.11-mysql-locmem - - python: 3.4 - env: TOXENV=py3.4-django1.11-mysql-filebased - - python: 3.5 - env: TOXENV=py3.5-django1.8-sqlite3-redis - - python: 3.5 - env: TOXENV=py3.5-django1.8-sqlite3-memcached - - python: 3.5 - env: TOXENV=py3.5-django1.8-sqlite3-pylibmc - - python: 3.5 - env: TOXENV=py3.5-django1.8-sqlite3-locmem - - python: 3.5 - env: TOXENV=py3.5-django1.8-sqlite3-filebased - - python: 3.5 - env: TOXENV=py3.5-django1.8-postgresql-redis - - python: 3.5 - env: TOXENV=py3.5-django1.8-postgresql-memcached - - python: 3.5 - env: TOXENV=py3.5-django1.8-postgresql-pylibmc - - python: 3.5 - env: TOXENV=py3.5-django1.8-postgresql-locmem - - python: 3.5 - env: TOXENV=py3.5-django1.8-postgresql-filebased - - python: 3.5 - env: TOXENV=py3.5-django1.8-mysql-redis - - python: 3.5 - env: TOXENV=py3.5-django1.8-mysql-memcached - - python: 3.5 - env: TOXENV=py3.5-django1.8-mysql-pylibmc - - python: 3.5 - env: TOXENV=py3.5-django1.8-mysql-locmem - - python: 3.5 - env: TOXENV=py3.5-django1.8-mysql-filebased - - python: 3.5 - env: TOXENV=py3.5-django1.10-sqlite3-redis - - python: 3.5 - env: TOXENV=py3.5-django1.10-sqlite3-memcached - - python: 3.5 - env: TOXENV=py3.5-django1.10-sqlite3-pylibmc - - python: 3.5 - env: TOXENV=py3.5-django1.10-sqlite3-locmem - - python: 3.5 - env: TOXENV=py3.5-django1.10-sqlite3-filebased - - python: 3.5 - env: TOXENV=py3.5-django1.10-postgresql-redis - - python: 3.5 - env: TOXENV=py3.5-django1.10-postgresql-memcached - - python: 3.5 - env: TOXENV=py3.5-django1.10-postgresql-pylibmc - - python: 3.5 - env: TOXENV=py3.5-django1.10-postgresql-locmem - - python: 3.5 - env: TOXENV=py3.5-django1.10-postgresql-filebased - - python: 3.5 - env: TOXENV=py3.5-django1.10-mysql-redis - - python: 3.5 - env: TOXENV=py3.5-django1.10-mysql-memcached - - python: 3.5 - env: TOXENV=py3.5-django1.10-mysql-pylibmc - - python: 3.5 - env: TOXENV=py3.5-django1.10-mysql-locmem - - python: 3.5 - env: TOXENV=py3.5-django1.10-mysql-filebased - - python: 3.5 - env: TOXENV=py3.5-django1.11-sqlite3-redis - - python: 3.5 - env: TOXENV=py3.5-django1.11-sqlite3-memcached - - python: 3.5 - env: TOXENV=py3.5-django1.11-sqlite3-pylibmc - - python: 3.5 - env: TOXENV=py3.5-django1.11-sqlite3-locmem - - python: 3.5 - env: TOXENV=py3.5-django1.11-sqlite3-filebased - - python: 3.5 - env: TOXENV=py3.5-django1.11-postgresql-redis - - python: 3.5 - env: TOXENV=py3.5-django1.11-postgresql-memcached - - python: 3.5 - env: TOXENV=py3.5-django1.11-postgresql-pylibmc - - python: 3.5 - env: TOXENV=py3.5-django1.11-postgresql-locmem - - python: 3.5 - env: TOXENV=py3.5-django1.11-postgresql-filebased - - python: 3.5 - env: TOXENV=py3.5-django1.11-mysql-redis - - python: 3.5 - env: TOXENV=py3.5-django1.11-mysql-memcached - - python: 3.5 - env: TOXENV=py3.5-django1.11-mysql-pylibmc - - python: 3.5 - env: TOXENV=py3.5-django1.11-mysql-locmem - - python: 3.5 - env: TOXENV=py3.5-django1.11-mysql-filebased - - python: 3.6 - env: TOXENV=py3.6-django1.11-sqlite3-redis - - python: 3.6 - env: TOXENV=py3.6-django1.11-sqlite3-memcached - - python: 3.6 - env: TOXENV=py3.6-django1.11-sqlite3-pylibmc - - python: 3.6 - env: TOXENV=py3.6-django1.11-sqlite3-locmem - - python: 3.6 - env: TOXENV=py3.6-django1.11-sqlite3-filebased - - python: 3.6 - env: TOXENV=py3.6-django1.11-postgresql-redis - - python: 3.6 - env: TOXENV=py3.6-django1.11-postgresql-memcached - - python: 3.6 - env: TOXENV=py3.6-django1.11-postgresql-pylibmc - - python: 3.6 - env: TOXENV=py3.6-django1.11-postgresql-locmem - - python: 3.6 - env: TOXENV=py3.6-django1.11-postgresql-filebased - - python: 3.6 - env: TOXENV=py3.6-django1.11-mysql-redis - - python: 3.6 - env: TOXENV=py3.6-django1.11-mysql-memcached - - python: 3.6 - env: TOXENV=py3.6-django1.11-mysql-pylibmc - - python: 3.6 - env: TOXENV=py3.6-django1.11-mysql-locmem - - python: 3.6 - env: TOXENV=py3.6-django1.11-mysql-filebased + - python: 2.7 + env: TOXENV=py2.7-django1.8-sqlite3-redis + - python: 2.7 + env: TOXENV=py2.7-django1.8-sqlite3-memcached + - python: 2.7 + env: TOXENV=py2.7-django1.8-sqlite3-pylibmc + - python: 2.7 + env: TOXENV=py2.7-django1.8-sqlite3-locmem + - python: 2.7 + env: TOXENV=py2.7-django1.8-sqlite3-filebased + - python: 2.7 + env: TOXENV=py2.7-django1.8-postgresql-redis + - python: 2.7 + env: TOXENV=py2.7-django1.8-postgresql-memcached + - python: 2.7 + env: TOXENV=py2.7-django1.8-postgresql-pylibmc + - python: 2.7 + env: TOXENV=py2.7-django1.8-postgresql-locmem + - python: 2.7 + env: TOXENV=py2.7-django1.8-postgresql-filebased + - python: 2.7 + env: TOXENV=py2.7-django1.8-mysql-redis + - python: 2.7 + env: TOXENV=py2.7-django1.8-mysql-memcached + - python: 2.7 + env: TOXENV=py2.7-django1.8-mysql-pylibmc + - python: 2.7 + env: TOXENV=py2.7-django1.8-mysql-locmem + - python: 2.7 + env: TOXENV=py2.7-django1.8-mysql-filebased + - python: 2.7 + env: TOXENV=py2.7-django1.10-sqlite3-redis + - python: 2.7 + env: TOXENV=py2.7-django1.10-sqlite3-memcached + - python: 2.7 + env: TOXENV=py2.7-django1.10-sqlite3-pylibmc + - python: 2.7 + env: TOXENV=py2.7-django1.10-sqlite3-locmem + - python: 2.7 + env: TOXENV=py2.7-django1.10-sqlite3-filebased + - python: 2.7 + env: TOXENV=py2.7-django1.10-postgresql-redis + - python: 2.7 + env: TOXENV=py2.7-django1.10-postgresql-memcached + - python: 2.7 + env: TOXENV=py2.7-django1.10-postgresql-pylibmc + - python: 2.7 + env: TOXENV=py2.7-django1.10-postgresql-locmem + - python: 2.7 + env: TOXENV=py2.7-django1.10-postgresql-filebased + - python: 2.7 + env: TOXENV=py2.7-django1.10-mysql-redis + - python: 2.7 + env: TOXENV=py2.7-django1.10-mysql-memcached + - python: 2.7 + env: TOXENV=py2.7-django1.10-mysql-pylibmc + - python: 2.7 + env: TOXENV=py2.7-django1.10-mysql-locmem + - python: 2.7 + env: TOXENV=py2.7-django1.10-mysql-filebased + - python: 2.7 + env: TOXENV=py2.7-django1.11-sqlite3-redis + - python: 2.7 + env: TOXENV=py2.7-django1.11-sqlite3-memcached + - python: 2.7 + env: TOXENV=py2.7-django1.11-sqlite3-pylibmc + - python: 2.7 + env: TOXENV=py2.7-django1.11-sqlite3-locmem + - python: 2.7 + env: TOXENV=py2.7-django1.11-sqlite3-filebased + - python: 2.7 + env: TOXENV=py2.7-django1.11-postgresql-redis + - python: 2.7 + env: TOXENV=py2.7-django1.11-postgresql-memcached + - python: 2.7 + env: TOXENV=py2.7-django1.11-postgresql-pylibmc + - python: 2.7 + env: TOXENV=py2.7-django1.11-postgresql-locmem + - python: 2.7 + env: TOXENV=py2.7-django1.11-postgresql-filebased + - python: 2.7 + env: TOXENV=py2.7-django1.11-mysql-redis + - python: 2.7 + env: TOXENV=py2.7-django1.11-mysql-memcached + - python: 2.7 + env: TOXENV=py2.7-django1.11-mysql-pylibmc + - python: 2.7 + env: TOXENV=py2.7-django1.11-mysql-locmem + - python: 2.7 + env: TOXENV=py2.7-django1.11-mysql-filebased + - python: 3.4 + env: TOXENV=py3.4-django1.8-sqlite3-redis + - python: 3.4 + env: TOXENV=py3.4-django1.8-sqlite3-memcached + - python: 3.4 + env: TOXENV=py3.4-django1.8-sqlite3-pylibmc + - python: 3.4 + env: TOXENV=py3.4-django1.8-sqlite3-locmem + - python: 3.4 + env: TOXENV=py3.4-django1.8-sqlite3-filebased + - python: 3.4 + env: TOXENV=py3.4-django1.8-postgresql-redis + - python: 3.4 + env: TOXENV=py3.4-django1.8-postgresql-memcached + - python: 3.4 + env: TOXENV=py3.4-django1.8-postgresql-pylibmc + - python: 3.4 + env: TOXENV=py3.4-django1.8-postgresql-locmem + - python: 3.4 + env: TOXENV=py3.4-django1.8-postgresql-filebased + - python: 3.4 + env: TOXENV=py3.4-django1.8-mysql-redis + - python: 3.4 + env: TOXENV=py3.4-django1.8-mysql-memcached + - python: 3.4 + env: TOXENV=py3.4-django1.8-mysql-pylibmc + - python: 3.4 + env: TOXENV=py3.4-django1.8-mysql-locmem + - python: 3.4 + env: TOXENV=py3.4-django1.8-mysql-filebased + - python: 3.4 + env: TOXENV=py3.4-django1.10-sqlite3-redis + - python: 3.4 + env: TOXENV=py3.4-django1.10-sqlite3-memcached + - python: 3.4 + env: TOXENV=py3.4-django1.10-sqlite3-pylibmc + - python: 3.4 + env: TOXENV=py3.4-django1.10-sqlite3-locmem + - python: 3.4 + env: TOXENV=py3.4-django1.10-sqlite3-filebased + - python: 3.4 + env: TOXENV=py3.4-django1.10-postgresql-redis + - python: 3.4 + env: TOXENV=py3.4-django1.10-postgresql-memcached + - python: 3.4 + env: TOXENV=py3.4-django1.10-postgresql-pylibmc + - python: 3.4 + env: TOXENV=py3.4-django1.10-postgresql-locmem + - python: 3.4 + env: TOXENV=py3.4-django1.10-postgresql-filebased + - python: 3.4 + env: TOXENV=py3.4-django1.10-mysql-redis + - python: 3.4 + env: TOXENV=py3.4-django1.10-mysql-memcached + - python: 3.4 + env: TOXENV=py3.4-django1.10-mysql-pylibmc + - python: 3.4 + env: TOXENV=py3.4-django1.10-mysql-locmem + - python: 3.4 + env: TOXENV=py3.4-django1.10-mysql-filebased + - python: 3.4 + env: TOXENV=py3.4-django1.11-sqlite3-redis + - python: 3.4 + env: TOXENV=py3.4-django1.11-sqlite3-memcached + - python: 3.4 + env: TOXENV=py3.4-django1.11-sqlite3-pylibmc + - python: 3.4 + env: TOXENV=py3.4-django1.11-sqlite3-locmem + - python: 3.4 + env: TOXENV=py3.4-django1.11-sqlite3-filebased + - python: 3.4 + env: TOXENV=py3.4-django1.11-postgresql-redis + - python: 3.4 + env: TOXENV=py3.4-django1.11-postgresql-memcached + - python: 3.4 + env: TOXENV=py3.4-django1.11-postgresql-pylibmc + - python: 3.4 + env: TOXENV=py3.4-django1.11-postgresql-locmem + - python: 3.4 + env: TOXENV=py3.4-django1.11-postgresql-filebased + - python: 3.4 + env: TOXENV=py3.4-django1.11-mysql-redis + - python: 3.4 + env: TOXENV=py3.4-django1.11-mysql-memcached + - python: 3.4 + env: TOXENV=py3.4-django1.11-mysql-pylibmc + - python: 3.4 + env: TOXENV=py3.4-django1.11-mysql-locmem + - python: 3.4 + env: TOXENV=py3.4-django1.11-mysql-filebased + - python: 3.5 + env: TOXENV=py3.5-django1.8-sqlite3-redis + - python: 3.5 + env: TOXENV=py3.5-django1.8-sqlite3-memcached + - python: 3.5 + env: TOXENV=py3.5-django1.8-sqlite3-pylibmc + - python: 3.5 + env: TOXENV=py3.5-django1.8-sqlite3-locmem + - python: 3.5 + env: TOXENV=py3.5-django1.8-sqlite3-filebased + - python: 3.5 + env: TOXENV=py3.5-django1.8-postgresql-redis + - python: 3.5 + env: TOXENV=py3.5-django1.8-postgresql-memcached + - python: 3.5 + env: TOXENV=py3.5-django1.8-postgresql-pylibmc + - python: 3.5 + env: TOXENV=py3.5-django1.8-postgresql-locmem + - python: 3.5 + env: TOXENV=py3.5-django1.8-postgresql-filebased + - python: 3.5 + env: TOXENV=py3.5-django1.8-mysql-redis + - python: 3.5 + env: TOXENV=py3.5-django1.8-mysql-memcached + - python: 3.5 + env: TOXENV=py3.5-django1.8-mysql-pylibmc + - python: 3.5 + env: TOXENV=py3.5-django1.8-mysql-locmem + - python: 3.5 + env: TOXENV=py3.5-django1.8-mysql-filebased + - python: 3.5 + env: TOXENV=py3.5-django1.10-sqlite3-redis + - python: 3.5 + env: TOXENV=py3.5-django1.10-sqlite3-memcached + - python: 3.5 + env: TOXENV=py3.5-django1.10-sqlite3-pylibmc + - python: 3.5 + env: TOXENV=py3.5-django1.10-sqlite3-locmem + - python: 3.5 + env: TOXENV=py3.5-django1.10-sqlite3-filebased + - python: 3.5 + env: TOXENV=py3.5-django1.10-postgresql-redis + - python: 3.5 + env: TOXENV=py3.5-django1.10-postgresql-memcached + - python: 3.5 + env: TOXENV=py3.5-django1.10-postgresql-pylibmc + - python: 3.5 + env: TOXENV=py3.5-django1.10-postgresql-locmem + - python: 3.5 + env: TOXENV=py3.5-django1.10-postgresql-filebased + - python: 3.5 + env: TOXENV=py3.5-django1.10-mysql-redis + - python: 3.5 + env: TOXENV=py3.5-django1.10-mysql-memcached + - python: 3.5 + env: TOXENV=py3.5-django1.10-mysql-pylibmc + - python: 3.5 + env: TOXENV=py3.5-django1.10-mysql-locmem + - python: 3.5 + env: TOXENV=py3.5-django1.10-mysql-filebased + - python: 3.5 + env: TOXENV=py3.5-django1.11-sqlite3-redis + - python: 3.5 + env: TOXENV=py3.5-django1.11-sqlite3-memcached + - python: 3.5 + env: TOXENV=py3.5-django1.11-sqlite3-pylibmc + - python: 3.5 + env: TOXENV=py3.5-django1.11-sqlite3-locmem + - python: 3.5 + env: TOXENV=py3.5-django1.11-sqlite3-filebased + - python: 3.5 + env: TOXENV=py3.5-django1.11-postgresql-redis + - python: 3.5 + env: TOXENV=py3.5-django1.11-postgresql-memcached + - python: 3.5 + env: TOXENV=py3.5-django1.11-postgresql-pylibmc + - python: 3.5 + env: TOXENV=py3.5-django1.11-postgresql-locmem + - python: 3.5 + env: TOXENV=py3.5-django1.11-postgresql-filebased + - python: 3.5 + env: TOXENV=py3.5-django1.11-mysql-redis + - python: 3.5 + env: TOXENV=py3.5-django1.11-mysql-memcached + - python: 3.5 + env: TOXENV=py3.5-django1.11-mysql-pylibmc + - python: 3.5 + env: TOXENV=py3.5-django1.11-mysql-locmem + - python: 3.5 + env: TOXENV=py3.5-django1.11-mysql-filebased + - python: 3.6 + env: TOXENV=py3.6-django1.11-sqlite3-redis + - python: 3.6 + env: TOXENV=py3.6-django1.11-sqlite3-memcached + - python: 3.6 + env: TOXENV=py3.6-django1.11-sqlite3-pylibmc + - python: 3.6 + env: TOXENV=py3.6-django1.11-sqlite3-locmem + - python: 3.6 + env: TOXENV=py3.6-django1.11-sqlite3-filebased + - python: 3.6 + env: TOXENV=py3.6-django1.11-postgresql-redis + - python: 3.6 + env: TOXENV=py3.6-django1.11-postgresql-memcached + - python: 3.6 + env: TOXENV=py3.6-django1.11-postgresql-pylibmc + - python: 3.6 + env: TOXENV=py3.6-django1.11-postgresql-locmem + - python: 3.6 + env: TOXENV=py3.6-django1.11-postgresql-filebased + - python: 3.6 + env: TOXENV=py3.6-django1.11-mysql-redis + - python: 3.6 + env: TOXENV=py3.6-django1.11-mysql-memcached + - python: 3.6 + env: TOXENV=py3.6-django1.11-mysql-pylibmc + - python: 3.6 + env: TOXENV=py3.6-django1.11-mysql-locmem + - python: 3.6 + env: TOXENV=py3.6-django1.11-mysql-filebased sudo: false diff --git a/cachalot/tests/api.py b/cachalot/tests/api.py index 036eb02..dbd3316 100644 --- a/cachalot/tests/api.py +++ b/cachalot/tests/api.py @@ -115,16 +115,16 @@ class APITestCase(TransactionTestCase): # Without arguments original_timestamp = engines['django'].from_string( "{{ timestamp }}" - ).render(Context({ + ).render({ 'timestamp': get_last_invalidation(), - })) + }) template = engines['django'].from_string(""" {% load cachalot %} {% get_last_invalidation as timestamp %} {{ timestamp }} """) - timestamp = template.render(Context()).strip() + timestamp = template.render().strip() self.assertNotEqual(timestamp, '') self.assertNotEqual(timestamp, '0.0') @@ -134,16 +134,16 @@ class APITestCase(TransactionTestCase): # With arguments original_timestamp = engines['django'].from_string( "{{ timestamp }}" - ).render(Context({ + ).render({ 'timestamp': get_last_invalidation('auth.Group', 'cachalot_test'), - })) + }) template = engines['django'].from_string(""" {% load cachalot %} {% get_last_invalidation 'auth.Group' 'cachalot_test' as timestamp %} {{ timestamp }} """) - timestamp = template.render(Context()).strip() + timestamp = template.render().strip() self.assertNotEqual(timestamp, '') self.assertNotEqual(timestamp, '0.0') @@ -158,12 +158,12 @@ class APITestCase(TransactionTestCase): {{ content }} {% endcache %} """) - content = template.render(Context({'content': 'something'})).strip() + content = template.render({'content': 'something'}).strip() self.assertEqual(content, 'something') - content = template.render(Context({'content': 'anything'})).strip() + content = template.render({'content': 'anything'}).strip() self.assertEqual(content, 'something') invalidate('cachalot_test') - content = template.render(Context({'content': 'yet another'})).strip() + content = template.render({'content': 'yet another'}).strip() self.assertEqual(content, 'yet another') def test_get_last_invalidation_jinja2(self): diff --git a/cachalot/tests/multi_db.py b/cachalot/tests/multi_db.py index 413dc5e..c189456 100644 --- a/cachalot/tests/multi_db.py +++ b/cachalot/tests/multi_db.py @@ -23,7 +23,7 @@ class MultiDatabaseTestCase(TransactionTestCase): connection2 = connections[self.db_alias2] self.is_sqlite2 = connection2.vendor == 'sqlite' self.is_mysql2 = connection2.vendor == 'mysql' - if self.is_mysql2: + if connection2.vendor in ('mysql', 'postgresql'): # We need to reopen the connection or Django # will execute an extra SQL request below. connection2.cursor() diff --git a/cachalot/tests/read.py b/cachalot/tests/read.py index 38e1b03..2d7c782 100644 --- a/cachalot/tests/read.py +++ b/cachalot/tests/read.py @@ -206,11 +206,17 @@ class ReadTestCase(TransactionTestCase): with self.assertNumQueries(1): list(Test.objects.order_by('?')) + @skipIf(connection.vendor == 'mysql', + 'MySQL does not support limit/offset on a subquery. ' + 'Since Django only applies ordering in subqueries when they are ' + 'offset/limited, we can’t test it on MySQL.') def test_random_order_by_subquery(self): with self.assertNumQueries(1): - list(Test.objects.filter(pk__in=Test.objects.order_by('?'))) + list(Test.objects.filter( + pk__in=Test.objects.order_by('?')[:10])) with self.assertNumQueries(1): - list(Test.objects.filter(pk__in=Test.objects.order_by('?'))) + list(Test.objects.filter( + pk__in=Test.objects.order_by('?')[:10])) def test_reverse(self): with self.assertNumQueries(1): @@ -734,26 +740,19 @@ class ParameterTypeTestCase(TransactionTestCase): def setUp(self): self.is_sqlite = connection.vendor == 'sqlite' self.is_mysql = connection.vendor == 'mysql' - if self.is_mysql: + if connection.vendor in ('mysql', 'postgresql'): # We need to reopen the connection or Django # will execute an extra SQL request below. connection.cursor() - def test_unknown_parameter_type(self): + def test_binary(self): """ - Tests if queries with an unknown parameter type are not cached. + Binary data should be cached on PostgreSQL & MySQL, but not on SQLite, + because SQLite uses a type making it hard to access data itself. - We don’t cache parameters with an unknown type because we don’t know - how to hash them. - - Here we use a binary field, as it uses special parameters - on PostgreSQL and SQLite (but not on MySQL). - A similar result would be obtained using a geographic field, but it’s - more complex to test, since geographic database backends have a few - side effects, such as changing the number of queries - of a bulk_create of n objects from 1 to n. + So this also tests how django-cachalot handles unknown params, in this + case the `memory` object passed to SQLite. """ - with self.assertNumQueries(1): list(Test.objects.filter(bin=None)) with self.assertNumQueries(0): @@ -761,12 +760,12 @@ class ParameterTypeTestCase(TransactionTestCase): with self.assertNumQueries(1): list(Test.objects.filter(bin=b'abc')) - with self.assertNumQueries(0 if self.is_mysql else 1): + with self.assertNumQueries(1 if self.is_sqlite else 0): list(Test.objects.filter(bin=b'abc')) with self.assertNumQueries(1): list(Test.objects.filter(bin=b'def')) - with self.assertNumQueries(0 if self.is_mysql else 1): + with self.assertNumQueries(1 if self.is_sqlite else 0): list(Test.objects.filter(bin=b'def')) def test_float(self): diff --git a/cachalot/tests/settings.py b/cachalot/tests/settings.py index 2e97bff..1c172f3 100644 --- a/cachalot/tests/settings.py +++ b/cachalot/tests/settings.py @@ -18,7 +18,7 @@ from .models import Test, TestParent, TestChild class SettingsTestCase(TransactionTestCase): def setUp(self): - if connection.vendor == 'mysql': + if connection.vendor in ('mysql', 'postgresql'): # We need to reopen the connection or Django # will execute an extra SQL request below. connection.cursor() diff --git a/cachalot/tests/thread_safety.py b/cachalot/tests/thread_safety.py index a49ac27..fd10c94 100644 --- a/cachalot/tests/thread_safety.py +++ b/cachalot/tests/thread_safety.py @@ -23,7 +23,7 @@ class TestThread(Thread): @skipUnlessDBFeature('test_db_allows_multiple_connections') class ThreadSafetyTestCase(TransactionTestCase): def setUp(self): - if connection.vendor == 'mysql': + if connection.vendor in ('mysql', 'postgresql'): # We need to reopen the connection or Django # will execute an extra SQL request below. connection.cursor() diff --git a/cachalot/tests/transaction.py b/cachalot/tests/transaction.py index d7d3780..7e0013e 100644 --- a/cachalot/tests/transaction.py +++ b/cachalot/tests/transaction.py @@ -11,7 +11,7 @@ from .models import Test class AtomicTestCase(TransactionTestCase): def setUp(self): - if connection.vendor == 'mysql': + if connection.vendor in ('mysql', 'postgresql'): # We need to reopen the connection or Django # will execute an extra SQL request below. connection.cursor() diff --git a/cachalot/tests/write.py b/cachalot/tests/write.py index cdded68..0823ff6 100644 --- a/cachalot/tests/write.py +++ b/cachalot/tests/write.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals +from django import VERSION as django_version from django.contrib.auth.models import User, Permission, Group from django.contrib.contenttypes.models import ContentType from django.core.exceptions import MultipleObjectsReturned @@ -13,6 +14,9 @@ from django.test import TransactionTestCase, skipUnlessDBFeature from .models import Test, TestParent, TestChild +DJANGO_GTE_1_11 = django_version[:2] >= (1, 11) + + class WriteTestCase(TransactionTestCase): """ Tests if every SQL request writing data is not cached and invalidates the @@ -21,7 +25,7 @@ class WriteTestCase(TransactionTestCase): def setUp(self): self.is_sqlite = connection.vendor == 'sqlite' - if connection.vendor == 'mysql': + if connection.vendor in ('mysql', 'postgresql'): # We need to reopen the connection or Django # will execute an extra SQL request below. connection.cursor() @@ -83,7 +87,9 @@ class WriteTestCase(TransactionTestCase): with self.assertNumQueries(1): self.assertListEqual(list(Test.objects.all()), []) - with self.assertNumQueries(3 if self.is_sqlite else 2): + with self.assertNumQueries( + (5 if self.is_sqlite else 4) if DJANGO_GTE_1_11 + else (3 if self.is_sqlite else 2)): t, created = Test.objects.update_or_create( name='test', defaults={'public': True}) self.assertTrue(created) @@ -927,7 +933,7 @@ class DatabaseCommandTestCase(TransactionTestCase): call_command('loaddata', 'cachalot/tests/loaddata_fixture.json', verbosity=0, interactive=False) - if connection.vendor == 'mysql': + if connection.vendor in ('mysql', 'postgresql'): # We need to reopen the connection or Django # will execute an extra SQL request below. connection.cursor() diff --git a/travis-matrix.py b/travis-matrix.py index 54e2687..2594287 100755 --- a/travis-matrix.py +++ b/travis-matrix.py @@ -8,5 +8,5 @@ envs = check_output(['tox', '-l']) print('matrix:') print(' include:') for env in filter(bool, envs.decode().split('\n')): - print(' - python: %s' % env[2:5]) - print(' env: TOXENV=' + env) + print(' - python: %s' % env[2:5]) + print(' env: TOXENV=' + env)