Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Set configure.bat's line ending to CRLF. Sometimes batch scripts don't work
# properly on Windows if the line ending is LF and not CRLF
configure.bat eol=crlf
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,6 @@ pyvenv.cfg
/.pytest_cache/
lib64
tcl

# Ignore Jupyter Notebook related temp files
.ipynb_checkpoints/
10 changes: 10 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
# See https://config.travis-ci.com/ for a full list of configuration options.

os: linux

dist: xenial

language: python
python:
- "2.7"
- "3.6"
- "3.7"
- "3.8"

install:
- ./configure

script:
- tmp/bin/pytest
4 changes: 4 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
Release notes
-------------
### vNext

*2020-11-12* -- Add Azure Pipelines CI support

### Version 20.10.08

*2020-10-08* -- Add support for both python 2 + 3
Expand Down
45 changes: 45 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@

################################################################################
# We use Azure to run the full tests suites on Python 3.6
# on Windows (32 and 64), macOS and Linux (64 various distro)
################################################################################

jobs:

################################################################################
# These jobs are using VMs and Azure-provided Python 3.6
################################################################################

- template: etc/ci/azure-linux.yml
parameters:
job_name: ubuntu18_py36
image_name: ubuntu-18.04
python_versions: ['2.7', '3.6', '3.7', '3.8']
test_suites:
all: tmp/bin/pytest -n 2 -vvs

- template: etc/ci/azure-mac.yml
parameters:
job_name: macos1015_py36
image_name: macos-10.15
python_versions: ['2.7', '3.6', '3.7', '3.8']
test_suites:
all: tmp/bin/pytest -n 2 -vvs

- template: etc/ci/azure-win.yml
parameters:
job_name: win2019_32_py36
image_name: windows-2019
python_versions: ['2.7', '3.6', '3.7', '3.8']
python_architecture: x86
test_suites:
all: tmp\Scripts\pytest -vvs

- template: etc/ci/azure-win.yml
parameters:
job_name: win2019_64_py36
image_name: windows-2019
python_versions: ['2.7', '3.6', '3.7', '3.8']
python_architecture: x64
test_suites:
all: tmp\Scripts\pytest -vvs
121 changes: 121 additions & 0 deletions configure.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
@echo OFF
@setlocal
@rem Copyright (c) nexB Inc. http://www.nexb.com/ - All rights reserved.

@rem ################################
@rem # A configuration script for Windows
@rem #
@rem # The options and (optional) arguments are:
@rem # --clean : this is exclusive of anything else and cleans the environment
@rem # from built and installed files
@rem #
@rem # --python < path to python.exe> : this must be the first argument and set
@rem # the path to the Python executable to use. If < path to python.exe> is
@rem # set to "path", then the executable will be the python.exe available
@rem # in the PATH.
@rem ################################

@rem Current directory where this .bat files lives
set CFG_ROOT_DIR=%~dp0
@rem path where a configured Python should live in the current virtualenv if installed
set CONFIGURED_PYTHON=%CFG_ROOT_DIR%tmp\Scripts\python.exe
set PYTHON_EXECUTABLE=


@rem parse command line options and arguments
:collectopts
if "%1" EQU "--help" (goto cli_help)
if "%1" EQU "--clean" (call rmdir /s /q "%CFG_ROOT_DIR%tmp") && call exit /b
if "%1" EQU "--python" (set PROVIDED_PYTHON=%~2) && shift && shift && goto collectopts

@rem If we have a pre-configured Python in our virtualenv, reuse this as-is and run
if exist ""%CONFIGURED_PYTHON%"" (
set PYTHON_EXECUTABLE=%CONFIGURED_PYTHON%
goto run
)

@rem If we have a command arg for Python use this as-is
if ""%PROVIDED_PYTHON%""==""path"" (
@rem use a bare python available in the PATH
set PYTHON_EXECUTABLE=python
goto run
)
if exist ""%PROVIDED_PYTHON%"" (
set PYTHON_EXECUTABLE=%PROVIDED_PYTHON%
goto run
)


@rem otherwise we search for a suitable Python interpreter
:find_python
@rem First check the existence of the "py" launcher (available in Python 3)
@rem if we have it, check if we have a py -3 installed with the good version or a py 2.7
@rem if not, check if we have an old py 2.7
@rem exist if all fails

where py >nul 2>nul
if %ERRORLEVEL% == 0 (
@rem we have a py launcher, check for the availability of our required Python 3 version
py -3.6 --version >nul 2>nul
if %ERRORLEVEL% == 0 (
set PYTHON_EXECUTABLE=py -3.6
) else (
@rem we have no required python 3, let's try python 2:
py -2 --version >nul 2>nul
if %ERRORLEVEL% == 0 (
set PYTHON_EXECUTABLE=py -2
) else (
@rem we have py and no python 3 and 2, exit
echo * Unable to find an installation of Python.
exit /b 1
)
)
) else (
@rem we have no py launcher, check for a default Python 2 installation
if not exist ""%DEFAULT_PYTHON2%"" (
echo * Unable to find an installation of Python.
exit /b 1
) else (
set PYTHON_EXECUTABLE=%DEFAULT_PYTHON2%
)
)


