@@ -138,3 +138,79 @@ jobs:
138138 env :
139139 OPENSTATSPEC_MARIADB_URL : mysql+pymysql://openstatspec:openstatspec@localhost:3306/openstatspec
140140 steps : *sql-test-steps
141+
142+ dolt-integration :
143+ name : Dolt 2.2.2 integration
144+ runs-on : ubuntu-latest
145+ env :
146+ OPENSTATSPEC_DOLT_URL : mysql+pymysql://openstatspec:openstatspec@127.0.0.1:13308/openstatspec
147+ steps :
148+ - uses : actions/checkout@v7
149+ - name : Checkout OpenStatSpec specification fixtures
150+ uses : actions/checkout@v7
151+ with : *specification-checkout
152+ - name : Checkout required SPSS engine
153+ uses : actions/checkout@v7
154+ with : *engine-checkout
155+ - uses : actions/setup-python@v7
156+ with :
157+ python-version : " 3.12"
158+ - name : Initialize Dolt 2.2.2
159+ run : |
160+ mkdir -p "$RUNNER_TEMP/openstatspec-dolt"
161+ docker run --rm \
162+ --volume "$RUNNER_TEMP/openstatspec-dolt:/var/lib/dolt" \
163+ --workdir /var/lib/dolt \
164+ dolthub/dolt:2.2.2 init \
165+ --name "OpenStatSpec CI" --email "ci@openstatspec.org"
166+ docker run --rm \
167+ --volume "$RUNNER_TEMP/openstatspec-dolt:/var/lib/dolt" \
168+ --workdir /var/lib/dolt \
169+ dolthub/dolt:2.2.2 sql \
170+ -q "CREATE DATABASE openstatspec"
171+ docker run --rm \
172+ --volume "$RUNNER_TEMP/openstatspec-dolt:/var/lib/dolt" \
173+ --workdir /var/lib/dolt \
174+ dolthub/dolt:2.2.2 sql \
175+ -q "CREATE USER 'openstatspec'@'%' IDENTIFIED BY 'openstatspec'; GRANT ALL PRIVILEGES ON openstatspec.* TO 'openstatspec'@'%'"
176+ docker run --detach --name openstatspec-dolt \
177+ --publish 127.0.0.1:13308:3306 \
178+ --volume "$RUNNER_TEMP/openstatspec-dolt:/var/lib/dolt" \
179+ --workdir /var/lib/dolt \
180+ dolthub/dolt:2.2.2 sql-server -H 0.0.0.0 -l warning
181+ - run : python -m pip install --upgrade pip
182+ - run : python -m pip install ./openstatspec-pyspssio
183+ - run : python -m pip install -e ".[dev,sql]"
184+ - name : Wait for Dolt
185+ run : |
186+ python - <<'PY'
187+ import time
188+ import pymysql
189+
190+ for attempt in range(30):
191+ try:
192+ connection = pymysql.connect(
193+ host="127.0.0.1",
194+ port=13308,
195+ user="openstatspec",
196+ password="openstatspec",
197+ database="openstatspec",
198+ )
199+ except pymysql.MySQLError:
200+ if attempt == 29:
201+ raise
202+ time.sleep(2)
203+ else:
204+ connection.close()
205+ break
206+ PY
207+ - run : python -m pytest -m services
208+ - name : Show Dolt logs on failure and stop server
209+ if : always()
210+ run : |
211+ if docker inspect openstatspec-dolt >/dev/null 2>&1; then
212+ if [ "${{ job.status }}" != "success" ]; then
213+ docker logs openstatspec-dolt
214+ fi
215+ docker rm --force openstatspec-dolt
216+ fi
0 commit comments