Skip to content

Commit 18813a6

Browse files
committed
Updates to Gihub actions and Appveyor config.
1 parent 15a26f4 commit 18813a6

File tree

11 files changed

+264
-192
lines changed

11 files changed

+264
-192
lines changed

.flake8

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ ignore =
44
E221,
55
# multi spaces before op - I line up assignments often
66
E401,
7-
# multiple imports on one line
7+
# multiple imports on one line
8+
E722,
9+
# ignore bare except in tests

.github/workflows/ubuntu_build.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -189,15 +189,15 @@ jobs:
189189
pytest "./tests/mysql_test.py"
190190
191191
- name: Run SQL Server 2017 tests
192-
env:
193-
PYODBC_SQLSERVER: "DRIVER={ODBC Driver 17 for SQL Server};SERVER=localhost,1401;UID=sa;PWD=StrongPassword2017;DATABASE=test"
194-
run: |
195-
cd "$GITHUB_WORKSPACE"
196-
python "./tests/sqlserver_test.py"
192+
env:
193+
PYODBC_SQLSERVER: "DRIVER={ODBC Driver 17 for SQL Server};SERVER=localhost,1401;UID=sa;PWD=StrongPassword2017;DATABASE=test"
194+
run: |
195+
cd "$GITHUB_WORKSPACE"
196+
python "./tests/sqlserver_test.py"
197197
198198
- name: Run SQL Server 2019 tests
199-
env:
200-
PYODBC_SQLSERVER: "DRIVER={ODBC Driver 18 for SQL Server};SERVER=localhost,1402;UID=sa;PWD=StrongPassword2019;DATABASE=test;Encrypt=Optional"
201-
run: |
202-
cd "$GITHUB_WORKSPACE"
203-
python "./tests/sqlserver_test.py"
199+
env:
200+
PYODBC_SQLSERVER: "DRIVER={ODBC Driver 18 for SQL Server};SERVER=localhost,1402;UID=sa;PWD=StrongPassword2019;DATABASE=test;Encrypt=Optional"
201+
run: |
202+
cd "$GITHUB_WORKSPACE"
203+
python "./tests/sqlserver_test.py"

appveyor.yml

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ environment:
3434
APVYR_RUN_POSTGRES_TESTS: "true"
3535
APVYR_RUN_MYSQL_TESTS: "true"
3636
APVYR_GENERATE_WHEELS: "false"
37-
APVYR_VERBOSE: "false"
37+
APVYR_VERBOSE: "true"
3838
# SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
3939
# /E:ON and /V:ON options are not enabled in the batch script interpreter
4040
# http://stackoverflow.com/a/13751649/163740
@@ -53,23 +53,6 @@ environment:
5353
# all the Python versions to be tested, both 32-bit and 64-bit
5454
# ref: https://www.appveyor.com/docs/windows-images-software/#python
5555

56-
# Python 2.7 must be built with Visual Studio 9.0, which is available only
57-
# on AppVeyor Windows images Visual Studio 2013 and Visual Studio 2015
58-
59-
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
60-
PYTHON_HOME: "C:\\Python27"
61-
62-
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
63-
PYTHON_HOME: "C:\\Python27-x64"
64-
65-
# Python 3.5+ need at least the Visual Studio 2015 image
66-
67-
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
68-
PYTHON_HOME: "C:\\Python36"
69-
70-
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
71-
PYTHON_HOME: "C:\\Python36-x64"
72-
7356
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
7457
PYTHON_HOME: "C:\\Python37"
7558

@@ -105,6 +88,7 @@ cache:
10588

10689
install:
10790
- ps: .\appveyor\install.ps1
91+
- call .\appveyor\install.cmd
10892

10993
# ref: https://www.appveyor.com/docs/services-databases/
11094
services:

appveyor/after_test.cmd

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
IF "%APVYR_GENERATE_WHEELS%" == "true" (
2+
ECHO *** pip install the "wheel" module
3+
"%PYTHON_HOME%\python" -m pip install wheel --quiet --no-warn-script-location
4+
ECHO.
5+
ECHO *** Generate the wheel file
6+
%WITH_COMPILER% "%PYTHON_HOME%\python" setup.py bdist_wheel
7+
ECHO.
8+
ECHO *** \dist directory listing:
9+
DIR /B dist
10+
) ELSE (
11+
ECHO *** Skipping generation of the wheel file
12+
ECHO.
13+
)

