Skip to content

Commit c6dda7b

Browse files
committed
SQL Server on Travis
1 parent a1a35e9 commit c6dda7b

File tree

4 files changed

+58
-5
lines changed

4 files changed

+58
-5
lines changed

.ci/travis/linux/docker-build-test.sh

+31
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ cmake \
4747
-DSUPPRESS_QT_WARNINGS=ON \
4848
-DENABLE_MODELTEST=ON \
4949
-DENABLE_PGTEST=ON \
50+
-DENABLE_MSSQLTEST=ON \
5051
-DWITH_QSPATIALITE=ON \
5152
-DWITH_QWTPOLAR=OFF \
5253
-DWITH_APIDOC=OFF \
@@ -107,6 +108,36 @@ pushd /root/QGIS > /dev/null
107108
/root/QGIS/tests/testdata/provider/testdata_pg.sh
108109
popd > /dev/null # /root/QGIS
109110

111+
##############################
112+
# Restore SQL Server test data
113+
##############################
114+
115+
echo "Importing SQL Server test data..."
116+
117+
export SQLUSER=sa
118+
export SQLHOST=mssql
119+
export SQLPORT=1433
120+
export SQLPASSWORD='<YourStrong!Passw0rd>'
121+
export SQLDATABASE=qgis_test
122+
123+
export PATH=$PATH:/opt/mssql-tools/bin
124+
125+
pushd /root/QGIS > /dev/null
126+
/root/QGIS/tests/testdata/provider/testdata_mssql.sh
127+
popd > /dev/null # /root/QGIS
128+
129+
echo "Setting up DSN for test SQL Server"
130+
131+
cat <<EOT > /etc/odbc.ini
132+
[ODBC Data Sources]
133+
testsqlserver = ODBC Driver 17 for SQL Server
134+
135+
[testsqlserver]
136+
Driver = ODBC Driver 17 for SQL Server
137+
Description = Test SQL Server
138+
Server = mssql
139+
EOT
140+
110141
###########
111142
# Run tests
112143
###########

.docker/docker-compose.travis.yml

+7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ services:
55
environment:
66
- ALLOW_IP_RANGE="172.18.0.0/16"
77

8+
mssql:
9+
image: microsoft/mssql-server-linux:2017-latest
10+
environment:
11+
ACCEPT_EULA: Y
12+
SA_PASSWORD: <YourStrong!Passw0rd>
13+
814
qgis-deps:
915
tty: true
1016
image: qgis/qgis3-build-deps:${DOCKER_TAG}
@@ -13,6 +19,7 @@ services:
1319
- $HOME/.ccache:/root/.ccache # if changed, also change env var
1420
links:
1521
- postgres
22+
- mssql
1623
environment:
1724
- CCACHE_DIR=/root/.ccache
1825
- CTEST_BUILD_DIR=/root/QGIS

.docker/qgis3-build-deps.dockerfile

+16
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ LABEL Description="Docker container with QGIS dependencies" Vendor="QGIS.org" Ve
77
# && echo "deb-src http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu xenial main" >> /etc/apt/sources.list \
88
# && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 314DF160 \
99

10+
1011
RUN apt-get update \
1112
&& apt-get install -y software-properties-common \
1213
&& apt-get update \
1314
&& apt-get install -y \
15+
apt-transport-https \
1416
bison \
1517
ca-certificates \
1618
ccache \
@@ -40,6 +42,7 @@ RUN apt-get update \
4042
libqt5quick5 \
4143
libqt5quickcontrols2-5 \
4244
libqt5scintilla2-dev \
45+
libqt5sql5-odbc \
4346
libqt5sql5-sqlite \
4447
libqt5svg5-dev \
4548
libqt5webkit5-dev \
@@ -112,6 +115,19 @@ RUN apt-get update \
112115
pyopenssl \
113116
&& apt-get clean
114117

118+
119+
# MSSQL: client side
120+
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
121+
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | tee /etc/apt/sources.list.d/msprod.list
122+
RUN apt-get update
123+
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
124+
125+
# Avoid sqlcmd termination due to locale -- see https://github.com/Microsoft/mssql-docker/issues/163
126+
RUN echo "nb_NO.UTF-8 UTF-8" > /etc/locale.gen
127+
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
128+
RUN locale-gen
129+
130+
115131
RUN echo "alias python=python3" >> ~/.bash_aliases
116132

117133
ENV CC=/usr/lib/ccache/clang

tests/src/python/test_provider_mssql.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
QgsCoordinateReferenceSystem)
3131

3232
from qgis.PyQt.QtCore import QDate, QTime, QDateTime, QVariant
33-
3433
from utilities import unitTestDataPath
3534
from qgis.testing import start_app, unittest
3635
from providertestbase import ProviderTestCase
@@ -44,18 +43,18 @@ class TestPyQgsMssqlProvider(unittest.TestCase, ProviderTestCase):
4443
@classmethod
4544
def setUpClass(cls):
4645
"""Run before all tests"""
47-
cls.dbconn = "service='Driver={ODBC Driver 13 for SQL Server};server=127.0.0.1;uid=SA;pwd=<YourStrong!Passw0rd>' user='SA' password='<YourStrong!Passw0rd>'"
48-
46+
# These are the connection details for the SQL Server instance running on Travis
47+
cls.dbconn = "service='testsqlserver' user=sa password='<YourStrong!Passw0rd>' "
4948
if 'QGIS_MSSQLTEST_DB' in os.environ:
5049
cls.dbconn = os.environ['QGIS_MSSQLTEST_DB']
5150
# Create test layers
5251
cls.vl = QgsVectorLayer(
5352
cls.dbconn + ' sslmode=disable key=\'pk\' srid=4326 type=POINT table="qgis_test"."someData" (geom) sql=', 'test', 'mssql')
54-
assert(cls.vl.isValid())
53+
assert cls.vl.isValid(), cls.vl.dataProvider().error()
5554
cls.source = cls.vl.dataProvider()
5655
cls.poly_vl = QgsVectorLayer(
5756
cls.dbconn + ' sslmode=disable key=\'pk\' srid=4326 type=POLYGON table="qgis_test"."some_poly_data" (geom) sql=', 'test', 'mssql')
58-
assert(cls.poly_vl.isValid())
57+
assert cls.poly_vl.isValid(), cls.poly_vl.dataProvider().error()
5958
cls.poly_provider = cls.poly_vl.dataProvider()
6059

6160
@classmethod

0 commit comments

Comments
 (0)