Skip to content

Commit f7f3c4e

Browse files
committed
using testcontainers
1 parent 4f96fbb commit f7f3c4e

File tree

2 files changed

+51
-12
lines changed

2 files changed

+51
-12
lines changed

.github/workflows/python-publish.yml

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,6 @@ jobs:
2828
runs-on: ubuntu-latest
2929
env:
3030
IMAGE: ${{ matrix.image }}
31-
services:
32-
iris:
33-
image: ${{ matrix.image }}
34-
env:
35-
IRIS_USERNAME: sqlalchemy
36-
IRIS_PASSWORD: sqlalchemy
37-
IRIS_NAMESPACE: TEST
38-
# /irisHealth.sh is just useless
39-
options: >-
40-
--health-cmd true
41-
--health-start-period 30s
4231
steps:
4332
- uses: actions/checkout@v3
4433
- name: Install requirements
@@ -49,7 +38,7 @@ jobs:
4938
pip install -e .
5039
- name: Run Tests
5140
run: |
52-
pytest --dburi iris://sqlalchemy:sqlalchemy@iris:1972/TEST
41+
pytest --container ${{ matrix.image }}
5342
5443
deploy:
5544
needs: test

tests/conftest.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,59 @@
11
from sqlalchemy.dialects import registry
22
import pytest
3+
import time
4+
5+
from sqlalchemy.testing.plugin.plugin_base import pre
6+
7+
from testcontainers.iris import IRISContainer
38

49
registry.register("iris.iris", "sqlalchemy_iris.iris", "IRISDialect_iris")
510
registry.register("iris.emb", "sqlalchemy_iris.embedded", "IRISDialect_emb")
611

712
pytest.register_assert_rewrite("sqlalchemy.testing.assertions")
813

914
from sqlalchemy.testing.plugin.pytestplugin import * # noqa
15+
16+
original_pytest_addoption = pytest_addoption
17+
18+
19+
def pytest_addoption(parser):
20+
original_pytest_addoption(parser)
21+
22+
group = parser.getgroup("iris")
23+
24+
group.addoption(
25+
"--container",
26+
action="store",
27+
default=None,
28+
type=str,
29+
help="Docker image with IRIS",
30+
)
31+
32+
33+
@pre
34+
def start_container(opt, file_config):
35+
global iris
36+
iris = None
37+
if not opt.container:
38+
return
39+
try:
40+
print("Starting IRIS container:", opt.container)
41+
iris = IRISContainer(
42+
opt.container,
43+
username="sqlalchemy",
44+
password="sqlalchemy",
45+
dbname="TEST",
46+
)
47+
iris.start()
48+
print("dburi:", iris.get_connection_url())
49+
opt.dburi = [iris.get_connection_url()]
50+
except Exception as e:
51+
iris = None
52+
pytest.exit("Failed to start IRIS container")
53+
54+
55+
def pytest_unconfigure(config):
56+
global iris
57+
if iris:
58+
print("Stopping IRIS container")
59+
iris.stop()

0 commit comments

Comments
 (0)