appveyor/compile.cmd

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
:: To build extensions for 64 bit Python 2, we need to configure environment
2+
:: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of:
3+
:: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0)
4+
::
5+
:: To build extensions for 64 bit Python 3, we need to configure environment
6+
:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
7+
:: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1)
8+
::
9+
:: 32 bit builds, and 64-bit builds for 3.5 and beyond, do not require specific
10+
:: environment configurations.
11+
::
12+
:: Note: this script needs to be run with the /E:ON and /V:ON flags for the
13+
:: cmd interpreter, at least for (SDK v7.0)
14+
::
15+
:: More details at:
16+
:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows
17+
:: http://stackoverflow.com/a/13751649/163740
18+
::
19+
:: Author: Olivier Grisel
20+
:: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
21+
::
22+
:: The repeated CALL commands at the end of this file look redundant, but
23+
:: if you move them outside the IF clauses, they do not run properly in
24+
:: the SET_SDK_64==Y case, I don't know why.
25+
@ECHO OFF
26+
27+
SET COMMAND_TO_RUN=%*
28+
SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows
29+
SET WIN_WDK=C:\Program Files (x86)\Windows Kits\10\Include\wdf
30+
31+
:: Extract the major and minor versions of the current Python interpreter, and bitness
32+
FOR /F "tokens=* USEBACKQ" %%F IN (`%PYTHON_HOME%\python -c "import sys; sys.stdout.write(str(sys.version_info.major))"`) DO (
33+
SET PYTHON_MAJOR_VERSION=%%F
34+
)
35+
FOR /F "tokens=* USEBACKQ" %%F IN (`%PYTHON_HOME%\python -c "import sys; sys.stdout.write(str(sys.version_info.minor))"`) DO (
36+
SET PYTHON_MINOR_VERSION=%%F
37+
)
38+
FOR /F "tokens=* USEBACKQ" %%F IN (`%PYTHON_HOME%\python -c "import sys; sys.stdout.write('64' if sys.maxsize > 2**32 else '32')"`) DO (
39+
SET PYTHON_ARCH=%%F
40+
)
41+
ECHO Inferred Python version (major, minor, arch): %PYTHON_MAJOR_VERSION% %PYTHON_MINOR_VERSION% %PYTHON_ARCH%
42+
43+
:: Based on the Python version, determine what SDK version to use, and whether
44+
:: to set the SDK for 64-bit.
45+
IF %PYTHON_MAJOR_VERSION% EQU 2 (
46+
SET WINDOWS_SDK_VERSION="v7.0"
47+
SET SET_SDK_64=Y
48+
) ELSE (
49+
IF %PYTHON_MAJOR_VERSION% EQU 3 (
50+
SET WINDOWS_SDK_VERSION="v7.1"
51+
IF %PYTHON_MINOR_VERSION% LEQ 4 (
52+
SET SET_SDK_64=Y
53+
) ELSE (
54+
SET SET_SDK_64=N
55+
IF EXIST "%WIN_WDK%" (
56+
:: See: https://connect.microsoft.com/VisualStudio/feedback/details/1610302/
57+
REN "%WIN_WDK%" 0wdf
58+
)
59+
)
60+
) ELSE (
61+
ECHO Unsupported Python version: "%PYTHON_MAJOR_VERSION%"
62+
EXIT 1
63+
)
64+
)
65+
66+
IF %PYTHON_ARCH% EQU 64 (
67+
IF %SET_SDK_64% == Y (
68+
ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %PYTHON_MAJOR_VERSION% on a 64 bit architecture
69+
SET DISTUTILS_USE_SDK=1
70+
SET MSSdk=1
71+
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
72+
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
73+
ECHO Executing: %COMMAND_TO_RUN%
74+
CALL %COMMAND_TO_RUN% || EXIT 1
75+
) ELSE (
76+
ECHO Using default MSVC build environment for 64 bit architecture
77+
ECHO Executing: %COMMAND_TO_RUN%
78+
CALL %COMMAND_TO_RUN% || EXIT 1
79+
)
80+
) ELSE (
81+
ECHO Using default MSVC build environment for 32 bit architecture
82+
ECHO Executing: %COMMAND_TO_RUN%
83+
CALL %COMMAND_TO_RUN% || EXIT 1
84+
)

