trigger: - master - features variables: PYTEST_ADDOPTS: "--junitxml=build/test-results/$(tox.env).xml" python.needs_vc: False python.exe: "python" COVERAGE_FILE: "$(Build.Repository.LocalPath)/.coverage" COVERAGE_PROCESS_START: "$(Build.Repository.LocalPath)/.coveragerc" PYTEST_COVERAGE: '0' jobs: - job: 'Test' pool: vmImage: "vs2017-win2016" strategy: matrix: py27: python.version: '2.7' tox.env: 'py27' PYTEST_COVERAGE: '1' py27-nobyte-numpy-xdist: python.version: '2.7' tox.env: 'py27-nobyte-numpy-xdist' PYTEST_COVERAGE: '1' py27-trial: python.version: '2.7' tox.env: 'py27-trial' python.needs_vc: True PYTEST_COVERAGE: '1' py27-pluggymaster-xdist: python.version: '2.7' tox.env: 'py27-pluggymaster-xdist' pypy: python.version: 'pypy' tox.env: 'pypy' python.exe: 'pypy' # NOTE: pypy3 fails to install pip currently due to an interal error. # pypy3: # python.version: 'pypy3' # tox.env: 'pypy3' # python.exe: 'pypy3' py34: python.version: '3.4' tox.env: 'py34' PYTEST_COVERAGE: '1' py35: python.version: '3.5' tox.env: 'py35' PYTEST_COVERAGE: '1' py36: python.version: '3.6' tox.env: 'py36' PYTEST_COVERAGE: '1' py37: python.version: '3.7' tox.env: 'py37' PYTEST_COVERAGE: '1' py37-linting/docs/doctesting: python.version: '3.7' tox.env: 'linting,docs,doctesting' py37-xdist: python.version: '3.7' tox.env: 'py37-xdist' PYTEST_COVERAGE: '1' py37-trial/numpy: python.version: '3.7' tox.env: 'py37-trial,py37-numpy' PYTEST_COVERAGE: '1' py37-pluggymaster-xdist: python.version: '3.7' tox.env: 'py37-pluggymaster-xdist' maxParallel: 10 steps: - task: UsePythonVersion@0 condition: not(startsWith(variables['python.exe'], 'pypy')) inputs: versionSpec: '$(python.version)' architecture: 'x64' - script: choco install vcpython27 condition: eq(variables['python.needs_vc'], True) displayName: 'Install VC for py27' - script: choco install python.pypy condition: eq(variables['python.exe'], 'pypy') displayName: 'Install pypy' - script: choco install pypy3 condition: eq(variables['python.exe'], 'pypy3') displayName: 'Install pypy3' - task: PowerShell@2 inputs: targetType: 'inline' script: | Invoke-WebRequest -Uri "https://bootstrap.pypa.io/get-pip.py" -OutFile "get-pip.py" $(python.exe) get-pip.py condition: startsWith(variables['python.exe'], 'pypy') displayName: 'Install pip' - script: $(python.exe) -m pip install --upgrade pip && $(python.exe) -m pip install tox displayName: 'Install tox' - script: | call scripts/setup-coverage-vars.bat || goto :eof $(python.exe) -m tox -e $(tox.env) displayName: 'Run tests' - task: PublishTestResults@2 inputs: testResultsFiles: 'build/test-results/$(tox.env).xml' testRunTitle: '$(tox.env)' condition: succeededOrFailed() - script: call scripts\upload-coverage.bat displayName: 'Report and upload coverage' condition: eq(variables['PYTEST_COVERAGE'], '1') env: PYTHON: $(python.exe) CODECOV_TOKEN: $(CODECOV_TOKEN) PYTEST_CODECOV_NAME: $(tox.env)