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' py27-nobyte-lsof-numpy: python.version: '2.7' tox.env: 'py27-lsof-nobyte-numpy' # Coverage for: # - test_supports_breakpoint_module_global # - test_terminal_reporter_writer_attr (without xdist) # - "if write" branch in _pytest.assertion.rewrite # - numpy # - pytester's LsofFdLeakChecker (being skipped) PYTEST_COVERAGE: '1' py27-trial: python.version: '2.7' tox.env: 'py27-trial' python.needs_vc: True py27-pluggymaster-xdist: python.version: '2.7' tox.env: 'py27-pluggymaster-xdist' # Coverage for: # - except-IOError in _attempt_to_close_capture_file for py2. # Also seen with py27-nobyte (using xdist), and py27-xdist. # But no exception with py27-pexpect,py27-trial,py27-numpy. PYTEST_COVERAGE: '1' 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-xdist: python.version: '3.4' tox.env: 'py34-xdist' # Coverage for: # - _pytest.compat._bytes_to_ascii PYTEST_COVERAGE: '1' py35-xdist: python.version: '3.5' tox.env: 'py35-xdist' # Coverage for: # - test_supports_breakpoint_module_global PYTEST_COVERAGE: '1' py36-xdist: python.version: '3.6' tox.env: 'py36-xdist' py37: python.version: '3.7' tox.env: 'py37' # Coverage for: # - _py36_windowsconsoleio_workaround (with py36+) # - test_request_garbage (no xdist) PYTEST_COVERAGE: '1' py37-linting/docs/doctesting: python.version: '3.7' tox.env: 'linting,docs,doctesting' py37-trial/numpy: python.version: '3.7' tox.env: 'py37-trial,py37-numpy' 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)