Skip to content

Commit 727fac7

Browse files
authored
Merge pull request #168 from Wikidata/ci
build: use MariaDB in CI
2 parents 873c7e6 + 677a3c6 commit 727fac7

4 files changed

Lines changed: 145 additions & 128 deletions

File tree

.github/workflows/ci.yml

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,24 @@ jobs:
1111

1212
runs-on: ubuntu-latest
1313

14+
strategy:
15+
max-parallel: 4
16+
matrix:
17+
python-version: [3.11, 3.12]
18+
1419
services:
15-
postgres:
16-
image: postgres
17-
ports:
18-
- 5432
20+
mariadb:
21+
image: mariadb:11.7.2
1922
env:
20-
POSTGRES_USER: postgres
21-
POSTGRES_PASSWORD: 'postgres'
22-
POSTGRES_DB: editgroups
23+
MARIADB_DATABASE: editgroups
24+
MARIADB_ROOT_PASSWORD: editgroups
25+
ports:
26+
- 3306
2327
options: >-
24-
--health-cmd pg_isready
25-
--health-interval 10s
26-
--health-timeout 5s
27-
--health-retries 5
28+
--health-cmd="healthcheck.sh --connect --innodb_initialized"
29+
--health-interval=10s
30+
--health-timeout=5s
31+
--health-retries=3
2832
redis:
2933
image: redis
3034
ports:
@@ -36,20 +40,32 @@ jobs:
3640
--health-retries 5
3741
3842
steps:
39-
- uses: actions/checkout@v2
40-
- name: Set up Python 3.11
41-
uses: actions/setup-python@v2
43+
- name: Checkout code
44+
uses: actions/checkout@v4
45+
46+
- name: Set up Python ${{ matrix.python-version }}
47+
uses: actions/setup-python@v3
4248
with:
43-
python-version: 3.11
49+
python-version: ${{ matrix.python-version }}
50+
4451
- name: Install dependencies
4552
run: |
4653
python -m pip install --upgrade pip setuptools
4754
pip install -r requirements.txt
48-
pip install psycopg2-binary==2.9.7 coveralls
55+
pip install mysqlclient==2.2.7 coveralls
4956
pip freeze
5057
echo "from .dev import *" > editgroups/settings/__init__.py
51-
cat editgroups/settings/secret_gh_action.py | sed -e "s/POSTGRES_PORT/${{ job.services.postgres.ports[5432] }}/g" | sed -e "s/REDIS_REAL_PORT/${{ job.services.redis.ports[6379] }}/g" > editgroups/settings/secret.py
52-
- name: Run Django tests
58+
cat editgroups/settings/secret_gh_action.py | sed -e "s/MARIADB_PORT/${{ job.services.mariadb.ports[3306] }}/g" | sed -e "s/REDIS_REAL_PORT/${{ job.services.redis.ports[6379] }}/g" > editgroups/settings/secret.py
59+
60+
- name: Verify MariaDB connection
61+
env:
62+
PORT: ${{ job.services.mariadb.ports[3306] }}
63+
run: |
64+
while ! mysqladmin ping -h"127.0.0.1" -P"$PORT" --silent; do
65+
sleep 1
66+
done
67+
68+
- name: Run tests
5369
run: |
5470
coverage run --source=editgroups,store,revert,tagging --omit=*/migrations/*,edtigroups/settings/* manage.py test -v 2
5571
env:

editgroups/settings/secret_gh_action.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,18 @@
33
SECRET_KEY = '20oj&tj8uaruseitlrise,tries,uirsetur36746209etus7e'
44

55
# Database
6-
# https://docs.djangoproject.com/en/1.7/ref/settings/#databases
7-
86
DATABASES = {
97
'default': {
10-
'ENGINE': 'django.db.backends.postgresql_psycopg2',
11-
'NAME': 'editgroups',
12-
'USER': 'postgres',
13-
'PASSWORD': 'postgres',
14-
'HOST': 'localhost',
15-
'PORT': 'POSTGRES_PORT',
16-
'DISABLE_SERVER_SIDE_CURSORS': False,
8+
'ENGINE': 'django.db.backends.mysql',
9+
'HOST': '127.0.0.1',
10+
'PORT': 'MARIADB_PORT',
11+
'NAME': 'editgroups',
12+
'USER': 'root',
13+
'PASSWORD': 'editgroups',
14+
'OPTIONS': {
15+
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
16+
'charset': 'utf8mb4',
17+
},
1718
}
1819
}
1920

revert/tests.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ def test_revert_not_logged_in(self):
4343
response = self.client.post(
4444
reverse('submit-revert', args=[self.batch.tool.shortid, self.batch.uid]),
4545
data={'comment':'testing reverts'})
46-
self.assertEquals(401, response.status_code)
46+
self.assertEqual(401, response.status_code)
4747

4848
def test_revert_invalid_batch(self):
4949
response = self.client.post(
5050
reverse('submit-revert', args=['NOTATOOL', 'uster']),
5151
data={'comment':'testing reverts'})
52-
self.assertEquals(404, response.status_code)
52+
self.assertEqual(404, response.status_code)
5353

5454
def test_revert_batch_already_reverted(self):
5555
Edit.objects.all().update(reverted=True)
@@ -59,7 +59,7 @@ def test_revert_batch_already_reverted(self):
5959
response = self.client.post(
6060
reverse('submit-revert', args=[self.batch.tool.shortid, self.batch.uid]),
6161
data={'comment':'testing reverts'})
62-
self.assertEquals(400, response.status_code)
62+
self.assertEqual(400, response.status_code)
6363

6464
def test_revert_batch_archived(self):
6565
b = Batch.objects.get()
@@ -68,38 +68,38 @@ def test_revert_batch_archived(self):
6868
response = self.client.post(
6969
reverse('submit-revert', args=[self.batch.tool.shortid, self.batch.uid]),
7070
data={'comment':'testing reverts'})
71-
self.assertEquals(400, response.status_code)
71+
self.assertEqual(400, response.status_code)
7272

7373
def test_revert_batch_already_being_reverted(self):
7474
task = RevertTask(batch=self.batch, user=self.mary, comment="Already reverting")
7575
task.save()
7676

7777
batch = Batch.objects.get(id=self.batch.id)
78-
self.assertEquals(task, batch.active_revert_task)
78+
self.assertEqual(task, batch.active_revert_task)
7979

8080
response = self.client.post(
8181
reverse('submit-revert', args=[self.batch.tool.shortid, self.batch.uid]),
8282
data={'comment':'testing reverts'})
83-
self.assertEquals(400, response.status_code)
83+
self.assertEqual(400, response.status_code)
8484

8585
def test_revert_batch_no_summary(self):
8686
response = self.client.post(
8787
reverse('submit-revert', args=[self.batch.tool.shortid, self.batch.uid]),
8888
data={})
89-
self.assertEquals(400, response.status_code)
89+
self.assertEqual(400, response.status_code)
9090

9191
@patch.object(RevertTask, 'revert_edit', fake_revert)
9292
def test_revert_batch_fine(self):
9393
response = self.client.post(
9494
reverse('submit-revert', args=[self.batch.tool.shortid, self.batch.uid]),
9595
data={'comment':'testing reverts'})
96-
self.assertEquals(302, response.status_code)
96+
self.assertEqual(302, response.status_code)
9797

9898
def test_initiate_revert_fine(self):
9999
response = self.client.get(
100100
reverse('initiate-revert', args=[self.batch.tool.shortid,
101101
self.batch.uid]))
102-
self.assertEquals(200, response.status_code)
102+
self.assertEqual(200, response.status_code)
103103

104104
@patch.object(RevertTask, 'revert_edit', fake_revert)
105105
def test_revert_batch_previous_canceled(self):
@@ -109,56 +109,56 @@ def test_revert_batch_previous_canceled(self):
109109
response = self.client.post(
110110
reverse('submit-revert', args=[self.batch.tool.shortid, self.batch.uid]),
111111
data={'comment':'testing reverts'})
112-
self.assertEquals(302, response.status_code)
113-
self.assertEquals(2, RevertTask.objects.count())
112+
self.assertEqual(302, response.status_code)
113+
self.assertEqual(2, RevertTask.objects.count())
114114

115115
def test_stop_not_logged_in(self):
116116
self.client.logout()
117117
task = RevertTask(batch=self.batch, user=self.mary, comment="Already reverting")
118118
task.save()
119119
response = self.client.post(
120120
reverse('stop-revert', args=[self.batch.tool.shortid, self.batch.uid]))
121-
self.assertEquals(401, response.status_code)
121+
self.assertEqual(401, response.status_code)
122122

123123
def test_stop_no_task(self):
124124
response = self.client.post(
125125
reverse('stop-revert', args=[self.batch.tool.shortid, self.batch.uid]))
126-
self.assertEquals(404, response.status_code)
126+
self.assertEqual(404, response.status_code)
127127

128128
def test_stop_different_user(self):
129129
task = RevertTask(batch=self.batch, user=self.john, comment="Already reverting")
130130
task.save()
131131
response = self.client.post(
132132
reverse('stop-revert', args=[self.batch.tool.shortid, self.batch.uid]))
133-
self.assertEquals(403, response.status_code)
133+
self.assertEqual(403, response.status_code)
134134

135135
def test_stop_task_already_complete(self):
136136
task = RevertTask(batch=self.batch, user=self.mary, comment="Already reverting")
137137
task.complete = True
138138
task.save()
139139
response = self.client.post(
140140
reverse('stop-revert', args=[self.batch.tool.shortid, self.batch.uid]))
141-
self.assertEquals(404, response.status_code)
141+
self.assertEqual(404, response.status_code)
142142

143143
def test_stop_fine(self):
144144
task = RevertTask(batch=self.batch, user=self.mary, comment="Already reverting")
145145
task.save()
146146
response = self.client.post(
147147
reverse('stop-revert', args=[self.batch.tool.shortid, self.batch.uid]))
148-
self.assertEquals(302, response.status_code)
148+
self.assertEqual(302, response.status_code)
149149
task = RevertTask.objects.get(id=task.id)
150150
self.assertTrue(task.cancel)
151151

152152
def test_oauth_tokens(self):
153153
task = RevertTask(batch=self.batch, user=self.mary, comment="Already reverting")
154-
self.assertEquals({'oauth_token':'12345','oauth_token_secret':'67890'},
154+
self.assertEqual({'oauth_token':'12345','oauth_token_secret':'67890'},
155155
task.oauth_tokens)
156156

157157
def test_oauth_tokens_canceled(self):
158158
task = RevertTask(batch=self.batch, user=self.mary, comment="Already reverting")
159159
task.cancel = True
160160
with self.assertRaises(ValueError):
161-
self.assertEquals({'oauth_token':'12345','oauth_token_secret':'67890'},
161+
self.assertEqual({'oauth_token':'12345','oauth_token_secret':'67890'},
162162
task.oauth_tokens)
163163

164164
def test_summary(self):

0 commit comments

Comments
 (0)