CI: Update Django test workflow (#610)

This commit is contained in:
Inada Naoki
2023-05-19 03:04:56 +09:00
committed by GitHub
parent 398208f8c8
commit 5dfab4d9c5
4 changed files with 33 additions and 19 deletions

View File

@ -2,15 +2,22 @@ name: Django compat test
on: on:
push: push:
pull_request:
jobs: jobs:
build: build:
name: "Run Django LTS test suite"
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
PIP_NO_PYTHON_VERSION_WARNING: 1
PIP_DISABLE_PIP_VERSION_CHECK: 1
DJANGO_VERSION: "3.2.19"
steps: steps:
- name: Start MySQL - name: Start MySQL
run: | run: |
sudo systemctl start mysql.service sudo systemctl start mysql.service
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -proot mysql mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -proot mysql
mysql -uroot -proot -e "set global innodb_flush_log_at_trx_commit=0;"
mysql -uroot -proot -e "CREATE USER 'scott'@'%' IDENTIFIED BY 'tiger'; GRANT ALL ON *.* TO scott;" mysql -uroot -proot -e "CREATE USER 'scott'@'%' IDENTIFIED BY 'tiger'; GRANT ALL ON *.* TO scott;"
mysql -uroot -proot -e "CREATE DATABASE django_default; CREATE DATABASE django_other;" mysql -uroot -proot -e "CREATE DATABASE django_default; CREATE DATABASE django_other;"
@ -19,27 +26,28 @@ jobs:
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v4 uses: actions/setup-python@v4
with: with:
# https://www.mail-archive.com/django-updates@googlegroups.com/msg209056.html # Django 3.2.9+ supports Python 3.10
python-version: "3.11" # https://docs.djangoproject.com/ja/3.2/releases/3.2/
python-version: "3.10"
cache: "pip"
cache-dependency-path: "ci/django-requirements.txt"
- name: Install mysqlclient - name: Install mysqlclient
env:
PIP_NO_PYTHON_VERSION_WARNING: 1
PIP_DISABLE_PIP_VERSION_CHECK: 1
run: | run: |
pip install -r requirements.txt #pip install -r requirements.txt
#pip install mysqlclient # Use stable version
pip install . pip install .
# pip install mysqlclient # Use stable version
- name: Run Django test - name: Setup Django
env:
DJANGO_VERSION: "3.2.19"
run: | run: |
sudo apt-get install libmemcached-dev sudo apt-get install libmemcached-dev
wget https://github.com/django/django/archive/${DJANGO_VERSION}.tar.gz wget https://github.com/django/django/archive/${DJANGO_VERSION}.tar.gz
tar xf ${DJANGO_VERSION}.tar.gz tar xf ${DJANGO_VERSION}.tar.gz
cp ci/test_mysql.py django-${DJANGO_VERSION}/tests/ cp ci/test_mysql.py django-${DJANGO_VERSION}/tests/
cd django-${DJANGO_VERSION}
pip install . -r tests/requirements/py3.txt
- name: Run Django test
run: |
cd django-${DJANGO_VERSION}/tests/ cd django-${DJANGO_VERSION}/tests/
pip install ..
pip install -r requirements/py3.txt
PYTHONPATH=.. python3 ./runtests.py --settings=test_mysql PYTHONPATH=.. python3 ./runtests.py --settings=test_mysql

View File

@ -17,5 +17,5 @@ clean:
.PHONY: check .PHONY: check
check: check:
ruff . ruff *.py src ci
black *.py src black *.py src ci

View File

@ -19,7 +19,7 @@ DATABASES = {
"HOST": "127.0.0.1", "HOST": "127.0.0.1",
"USER": "scott", "USER": "scott",
"PASSWORD": "tiger", "PASSWORD": "tiger",
"TEST": {"CHARSET": "utf8mb4", "COLLATION": "utf8mb4_general_ci"}, "TEST": {"CHARSET": "utf8mb3", "COLLATION": "utf8mb3_general_ci"},
}, },
"other": { "other": {
"ENGINE": "django.db.backends.mysql", "ENGINE": "django.db.backends.mysql",
@ -27,7 +27,7 @@ DATABASES = {
"HOST": "127.0.0.1", "HOST": "127.0.0.1",
"USER": "scott", "USER": "scott",
"PASSWORD": "tiger", "PASSWORD": "tiger",
"TEST": {"CHARSET": "utf8mb4", "COLLATION": "utf8mb4_general_ci"}, "TEST": {"CHARSET": "utf8mb3", "COLLATION": "utf8mb3_general_ci"},
}, },
} }
@ -37,3 +37,5 @@ SECRET_KEY = "django_tests_secret_key"
PASSWORD_HASHERS = [ PASSWORD_HASHERS = [
"django.contrib.auth.hashers.MD5PasswordHasher", "django.contrib.auth.hashers.MD5PasswordHasher",
] ]
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"

View File

@ -66,7 +66,7 @@ class BaseCursor:
self.connection = connection self.connection = connection
self.description = None self.description = None
self.description_flags = None self.description_flags = None
self.rowcount = -1 self.rowcount = 0
self.arraysize = 1 self.arraysize = 1
self._executed = None self._executed = None
@ -78,8 +78,10 @@ class BaseCursor:
def _discard(self): def _discard(self):
self.description = None self.description = None
self.description_flags = None self.description_flags = None
self.rowcount = -1 # Django uses some member after __exit__.
self.lastrowid = None # So we keep rowcount and lastrowid here. They are cleared in Cursor._query().
# self.rowcount = 0
# self.lastrowid = None
self._rows = None self._rows = None
self.rownumber = None self.rownumber = None
@ -323,6 +325,8 @@ class BaseCursor:
def _query(self, q): def _query(self, q):
db = self._get_db() db = self._get_db()
self._result = None self._result = None
self.rowcount = None
self.lastrowid = None
db.query(q) db.query(q)
self._do_get_result(db) self._do_get_result(db)
self._post_get_result() self._post_get_result()