:run
@rem without this things may not always work on Windows 10, but this makes things slower
set PYTHONDONTWRITEBYTECODE=1

call mkdir "%CFG_ROOT_DIR%tmp"
call curl -o "%CFG_ROOT_DIR%tmp\virtualenv.pyz" https://bootstrap.pypa.io/virtualenv.pyz
call %PYTHON_EXECUTABLE% "%CFG_ROOT_DIR%tmp\virtualenv.pyz" "%CFG_ROOT_DIR%tmp"
call "%CFG_ROOT_DIR%tmp\Scripts\activate"
call "%CFG_ROOT_DIR%tmp\Scripts\pip" install --upgrade pip virtualenv setuptools wheel
call "%CFG_ROOT_DIR%tmp\Scripts\pip" install -e .[testing]

@rem Return a proper return code on failure
if %ERRORLEVEL% neq 0 (
exit /b %ERRORLEVEL%
)
endlocal
goto activate


:cli_help
echo A configuration script for Windows
echo usage: configure [options] [path/to/config/directory]
echo.
echo The options and arguments are:
echo --clean : this is exclusive of anything else and cleans the environment
echo from built and installed files
echo.
echo --python path/to/python.exe : this is set to the path of an alternative
echo Python executable to use. If path/to/python.exe is set to "path",
echo then the executable will be the python.exe available in the PATH.
echo.


:activate
@rem Activate the virtualenv
if exist "%CFG_ROOT_DIR%tmp\Scripts\activate" (
"%CFG_ROOT_DIR%tmp\Scripts\activate"
)
36 changes: 36 additions & 0 deletions etc/ci/azure-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
parameters:
job_name: ''
image_name: ''
python_versions: []
test_suites: {}
python_architecture: x64

jobs:
- job: ${{ parameters.job_name }}

pool:
vmImage: ${{ parameters.image_name }}

strategy:
matrix:
${{ each pyver in parameters.python_versions }}:
${{ each tsuite in parameters.test_suites }}:
${{ format('py{0} {1}', pyver, tsuite.key) }}:
python_version: ${{ pyver }}
test_suite_label: ${{ tsuite.key }}
test_suite: ${{ tsuite.value }}
steps:
- checkout: self
fetchDepth: 10

- task: UsePythonVersion@0
inputs:
versionSpec: '$(python_version)'
architecture: '${{ parameters.python_architecture }}'
displayName: 'Install Python $(python_version)'

- script: ./configure
displayName: 'Run Configure'

- script: $(test_suite)
displayName: 'Run $(test_suite_label) tests with py$(python_version) on ${{ parameters.job_name }}'
36 changes: 36 additions & 0 deletions etc/ci/azure-mac.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
parameters:
job_name: ''
image_name: ''
python_versions: []
test_suites: {}
python_architecture: x64

jobs:
- job: ${{ parameters.job_name }}

pool:
vmImage: ${{ parameters.image_name }}

strategy:
matrix:
${{ each pyver in parameters.python_versions }}:
${{ each tsuite in parameters.test_suites }}:
${{ format('py{0} {1}', pyver, tsuite.key) }}:
python_version: ${{ pyver }}
test_suite_label: ${{ tsuite.key }}
test_suite: ${{ tsuite.value }}
steps:
- checkout: self
fetchDepth: 10

- task: UsePythonVersion@0
inputs:
versionSpec: '$(python_version)'
architecture: '${{ parameters.python_architecture }}'
displayName: 'Install Python $(python_version)'

- script: ./configure
displayName: 'Run Configure'

- script: $(test_suite)
displayName: 'Run $(test_suite_label) tests with py$(python_version) on ${{ parameters.job_name }}'
36 changes: 36 additions & 0 deletions etc/ci/azure-win.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
parameters:
job_name: ''
image_name: ''
python_versions: []
test_suites: {}
python_architecture: x86

jobs:
- job: ${{ parameters.job_name }}

pool:
vmImage: ${{ parameters.image_name }}

strategy:
matrix:
${{ each pyver in parameters.python_versions }}:
${{ each tsuite in parameters.test_suites }}:
${{ format('py{0} {1}', pyver, tsuite.key) }}:
python_version: ${{ pyver }}
test_suite_label: ${{ tsuite.key }}
test_suite: ${{ tsuite.value }}
steps:
- checkout: self
fetchDepth: 10

- task: UsePythonVersion@0
inputs:
versionSpec: '$(python_version)'
architecture: '${{ parameters.python_architecture }}'
displayName: 'Install Python $(python_version)'

- script: configure --python path
displayName: 'Run Configure'

- script: $(test_suite)
displayName: 'Run $(test_suite_label) tests with py$(python_version) on ${{ parameters.job_name }}'
1 change: 0 additions & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ install_requires =
requests >= 2.7.0, < 3.0.0
intbitset >= 2.3.0, < 3.0
saneyaml
typing >=3.6, < 3.7
setup_requires = setuptools_scm[toml] >= 4

[options.packages.find]
Expand Down