Skip to content

Set up CI with Azure Pipelines #12617

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Nov 2, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Python package
# Create and test a Python package on multiple Python versions.
# Add steps that analyze code, save the dist with the build record, publish to a PyPI-compatible index, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/python

jobs:

- job: 'Test'
pool:
vmImage: 'Ubuntu 16.04'
strategy:
matrix:
Python35:
python.version: '3.5'
Python36:
python.version: '3.6'
Python37:
python.version: '3.7'
maxParallel: 4

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

- script: |

python -m pip install --upgrade pip
pip install -r requirements/testing/travis_all.txt -r requirements/testing/travis36.txt

displayName: 'Install dependencies'

- script: |

export MPLLOCALFREETYPE=1
pip install -ve .

displayName: "Install self"

- script: env
displayName: 'print env'

- script: |
env
pytest --junitxml=junit/test-results.xml -raR --maxfail=50 --timeout=300 --durations=25 --cov-report= --cov=lib -n 2
displayName: 'pytest'

- task: PublishTestResults@2
inputs:
testResultsFiles: '**/test-results.xml'
testRunTitle: 'Python $(python.version)'
condition: succeededOrFailed()
5 changes: 4 additions & 1 deletion lib/matplotlib/tests/test_backend_bases.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import matplotlib.pyplot as plt
import matplotlib.transforms as transforms
import matplotlib.path as path

import os
import numpy as np
import pytest

Expand Down Expand Up @@ -56,8 +56,11 @@ def test_get_default_filename(tmpdir):


@pytest.mark.backend('pdf')
@pytest.mark.skipif('SYSTEM_TEAMFOUNDATIONCOLLECTIONURI' in os.environ,
reason="this test fails an azure for unknown reasons")
def test_non_gui_warning():
plt.subplots()

with pytest.warns(UserWarning) as rec:
plt.show()
assert len(rec) == 1
Expand Down
3 changes: 2 additions & 1 deletion lib/matplotlib/tests/test_backend_nbagg.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ def _notebook_run(nb_file):
"""Execute a notebook via nbconvert and collect output.
:returns (parsed nb object, execution errors)
"""
with tempfile.NamedTemporaryFile(suffix=".ipynb") as fout:
with tempfile.NamedTemporaryFile(suffix=".ipynb",
mode='w+t') as fout:
args = ["jupyter", "nbconvert", "--to", "notebook", "--execute",
"--ExecutePreprocessor.timeout=500",
"--output", fout.name, nb_file]
Expand Down
7 changes: 7 additions & 0 deletions lib/matplotlib/tests/test_backends_interactive.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import importlib
import importlib.util
import os
import signal
import subprocess
Expand Down Expand Up @@ -46,6 +47,7 @@ def _get_testable_interactive_backends():
# we directly invoke it from the superclass instead.
_test_script = """\
import importlib
import importlib.util
import sys
from unittest import TestCase

Expand Down Expand Up @@ -115,6 +117,8 @@ def test_interactive_backend(backend):
pytest.fail("The subprocess returned an error.")


@pytest.mark.skipif('SYSTEM_TEAMFOUNDATIONCOLLECTIONURI' in os.environ,
reason="this test fails an azure for unknown reasons")
@pytest.mark.skipif(os.name == "nt", reason="Cannot send SIGINT on Windows.")
def test_webagg():
pytest.importorskip("tornado")
Expand All @@ -125,6 +129,9 @@ def test_webagg():
timeout = time.perf_counter() + _test_timeout
while True:
try:
retcode = proc.poll()
# check that the subprocess for the server is not dead
assert retcode is None
conn = urllib.request.urlopen(url)
break
except urllib.error.URLError:
Expand Down