summaryrefslogtreecommitdiff
path: root/azure-pipelines.yml
blob: de5d27c01b3e7335e65233786d48997c046f4435 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
trigger:
- master
- features

variables:
  PYTEST_ADDOPTS: "--junitxml=build/test-results/$(tox.env).xml -vv"
  python.needs_vc: False
  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-twisted:
        python.version: '2.7'
        tox.env: 'py27-twisted'
        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-twisted,py27-numpy.
        PYTEST_COVERAGE: '1'
      pypy:
        python.version: 'pypy2'
        tox.env: 'pypy'
      pypy3:
        python.version: 'pypy3'
        tox.env: '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-twisted/numpy:
        python.version: '3.7'
        tox.env: 'py37-twisted,py37-numpy'
      py37-pluggymaster-xdist:
        python.version: '3.7'
        tox.env: 'py37-pluggymaster-xdist'
    maxParallel: 10

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

  - script: choco install vcpython27
    condition: eq(variables['python.needs_vc'], True)
    displayName: 'Install VC for py27'

  - script: python -m pip install --upgrade pip && python -m pip install tox
    displayName: 'Install tox'

  - script: |
      call scripts/setup-coverage-vars.bat || goto :eof
      python -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:
      CODECOV_TOKEN: $(CODECOV_TOKEN)
      PYTEST_CODECOV_NAME: $(tox.env)