trigger:
  batch: true
  branches:
    include:
    - '*'
    exclude:
    - 'spacy.io'
  paths:
    exclude:
    - 'website/*'
    - '*.md'
pr:
  paths:
    exclude:
    - 'website/*'
    - '*.md'

jobs:

# Perform basic checks for most important errors (syntax etc.) Uses the config
# defined in .flake8 and overwrites the selected codes.
- job: 'Validate'
  pool:
    vmImage: 'ubuntu-16.04'
  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.7'
  - script: |
      pip install flake8
      python -m flake8 spacy --count --select=E901,E999,F821,F822,F823 --show-source --statistics
    displayName: 'flake8'

- job: 'Test'
  dependsOn: 'Validate'
  strategy:
    matrix:
      Python35Linux:
        imageName: 'ubuntu-16.04'
        python.version: '3.5'
      Python35Windows:
        imageName: 'vs2017-win2016'
        python.version: '3.5'
      Python36Linux:
        imageName: 'ubuntu-16.04'
        python.version: '3.6'
      Python36Windows:
        imageName: 'vs2017-win2016'
        python.version: '3.6'
      Python36Mac:
        imageName: 'macos-10.13'
        python.version: '3.6'
      # Don't test on 3.7 for now to speed up builds
      # Python37Linux:
      #   imageName: 'ubuntu-16.04'
      #   python.version: '3.7'
      # Python37Windows:
      #   imageName: 'vs2017-win2016'
      #   python.version: '3.7'
      # Python37Mac:
      #   imageName: 'macos-10.13'
      #   python.version: '3.7'
      Python38Linux:
        imageName: 'ubuntu-16.04'
        python.version: '3.8'
      Python38Windows:
        imageName: 'vs2017-win2016'
        python.version: '3.8'
      Python38Mac:
        imageName: 'macos-10.13'
        python.version: '3.8'
    maxParallel: 4
  pool:
    vmImage: $(imageName)

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '$(python.version)'
      architecture: 'x64'

  - script: |
      python -m pip install -U setuptools
      pip install -r requirements.txt
    displayName: 'Install dependencies'

  - script: |
      python setup.py build_ext --inplace
      python setup.py sdist --formats=gztar
    displayName: 'Compile and build sdist'

  - task: DeleteFiles@1
    inputs:
      contents: 'spacy'
    displayName: 'Delete source directory'

  - bash: |
      SDIST=$(python -c "import os;print(os.listdir('./dist')[-1])" 2>&1)
      pip install dist/$SDIST
    displayName: 'Install from sdist'

  - script: python -m pytest --pyargs spacy
    displayName: 'Run tests'