appveyor/install.cmd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ECHO *** pip install pytest and other dev requirements ***
2+
"%PYTHON_HOME%\python" -m pip install -r requirements-dev.txt

appveyor/test_connect.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import pyodbc
3+
c = pyodbc.connect(sys.argv[1])
4+
c.close()

appveyor/test_script.cmd

Lines changed: 42 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ IF NOT "%APVYR_RUN_TESTS%" == "true" (
1515
)
1616

1717

18+
FOR /F "tokens=* USEBACKQ" %%F IN (`%PYTHON_HOME%\python -c "import sys; sys.stdout.write('64' if sys.maxsize > 2**32 else '32')"`) DO (
19+
SET PYTHON_ARCH=%%F
20+
)
21+
22+
1823
:mssql
1924
ECHO.
2025
ECHO ############################################################
@@ -37,59 +42,41 @@ IF ERRORLEVEL 1 (
3742
GOTO :postgresql
3843
)
3944

40-
:mssql1
41-
REM Native Client 10.0 is so old, it might not be available on the server
42-
SET DRIVER={SQL Server Native Client 10.0}
43-
SET CONN_STR=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;
44-
ECHO.
45-
ECHO *** Run tests using driver: "%DRIVER%"
46-
"%PYTHON_HOME%\python" appveyor\test_connect.py "%CONN_STR%"
47-
IF ERRORLEVEL 1 (
48-
REM Don't fail the tests if the driver can't be found
49-
ECHO *** INFO: Could not connect using the connection string:
50-
ECHO "%CONN_STR%"
51-
GOTO :mssql2
52-
)
53-
SET PYTHON_ARGS="%CONN_STR:"=\"%"
54-
IF "%APVYR_VERBOSE%" == "true" (
55-
SET PYTHON_ARGS=%PYTHON_ARGS% --verbose
56-
)
57-
"%PYTHON_HOME%\python" "tests\sqlserver_test.py" %PYTHON_ARGS%
58-
IF ERRORLEVEL 1 SET OVERALL_RESULT=1
5945

6046
:mssql2
6147
REM Native Client 11.0 is so old, it might not be available on the server
6248
SET DRIVER={SQL Server Native Client 11.0}
63-
SET CONN_STR=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;
49+
SET PYODBC_SQLSERVER=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;
6450
ECHO.
6551
ECHO *** Run tests using driver: "%DRIVER%"
66-
"%PYTHON_HOME%\python" appveyor\test_connect.py "%CONN_STR%"
52+
"%PYTHON_HOME%\python" appveyor\test_connect.py "%PYODBC_SQLSERVER%"
6753
IF ERRORLEVEL 1 (
6854
REM Don't fail the tests if the driver can't be found
6955
ECHO *** INFO: Could not connect using the connection string:
70-
ECHO "%CONN_STR%"
56+
ECHO "%PYODBC_SQLSERVER%"
7157
GOTO :mssql3
7258
)
73-
SET PYTHON_ARGS="%CONN_STR:"=\"%"
59+
SET PYTHON_ARGS=""
7460
IF "%APVYR_VERBOSE%" == "true" (
7561
SET PYTHON_ARGS=%PYTHON_ARGS% --verbose
7662
)
7763
"%PYTHON_HOME%\python" "tests\sqlserver_test.py" %PYTHON_ARGS%
7864
IF ERRORLEVEL 1 SET OVERALL_RESULT=1
7965

66+
8067
:mssql3
8168
SET DRIVER={ODBC Driver 11 for SQL Server}
82-
SET CONN_STR=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;
69+
SET PYODBC_SQLSERVER=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;
8370
ECHO.
8471
ECHO *** Run tests using driver: "%DRIVER%"
85-
"%PYTHON_HOME%\python" appveyor\test_connect.py "%CONN_STR%"
72+
"%PYTHON_HOME%\python" appveyor\test_connect.py "%PYODBC_SQLSERVER%"
8673
IF ERRORLEVEL 1 (
8774
ECHO *** ERROR: Could not connect using the connection string:
88-
ECHO "%CONN_STR%"
75+
ECHO "%PYODBC_SQLSERVER%"
8976
SET OVERALL_RESULT=1
9077
GOTO :mssql4
9178
)
92-
SET PYTHON_ARGS="%CONN_STR:"=\"%"
79+
SET PYTHON_ARGS=""
9380
IF "%APVYR_VERBOSE%" == "true" (
9481
SET PYTHON_ARGS=%PYTHON_ARGS% --verbose
9582
)
@@ -98,17 +85,17 @@ IF ERRORLEVEL 1 SET OVERALL_RESULT=1
9885

