trigger:
  branches:
    include:
      - "master"
      - "*.x"
  tags:
    include:
      - "*"

jobs:
- job: 'mac'
  pool:
    vmImage: $[variables.vmImage]
  strategy:
    matrix:
      Python27-macOS1013:
        python.version: '2.7'
        TOXENV: py27
        vmImage: 'macOS-10.13'
        MACOS_VERSION: '10.13'
      Python37-macOS1013:
        python.version: '3.7'
        TOXENV: py37
        vmImage: 'macOS-10.13'
        MACOS_VERSION: '10.13'
      Python27-macOS1014:
        python.version: '2.7'
        TOXENV: py27
        vmImage: 'macOS-10.14'
        MACOS_VERSION: '10.14'
      Python37-macOS1014:
        python.version: '3.7'
        TOXENV: py37
        vmImage: 'macOS-10.14'
        MACOS_VERSION: '10.14'
  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '$(python.version)'
      architecture: 'x64'

  - script: brew update
    displayName: 'brew update'

  - script: brew install openssl@1.1
    displayName: 'Install OpenSSL'

  - script: pip install tox codecov
    displayName: 'Install tox & codecov'

  - script: git clone https://github.com/google/wycheproof
    displayName: 'Clone wycheproof'

  - script: |
      set -e
      set -x

      CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS=1 \
        LDFLAGS="/usr/local/opt/openssl\\@1.1/lib/libcrypto.a /usr/local/opt/openssl\\@1.1/lib/libssl.a" \
        CFLAGS="-I/usr/local/opt/openssl\\@1.1/include -Werror -Wno-error=deprecated-declarations -Wno-error=incompatible-pointer-types-discards-qualifiers -Wno-error=unused-function -Wno-error=unused-command-line-argument -mmacosx-version-min=10.9" \
        tox -r --  --color=yes --wycheproof-root=wycheproof
    displayName: 'Run tests'

  - script: codecov -e MACOS_VERSION,AGENT_OS,TOXENV
    displayName: 'Submit coverage'
    condition: succeeded()
- job: 'win'
  pool:
    vmImage: 'windows-2019'
  container: $[variables.containerImage]
  strategy:
    matrix:
      Python27-x86:
        TOXENV: py27
        containerImage: 'pyca/cryptography-runner-windows:py27-x86'
        OPENSSL_DIR: 'OpenSSL-Win32-2010'
        PYTHON_DIR: 'Python27'
        WINDOWS_ARCH: 'x86'
      Python27-x86-64:
        TOXENV: py27
        containerImage: 'pyca/cryptography-runner-windows:py27-x86_64'
        OPENSSL_DIR: 'OpenSSL-Win64-2010'
        PYTHON_DIR: 'Python27'
        WINDOWS_ARCH: 'x86_64'
      Python34-x86:
        TOXENV: py34
        containerImage: 'pyca/cryptography-runner-windows:py34-x86'
        OPENSSL_DIR: 'OpenSSL-Win32-2010'
        PYTHON_DIR: 'Python34'
        WINDOWS_ARCH: 'x86'
      Python34-x86-64:
        TOXENV: py34
        containerImage: 'pyca/cryptography-runner-windows:py34-x86_64'
        OPENSSL_DIR: 'OpenSSL-Win64-2010'
        PYTHON_DIR: 'Python34'
        WINDOWS_ARCH: 'x86_64'
      Python35-x86:
        TOXENV: py35
        containerImage: 'pyca/cryptography-runner-windows:py35-x86'
        OPENSSL_DIR: 'OpenSSL-Win32-2015'
        PYTHON_DIR: 'Python35'
        WINDOWS_ARCH: 'x86'
      Python35-x86-64:
        TOXENV: py35
        containerImage: 'pyca/cryptography-runner-windows:py35-x86_64'
        OPENSSL_DIR: 'OpenSSL-Win64-2015'
        PYTHON_DIR: 'Python35'
        WINDOWS_ARCH: 'x86_64'
      Python36-x86:
        TOXENV: py36
        containerImage: 'pyca/cryptography-runner-windows:py3-x86'
        OPENSSL_DIR: 'OpenSSL-Win32-2015'
        PYTHON_DIR: 'Python36'
        WINDOWS_ARCH: 'x86'
      Python36-x86-64:
        TOXENV: py36
        containerImage: 'pyca/cryptography-runner-windows:py3-x86_64'
        OPENSSL_DIR: 'OpenSSL-Win64-2015'
        PYTHON_DIR: 'Python36'
        WINDOWS_ARCH: 'x86_64'
      Python37-x86:
        TOXENV: py37
        containerImage: 'pyca/cryptography-runner-windows:py3-x86'
        OPENSSL_DIR: 'OpenSSL-Win32-2015'
        PYTHON_DIR: 'Python37'
        WINDOWS_ARCH: 'x86'
      Python37-x86-64:
        TOXENV: py37
        containerImage: 'pyca/cryptography-runner-windows:py3-x86_64'
        OPENSSL_DIR: 'OpenSSL-Win64-2015'
        PYTHON_DIR: 'Python37'
        WINDOWS_ARCH: 'x86_64'
      Python38-x86:
        TOXENV: py38
        containerImage: 'pyca/cryptography-runner-windows:py3-x86'
        OPENSSL_DIR: 'OpenSSL-Win32-2015'
        PYTHON_DIR: 'Python38'
        WINDOWS_ARCH: 'x86'
      Python38-x86-64:
        TOXENV: py38
        containerImage: 'pyca/cryptography-runner-windows:py3-x86_64'
        OPENSSL_DIR: 'OpenSSL-Win64-2015'
        PYTHON_DIR: 'Python38'
        WINDOWS_ARCH: 'x86_64'
  steps:
  - script: C:/%PYTHON_DIR%/Scripts/pip install codecov
    displayName: 'Install codecov'

  - script: git clone https://github.com/google/wycheproof
    displayName: 'Clone wycheproof'

  - script: |
        set INCLUDE=C:/%OPENSSL_DIR%/include;%INCLUDE%
        set LIB=C:/%OPENSSL_DIR%/lib;%LIB%
        C:/%PYTHON_DIR%/Scripts/tox -r --  --color=yes --wycheproof-root=wycheproof
        IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
    displayName: 'Run tests'

  - script: set PATH=%PATH%;C:/%PYTHON_DIR%/Scripts; & codecov -e AGENT_OS,TOXENV,WINDOWS_ARCH
    displayName: 'Submit coverage'
    condition: succeeded()
