68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
|
import os
|
||
|
import subprocess
|
||
|
import sys
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
import matplotlib
|
||
|
|
||
|
|
||
|
@pytest.mark.skipif(
|
||
|
os.name == "nt", reason="chmod() doesn't work as is on Windows")
|
||
|
@pytest.mark.skipif(os.name != "nt" and os.geteuid() == 0,
|
||
|
reason="chmod() doesn't work as root")
|
||
|
def test_tmpconfigdir_warning(tmpdir):
|
||
|
"""Test that a warning is emitted if a temporary configdir must be used."""
|
||
|
mode = os.stat(tmpdir).st_mode
|
||
|
try:
|
||
|
os.chmod(tmpdir, 0)
|
||
|
proc = subprocess.run(
|
||
|
[sys.executable, "-c", "import matplotlib"],
|
||
|
env={**os.environ, "MPLCONFIGDIR": str(tmpdir)},
|
||
|
stderr=subprocess.PIPE, universal_newlines=True, check=True)
|
||
|
assert "set the MPLCONFIGDIR" in proc.stderr
|
||
|
finally:
|
||
|
os.chmod(tmpdir, mode)
|
||
|
|
||
|
|
||
|
def test_importable_with_no_home(tmpdir):
|
||
|
subprocess.run(
|
||
|
[sys.executable, "-c",
|
||
|
"import pathlib; pathlib.Path.home = lambda *args: 1/0; "
|
||
|
"import matplotlib.pyplot"],
|
||
|
env={**os.environ, "MPLCONFIGDIR": str(tmpdir)}, 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() for e in line.split(',') if e]
|
||
|
return backends
|
||
|
|
||
|
assert (set(parse('- interactive backends:\n')) ==
|
||
|
set(matplotlib.rcsetup.interactive_bk))
|
||
|
assert (set(parse('- non-interactive backends:\n')) ==
|
||
|
set(matplotlib.rcsetup.non_interactive_bk))
|
||
|
|
||
|
|
||
|
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"
|
||
|
)
|
||
|
cmd = [sys.executable, "-OO", "-c", program]
|
||
|
assert subprocess.call(cmd, env={**os.environ, "MPLBACKEND": ""}) == 0
|