Skip to content

Commit 4618b80

Browse files
committed
chore: add Python 3.14 to test runs
1 parent d2a481d commit 4618b80

File tree

4 files changed

+55
-17
lines changed

4 files changed

+55
-17
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
on:
2+
push:
3+
branches:
4+
- main
5+
pull_request:
6+
name: Run Django Spanner integration tests against emulator 3.14
7+
jobs:
8+
system-tests:
9+
runs-on: ubuntu-latest
10+
11+
services:
12+
emulator:
13+
image: gcr.io/cloud-spanner-emulator/emulator:latest
14+
ports:
15+
- 9010:9010
16+
- 9020:9020
17+
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v4
21+
- name: Set up Python 3.14
22+
uses: actions/setup-python@v5
23+
with:
24+
python-version: "3.14"
25+
- name: Install nox
26+
run: python -m pip install nox
27+
- name: Run nox
28+
run: nox -s unit-3.14
29+
env:
30+
SPANNER_EMULATOR_HOST: localhost:9010
31+
GOOGLE_CLOUD_PROJECT: emulator-test-project
32+
GOOGLE_CLOUD_TESTS_CREATE_SPANNER_INSTANCE: true

.github/workflows/mockserver-tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ jobs:
1111
steps:
1212
- name: Checkout code
1313
uses: actions/checkout@v4
14-
- name: Set up Python 3.12
14+
- name: Set up Python 3.14
1515
uses: actions/setup-python@v5
1616
with:
17-
python-version: "3.12"
17+
python-version: "3.14"
1818
- name: Install nox
1919
run: python -m pip install nox
2020
- name: Run nox

noxfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"setup.py",
2525
]
2626

27-
MOCKSERVER_TEST_PYTHON_VERSION = "3.12"
27+
MOCKSERVER_TEST_PYTHON_VERSION = "3.14"
2828
DEFAULT_PYTHON_VERSION = "3.8"
2929
SYSTEM_TEST_PYTHON_VERSIONS = ["3.8"]
3030
UNIT_TEST_PYTHON_VERSIONS = ["3.8", "3.9", "3.10"]

tests/mockserver_tests/test_basics.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# limitations under the License.
1414
from google.cloud.spanner_v1 import (
1515
BatchCreateSessionsRequest,
16+
CreateSessionRequest,
1617
ExecuteSqlRequest,
1718
CommitRequest,
1819
)
@@ -36,9 +37,10 @@ def verify_select1(self, results):
3637
self.assertEqual(row[0], 1)
3738
self.assertEqual(len(result_list), 1)
3839
requests = self.spanner_service.requests
39-
self.assertEqual(len(requests), 2)
40+
self.assertEqual(len(requests), 3)
4041
self.assertIsInstance(requests[0], BatchCreateSessionsRequest)
41-
self.assertIsInstance(requests[1], ExecuteSqlRequest)
42+
self.assertIsInstance(requests[1], CreateSessionRequest)
43+
self.assertIsInstance(requests[2], ExecuteSqlRequest)
4244

4345
def test_select1(self):
4446
add_select1_result()
@@ -59,9 +61,10 @@ def test_django_select_singer(self):
5961
singers = Singer.objects.all()
6062
self.assertEqual(len(singers), 2)
6163
requests = self.spanner_service.requests
62-
self.assertEqual(len(requests), 2)
64+
self.assertEqual(len(requests), 3)
6365
self.assertIsInstance(requests[0], BatchCreateSessionsRequest)
64-
self.assertIsInstance(requests[1], ExecuteSqlRequest)
66+
self.assertIsInstance(requests[1], CreateSessionRequest)
67+
self.assertIsInstance(requests[2], ExecuteSqlRequest)
6568

6669
def test_django_select_singer_using_other_db(self):
6770
add_singer_query_result(
@@ -70,9 +73,10 @@ def test_django_select_singer_using_other_db(self):
7073
singers = Singer.objects.using("secondary").all()
7174
self.assertEqual(len(singers), 2)
7275
requests = self.spanner_service.requests
73-
self.assertEqual(len(requests), 2)
76+
self.assertEqual(len(requests), 3)
7477
self.assertIsInstance(requests[0], BatchCreateSessionsRequest)
75-
self.assertIsInstance(requests[1], ExecuteSqlRequest)
78+
self.assertIsInstance(requests[1], CreateSessionRequest)
79+
self.assertIsInstance(requests[2], ExecuteSqlRequest)
7680

7781
def test_insert_singer(self):
7882
add_update_count(
@@ -84,15 +88,16 @@ def test_insert_singer(self):
8488
singer = Singer(first_name="test", last_name="test")
8589
singer.save()
8690
requests = self.spanner_service.requests
87-
self.assertEqual(len(requests), 3)
91+
self.assertEqual(len(requests), 4)
8892
self.assertIsInstance(requests[0], BatchCreateSessionsRequest)
89-
self.assertIsInstance(requests[1], ExecuteSqlRequest)
90-
self.assertIsInstance(requests[2], CommitRequest)
93+
self.assertIsInstance(requests[1], CreateSessionRequest)
94+
self.assertIsInstance(requests[2], ExecuteSqlRequest)
95+
self.assertIsInstance(requests[3], CommitRequest)
9196
# The ExecuteSqlRequest should have 3 parameters:
9297
# 1. first_name
9398
# 2. last_name
9499
# 3. client-side auto-generated primary key
95-
self.assertEqual(len(requests[1].params), 3)
100+
self.assertEqual(len(requests[2].params), 3)
96101

97102
def test_insert_singer_with_disabled_random_primary_key(self):
98103
for db, config in DATABASES.items():
@@ -115,15 +120,16 @@ class LocalSinger(models.Model):
115120
singer = LocalSinger(first_name="test", last_name="test")
116121
singer.save()
117122
requests = self.spanner_service.requests
118-
self.assertEqual(len(requests), 3)
123+
self.assertEqual(len(requests), 4)
119124
self.assertIsInstance(requests[0], BatchCreateSessionsRequest)
120-
self.assertIsInstance(requests[1], ExecuteSqlRequest)
121-
self.assertIsInstance(requests[2], CommitRequest)
125+
self.assertIsInstance(requests[1], CreateSessionRequest)
126+
self.assertIsInstance(requests[2], ExecuteSqlRequest)
127+
self.assertIsInstance(requests[3], CommitRequest)
122128
# The ExecuteSqlRequest should have 2 parameters:
123129
# 1. first_name
124130
# 2. last_name
125131
# There should be no client-side auto-generated primary key.
126-
self.assertEqual(len(requests[1].params), 2)
132+
self.assertEqual(len(requests[2].params), 2)
127133
finally:
128134
for db, config in DATABASES.items():
129135
if config["ENGINE"] == "django_spanner":

0 commit comments

Comments
 (0)