Skip to content

Commit 5dfab4d

Browse files
authored
CI: Update Django test workflow (#610)
1 parent 398208f commit 5dfab4d

File tree

4 files changed

+33
-19
lines changed

4 files changed

+33
-19
lines changed

.github/workflows/django.yaml

+20-12
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,22 @@ name: Django compat test
22

33
on:
44
push:
5+
pull_request:
56

67
jobs:
78
build:
9+
name: "Run Django LTS test suite"
810
runs-on: ubuntu-latest
11+
env:
12+
PIP_NO_PYTHON_VERSION_WARNING: 1
13+
PIP_DISABLE_PIP_VERSION_CHECK: 1
14+
DJANGO_VERSION: "3.2.19"
915
steps:
1016
- name: Start MySQL
1117
run: |
1218
sudo systemctl start mysql.service
1319
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -proot mysql
20+
mysql -uroot -proot -e "set global innodb_flush_log_at_trx_commit=0;"
1421
mysql -uroot -proot -e "CREATE USER 'scott'@'%' IDENTIFIED BY 'tiger'; GRANT ALL ON *.* TO scott;"
1522
mysql -uroot -proot -e "CREATE DATABASE django_default; CREATE DATABASE django_other;"
1623
@@ -19,27 +26,28 @@ jobs:
1926
- name: Set up Python
2027
uses: actions/setup-python@v4
2128
with:
22-
# https://www.mail-archive.com/[email protected]/msg209056.html
23-
python-version: "3.11"
29+
# Django 3.2.9+ supports Python 3.10
30+
# https://docs.djangoproject.com/ja/3.2/releases/3.2/
31+
python-version: "3.10"
32+
cache: "pip"
33+
cache-dependency-path: "ci/django-requirements.txt"
2434

2535
- name: Install mysqlclient
26-
env:
27-
PIP_NO_PYTHON_VERSION_WARNING: 1
28-
PIP_DISABLE_PIP_VERSION_CHECK: 1
2936
run: |
30-
pip install -r requirements.txt
37+
#pip install -r requirements.txt
38+
#pip install mysqlclient # Use stable version
3139
pip install .
32-
# pip install mysqlclient # Use stable version
3340
34-
- name: Run Django test
35-
env:
36-
DJANGO_VERSION: "3.2.19"
41+
- name: Setup Django
3742
run: |
3843
sudo apt-get install libmemcached-dev
3944
wget https://github.com/django/django/archive/${DJANGO_VERSION}.tar.gz
4045
tar xf ${DJANGO_VERSION}.tar.gz
4146
cp ci/test_mysql.py django-${DJANGO_VERSION}/tests/
47+
cd django-${DJANGO_VERSION}
48+
pip install . -r tests/requirements/py3.txt
49+
50+
- name: Run Django test
51+
run: |
4252
cd django-${DJANGO_VERSION}/tests/
43-
pip install ..
44-
pip install -r requirements/py3.txt
4553
PYTHONPATH=.. python3 ./runtests.py --settings=test_mysql

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ clean:
1717

1818
.PHONY: check
1919
check:
20-
ruff .
21-
black *.py src
20+
ruff *.py src ci
21+
black *.py src ci

ci/test_mysql.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@
1919
"HOST": "127.0.0.1",
2020
"USER": "scott",
2121
"PASSWORD": "tiger",
22-
"TEST": {"CHARSET": "utf8mb4", "COLLATION": "utf8mb4_general_ci"},
22+
"TEST": {"CHARSET": "utf8mb3", "COLLATION": "utf8mb3_general_ci"},
2323
},
2424
"other": {
2525
"ENGINE": "django.db.backends.mysql",
2626
"NAME": "django_other",
2727
"HOST": "127.0.0.1",
2828
"USER": "scott",
2929
"PASSWORD": "tiger",
30-
"TEST": {"CHARSET": "utf8mb4", "COLLATION": "utf8mb4_general_ci"},
30+
"TEST": {"CHARSET": "utf8mb3", "COLLATION": "utf8mb3_general_ci"},
3131
},
3232
}
3333

@@ -37,3 +37,5 @@
3737
PASSWORD_HASHERS = [
3838
"django.contrib.auth.hashers.MD5PasswordHasher",
3939
]
40+
41+
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"

src/MySQLdb/cursors.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def __init__(self, connection):
6666
self.connection = connection
6767
self.description = None
6868
self.description_flags = None
69-
self.rowcount = -1
69+
self.rowcount = 0
7070
self.arraysize = 1
7171
self._executed = None
7272

@@ -78,8 +78,10 @@ def __init__(self, connection):
7878
def _discard(self):
7979
self.description = None
8080
self.description_flags = None
81-
self.rowcount = -1
82-
self.lastrowid = None
81+
# Django uses some member after __exit__.
82+
# So we keep rowcount and lastrowid here. They are cleared in Cursor._query().
83+
# self.rowcount = 0
84+
# self.lastrowid = None
8385
self._rows = None
8486
self.rownumber = None
8587

@@ -323,6 +325,8 @@ def callproc(self, procname, args=()):
323325
def _query(self, q):
324326
db = self._get_db()
325327
self._result = None
328+
self.rowcount = None
329+
self.lastrowid = None
326330
db.query(q)
327331
self._do_get_result(db)
328332
self._post_get_result()

0 commit comments

Comments
 (0)