some new features
This commit is contained in:
@ -0,0 +1,82 @@
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
import matplotlib
|
||||
from matplotlib.testing import subprocess_run_for_testing
|
||||
|
||||
|
||||
@pytest.mark.parametrize('version_str, version_tuple', [
|
||||
('3.5.0', (3, 5, 0, 'final', 0)),
|
||||
('3.5.0rc2', (3, 5, 0, 'candidate', 2)),
|
||||
('3.5.0.dev820+g6768ef8c4c', (3, 5, 0, 'alpha', 820)),
|
||||
('3.5.0.post820+g6768ef8c4c', (3, 5, 1, 'alpha', 820)),
|
||||
])
|
||||
def test_parse_to_version_info(version_str, version_tuple):
|
||||
assert matplotlib._parse_to_version_info(version_str) == version_tuple
|
||||
|
||||
|
||||
@pytest.mark.skipif(sys.platform == "win32",
|
||||
reason="chmod() doesn't work as is on Windows")
|
||||
@pytest.mark.skipif(sys.platform != "win32" and os.geteuid() == 0,
|
||||
reason="chmod() doesn't work as root")
|
||||
def test_tmpconfigdir_warning(tmp_path):
|
||||
"""Test that a warning is emitted if a temporary configdir must be used."""
|
||||
mode = os.stat(tmp_path).st_mode
|
||||
try:
|
||||
os.chmod(tmp_path, 0)
|
||||
proc = subprocess_run_for_testing(
|
||||
[sys.executable, "-c", "import matplotlib"],
|
||||
env={**os.environ, "MPLCONFIGDIR": str(tmp_path)},
|
||||
stderr=subprocess.PIPE, text=True, check=True)
|
||||
assert "set the MPLCONFIGDIR" in proc.stderr
|
||||
finally:
|
||||
os.chmod(tmp_path, mode)
|
||||
|
||||
|
||||
def test_importable_with_no_home(tmp_path):
|
||||
subprocess_run_for_testing(
|
||||
[sys.executable, "-c",
|
||||
"import pathlib; pathlib.Path.home = lambda *args: 1/0; "
|
||||
"import matplotlib.pyplot"],
|
||||
env={**os.environ, "MPLCONFIGDIR": str(tmp_path)}, check=True)
|
||||
|
||||
|
||||
def test_use_doc_standard_backends():
|
||||
"""
|
||||
Test that the standard backends mentioned in the docstring of
|
||||
matplotlib.use() are the same as in matplotlib.rcsetup.
|
||||
"""
|
||||
def parse(key):
|
||||
backends = []
|
||||
for line in matplotlib.use.__doc__.split(key)[1].split('\n'):
|
||||
if not line.strip():
|
||||
break
|
||||
backends += [e.strip().lower() for e in line.split(',') if e]
|
||||
return backends
|
||||
|
||||
from matplotlib.backends import BackendFilter, backend_registry
|
||||
|
||||
assert (set(parse('- interactive backends:\n')) ==
|
||||
set(backend_registry.list_builtin(BackendFilter.INTERACTIVE)))
|
||||
assert (set(parse('- non-interactive backends:\n')) ==
|
||||
set(backend_registry.list_builtin(BackendFilter.NON_INTERACTIVE)))
|
||||
|
||||
|
||||
def test_importable_with__OO():
|
||||
"""
|
||||
When using -OO or export PYTHONOPTIMIZE=2, docstrings are discarded,
|
||||
this simple test may prevent something like issue #17970.
|
||||
"""
|
||||
program = (
|
||||
"import matplotlib as mpl; "
|
||||
"import matplotlib.pyplot as plt; "
|
||||
"import matplotlib.cbook as cbook; "
|
||||
"import matplotlib.patches as mpatches"
|
||||
)
|
||||
subprocess_run_for_testing(
|
||||
[sys.executable, "-OO", "-c", program],
|
||||
env={**os.environ, "MPLBACKEND": ""}, check=True
|
||||
)
|
||||
Reference in New Issue
Block a user