9986
:mssql4
10087
SET DRIVER={ODBC Driver 13 for SQL Server}
101-
SET CONN_STR=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;
88+
SET PYODBC_SQLSERVER=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;
10289
ECHO.
10390
ECHO *** Run tests using driver: "%DRIVER%"
104-
"%PYTHON_HOME%\python" appveyor\test_connect.py "%CONN_STR%"
91+
"%PYTHON_HOME%\python" appveyor\test_connect.py "%PYODBC_SQLSERVER%"
10592
IF ERRORLEVEL 1 (
10693
ECHO *** ERROR: Could not connect using the connection string:
107-
ECHO "%CONN_STR%"
94+
ECHO "%PYODBC_SQLSERVER%"
10895
SET OVERALL_RESULT=1
10996
GOTO :mssql5
11097
)
111-
SET PYTHON_ARGS="%CONN_STR:"=\"%"
98+
SET PYTHON_ARGS=""
11299
IF "%APVYR_VERBOSE%" == "true" (
113100
SET PYTHON_ARGS=%PYTHON_ARGS% --verbose
114101
)
@@ -117,17 +104,17 @@ IF ERRORLEVEL 1 SET OVERALL_RESULT=1
117104

118105
:mssql5
119106
SET DRIVER={ODBC Driver 17 for SQL Server}
120-
SET CONN_STR=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;
107+
SET PYODBC_SQLSERVER=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;
121108
ECHO.
122109
ECHO *** Run tests using driver: "%DRIVER%"
123-
"%PYTHON_HOME%\python" appveyor\test_connect.py "%CONN_STR%"
110+
"%PYTHON_HOME%\python" appveyor\test_connect.py "%PYODBC_SQLSERVER%"
124111
IF ERRORLEVEL 1 (
125112
ECHO *** ERROR: Could not connect using the connection string:
126-
ECHO "%CONN_STR%"
113+
ECHO "%PYODBC_SQLSERVER%"
127114
SET OVERALL_RESULT=1
128115
GOTO :mssql6
129116
)
130-
SET PYTHON_ARGS="%CONN_STR:"=\"%"
117+
SET PYTHON_ARGS=""
131118
IF "%APVYR_VERBOSE%" == "true" (
132119
SET PYTHON_ARGS=%PYTHON_ARGS% --verbose
133120
)
@@ -136,17 +123,17 @@ IF ERRORLEVEL 1 SET OVERALL_RESULT=1
136123

137124
:mssql6
138125
SET DRIVER={ODBC Driver 18 for SQL Server}
139-
SET CONN_STR=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;Encrypt=Optional;
126+
SET PYODBC_SQLSERVER=Driver=%DRIVER%;Server=%MSSQL_INSTANCE%;Database=test_db;UID=sa;PWD=Password12!;Encrypt=Optional;
140127
ECHO.
141128
ECHO *** Run tests using driver: "%DRIVER%"
142-
"%PYTHON_HOME%\python" appveyor\test_connect.py "%CONN_STR%"
129+
"%PYTHON_HOME%\python" appveyor\test_connect.py "%PYODBC_SQLSERVER%"
143130
IF ERRORLEVEL 1 (
144131
ECHO *** ERROR: Could not connect using the connection string:
145-
ECHO "%CONN_STR%"
132+
ECHO "%PYODBC_SQLSERVER%"
146133
SET OVERALL_RESULT=1
147134
GOTO :postgresql
148135
)
149-
SET PYTHON_ARGS="%CONN_STR:"=\"%"
136+
SET PYTHON_ARGS=""
150137
IF "%APVYR_VERBOSE%" == "true" (
151138
SET PYTHON_ARGS=%PYTHON_ARGS% --verbose
152139
)
@@ -168,22 +155,26 @@ ECHO *** Get PostgreSQL version
168155
SET PGPASSWORD=Password12!
169156
"%POSTGRES_PATH%\bin\psql" -U postgres -d postgres -c "SELECT version()"
170157

