Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 422d1ae

Browse filesBrowse files
committed
Don't access internet during tests.
The tests that style.use() and imread() support urls can just use local urls (`file:`); this avoids failing the tests when downloading the gist fails due to a flaky connection. Since RFC8089 file: urls don't necessarily start with two slashes anymore.
1 parent af80d57 commit 422d1ae
Copy full SHA for 422d1ae

File tree

Expand file treeCollapse file tree

9 files changed

+31
-17
lines changed
Filter options
Expand file treeCollapse file tree

9 files changed

+31
-17
lines changed

‎.appveyor.yml

Copy file name to clipboardExpand all lines: .appveyor.yml
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ environment:
1616
global:
1717
PYTHONIOENCODING: UTF-8
1818
PYTEST_ARGS: -raR --numprocesses=auto --timeout=300 --durations=25
19-
--cov-report= --cov=lib -m "not network" --log-level=DEBUG
19+
--cov-report= --cov=lib --log-level=DEBUG
2020

2121
matrix:
2222
# theoretically the CONDA_INSTALL_LOCN could be only two: one for 32bit,
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
API changes
2+
```````````
3+
4+
The ``--no-network`` flag to ``tests.py`` has been removed (no test requires
5+
internet access anymore). If it is desired to disable internet access both for
6+
old and new versions of Matplotlib, use ``tests.py -m 'not network'`` (which is
7+
now a no-op).

‎doc/devel/testing.rst

Copy file name to clipboardExpand all lines: doc/devel/testing.rst
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ commands, such as:
5454

5555
======================== ===========
5656
``--pep8`` Perform pep8 checks (requires pytest-pep8_)
57-
``-m "not network"`` Disable tests that require network access
5857
======================== ===========
5958

6059
Additional arguments are passed on to pytest. See the pytest documentation for

‎lib/matplotlib/__init__.py

Copy file name to clipboardExpand all lines: lib/matplotlib/__init__.py
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -867,7 +867,7 @@ def rc_params(fail_on_error=False):
867867
return rc_params_from_file(matplotlib_fname(), fail_on_error)
868868

869869

870-
URL_REGEX = re.compile(r'http://|https://|ftp://|file://|file:\\')
870+
URL_REGEX = re.compile(r'^http://|^https://|^ftp://|^file:')
871871

872872

873873
def is_url(filename):

‎lib/matplotlib/image.py

Copy file name to clipboardExpand all lines: lib/matplotlib/image.py
+9-1Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1379,12 +1379,20 @@ def read_png(*args, **kwargs):
13791379
if format is None:
13801380
if isinstance(fname, str):
13811381
parsed = urllib.parse.urlparse(fname)
1382-
# If the string is a URL, assume png
1382+
# If the string is a URL (Windows paths appear as if they have a
1383+
# length-1 scheme), assume png.
13831384
if len(parsed.scheme) > 1:
13841385
ext = 'png'
13851386
else:
13861387
basename, ext = os.path.splitext(fname)
13871388
ext = ext.lower()[1:]
1389+
elif hasattr(fname, 'geturl'): # Returned by urlopen().
1390+
# We could try to parse the url's path and use the extension, but
1391+
# returning png is consistent with the block above. Note that this
1392+
# if clause has to come before checking for fname.name as
1393+
# urlopen("file:///...") also has a name attribute (with the fixed
1394+
# value "<urllib response>").
1395+
ext = 'png'
13881396
elif hasattr(fname, 'name'):
13891397
basename, ext = os.path.splitext(fname.name)
13901398
ext = ext.lower()[1:]

‎lib/matplotlib/tests/test_image.py

Copy file name to clipboardExpand all lines: lib/matplotlib/tests/test_image.py
+5-2Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import sys
66
from pathlib import Path
77
import platform
8+
import sys
89
import urllib.request
910
import warnings
1011

@@ -657,9 +658,11 @@ def test_minimized_rasterized():
657658
assert False
658659

659660

660-
@pytest.mark.network
661661
def test_load_from_url():
662-
url = "http://matplotlib.org/_static/logo_sidebar_horiz.png"
662+
path = Path(__file__).parent / "baseline_images/test_image/imshow.png"
663+
url = ('file:'
664+
+ ('///' if sys.platform == 'win32' else '')
665+
+ path.resolve().as_posix())
663666
plt.imread(url)
664667
plt.imread(urllib.request.urlopen(url))
665668

‎lib/matplotlib/tests/test_style.py

Copy file name to clipboardExpand all lines: lib/matplotlib/tests/test_style.py
+8-3Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import gc
44
from pathlib import Path
55
from tempfile import TemporaryDirectory
6+
import sys
67

78
import pytest
89

@@ -56,10 +57,14 @@ def test_use():
5657
assert mpl.rcParams[PARAM] == VALUE
5758

5859

59-
@pytest.mark.network
60-
def test_use_url():
60+
def test_use_url(tmpdir):
61+
path = Path(tmpdir, 'file')
62+
path.write_text('axes.facecolor: adeade')
6163
with temp_style('test', DUMMY_SETTINGS):
62-
with style.context('https://gist.github.com/adrn/6590261/raw'):
64+
url = ('file:'
65+
+ ('///' if sys.platform == 'win32' else '')
66+
+ path.resolve().as_posix())
67+
with style.context(url):
6368
assert mpl.rcParams['axes.facecolor'] == "#adeade"
6469

6570

‎pytest.ini

Copy file name to clipboardExpand all lines: pytest.ini
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,4 @@ python_files = test_*.py
66

77
markers =
88
backend: Set alternate Matplotlib backend temporarily.
9-
network: Mark a test that uses the network.
109
style: Set alternate Matplotlib style temporarily.

‎tests.py

Copy file name to clipboardExpand all lines: tests.py
-7Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,10 @@
3939
from matplotlib import test
4040

4141
parser = argparse.ArgumentParser(add_help=False)
42-
parser.add_argument('--no-network', action='store_true',
43-
help='Run tests without network connection')
4442
parser.add_argument('--recursionlimit', type=int, default=0,
4543
help='Specify recursionlimit for test run')
4644
args, extra_args = parser.parse_known_args()
4745

48-
if args.no_network:
49-
from matplotlib.testing import disable_internet
50-
disable_internet.turn_off_internet()
51-
extra_args.extend(['-m', 'not network'])
52-
5346
print('Python byte-compilation optimization level:', sys.flags.optimize)
5447

5548
retcode = test(argv=extra_args, switch_backend_warn=False,

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.