parameters: coverage: false sudo_dependencies: sudo dependencies: apt patchcheck: true xvfb: true steps: - checkout: self clean: true fetchDepth: 5 # Work around a known issue affecting Ubuntu VMs on Pipelines - script: sudo setfacl -Rb /home/vsts displayName: 'Workaround ACL issue' - script: ${{ parameters.sudo_dependencies }} ./.azure-pipelines/posix-deps-${{ parameters.dependencies }}.sh $(openssl_version) displayName: 'Install dependencies' - script: ./configure --with-pydebug displayName: 'Configure CPython (debug)' - script: make -j4 displayName: 'Build CPython' - ${{ if eq(parameters.coverage, 'true') }}: - script: ./python -m venv venv && ./venv/bin/python -m pip install -U coverage displayName: 'Set up virtual environment' - script: ./venv/bin/python -m test.pythoninfo displayName: 'Display build info' - script: | $COMMAND -m coverage run --pylib -m test \ --fail-env-changed \ -uall,-cpu \ --junit-xml=$(build.binariesDirectory)/test-results.xml \ -x test_multiprocessing_fork \ -x test_multiprocessing_forkserver \ -x test_multiprocessing_spawn \ -x test_concurrent_futures displayName: 'Tests with coverage' env: ${{ if eq(parameters.xvfb, 'true') }}: COMMAND: xvfb-run ./venv/bin/python ${{ if ne(parameters.xvfb, 'true') }}: COMMAND: ./venv/bin/python - script: ./venv/bin/python -m coverage xml displayName: 'Generate coverage.xml' - script: source ./venv/bin/activate && bash <(curl -s https://codecov.io/bash) -y .github/codecov.yml displayName: 'Publish code coverage results' - ${{ if ne(parameters.coverage, 'true') }}: - script: make pythoninfo displayName: 'Display build info' - script: $COMMAND buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml" displayName: 'Tests' env: ${{ if eq(parameters.xvfb, 'true') }}: COMMAND: xvfb-run make ${{ if ne(parameters.xvfb, 'true') }}: COMMAND: make - ${{ if eq(parameters.patchcheck, 'true') }}: - script: | git fetch origin ./python Tools/patchcheck/patchcheck.py --ci true displayName: 'Run patchcheck.py' condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest')) - task: PublishTestResults@2 displayName: 'Publish Test Results' inputs: testResultsFiles: '$(build.binariesDirectory)/test-results.xml' mergeTestResults: true testRunTitle: $(testRunTitle) platform: $(testRunPlatform) condition: succeededOrFailed()