171-
SET DRIVER={PostgreSQL Unicode^(x64^)}
172-
SET CONN_STR=Driver=%DRIVER%;Server=localhost;Port=5432;Database=postgres;Uid=postgres;Pwd=Password12!;
158+
IF %PYTHON_ARCH% EQU 32 (
159+
SET DRIVER={PostgreSQL Unicode}
160+
) ELSE (
161+
SET DRIVER={PostgreSQL Unicode^(x64^)}
162+
)
163+
SET PYODBC_POSTGRESQL=Driver=%DRIVER%;Server=localhost;Port=5432;Database=postgres;Uid=postgres;Pwd=Password12!;
173164
ECHO.
174165
ECHO *** Run tests using driver: "%DRIVER%"
175-
"%PYTHON_HOME%\python" appveyor\test_connect.py "%CONN_STR%"
166+
"%PYTHON_HOME%\python" appveyor\test_connect.py "%PYODBC_POSTGRESQL%"
176167
IF ERRORLEVEL 1 (
177168
ECHO *** ERROR: Could not connect using the connection string:
178-
ECHO "%CONN_STR%"
169+
ECHO "%PYODBC_POSTGRESQL%"
179170
SET OVERALL_RESULT=1
180171
GOTO :mysql
181172
)
182-
SET PYTHON_ARGS="%CONN_STR:"=\"%"
173+
SET PYTHON_ARGS=""
183174
IF "%APVYR_VERBOSE%" == "true" (
184175
SET PYTHON_ARGS=%PYTHON_ARGS% --verbose
185176
)
186-
"%PYTHON_HOME%\python" "%TESTS_DIR%\pgtests.py" %PYTHON_ARGS%
177+
"%PYTHON_HOME%\python" "tests\postgresql_test.py" %PYTHON_ARGS%
187178
IF ERRORLEVEL 1 SET OVERALL_RESULT=1
188179

189180

@@ -203,27 +194,22 @@ ECHO *** Get MySQL version
203194
"%MYSQL_PATH%\bin\mysql" -u root -pPassword12! -e "STATUS"
204195

205196
:mysql1
206-
REM MySQL 8.0 drivers apparently don't work on Python 2.7 ("system error 126") so use 5.3 instead.
207-
IF %PYTHON_MAJOR_VERSION% EQU 2 (
208-
SET DRIVER={MySQL ODBC 5.3 ANSI Driver}
209-
) ELSE (
210-
SET DRIVER={MySQL ODBC 8.0 ANSI Driver}
211-
)
212-
SET CONN_STR=Driver=%DRIVER%;Charset=utf8mb4;Server=localhost;Port=3306;Database=mysql;Uid=root;Pwd=Password12!;
197+
SET DRIVER={MySQL ODBC 8.0 ANSI Driver}
198+
SET PYODBC_MYSQL=Driver=%DRIVER%;Charset=utf8mb4;Server=localhost;Port=3306;Database=mysql;Uid=root;Pwd=Password12!;
213199
ECHO.
214200
ECHO *** Run tests using driver: "%DRIVER%"
215-
"%PYTHON_HOME%\python" appveyor\test_connect.py "%CONN_STR%"
201+
"%PYTHON_HOME%\python" appveyor\test_connect.py "%PYODBC_MYSQL%"
216202
IF ERRORLEVEL 1 (
217203
ECHO *** ERROR: Could not connect using the connection string:
218-
ECHO "%CONN_STR%"
204+
ECHO "%PYODBC_MYSQL%"
219205
SET OVERALL_RESULT=1
220206
GOTO :end
221207
)
222-
SET PYTHON_ARGS="%CONN_STR:"=\"%"
208+
SET PYTHON_ARGS=""
223209
IF "%APVYR_VERBOSE%" == "true" (
224210
SET PYTHON_ARGS=%PYTHON_ARGS% --verbose
225211
)
226-
"%PYTHON_HOME%\python" "%TESTS_DIR%\mysqltests.py" %PYTHON_ARGS%
212+
"%PYTHON_HOME%\python" "tests\mysql_test.py" %PYTHON_ARGS%
227213
IF ERRORLEVEL 1 SET OVERALL_RESULT=1
228214

229215

0 commit comments

Comments
 (0)