84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
import difflib
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
import matplotlib as mpl
|
|
from matplotlib import pyplot as plt
|
|
from matplotlib.cbook import MatplotlibDeprecationWarning
|
|
|
|
|
|
def test_pyplot_up_to_date(tmpdir):
|
|
gen_script = Path(mpl.__file__).parents[2] / "tools/boilerplate.py"
|
|
if not gen_script.exists():
|
|
pytest.skip("boilerplate.py not found")
|
|
orig_contents = Path(plt.__file__).read_text()
|
|
plt_file = tmpdir.join('pyplot.py')
|
|
plt_file.write_text(orig_contents, 'utf-8')
|
|
|
|
subprocess.run([sys.executable, str(gen_script), str(plt_file)],
|
|
check=True)
|
|
new_contents = plt_file.read_text('utf-8')
|
|
|
|
if orig_contents != new_contents:
|
|
diff_msg = '\n'.join(
|
|
difflib.unified_diff(
|
|
orig_contents.split('\n'), new_contents.split('\n'),
|
|
fromfile='found pyplot.py',
|
|
tofile='expected pyplot.py',
|
|
n=0, lineterm=''))
|
|
pytest.fail(
|
|
"pyplot.py is not up-to-date. Please run "
|
|
"'python tools/boilerplate.py' to update pyplot.py. "
|
|
"This needs to be done from an environment where your "
|
|
"current working copy is installed (e.g. 'pip install -e'd). "
|
|
"Here is a diff of unexpected differences:\n%s" % diff_msg
|
|
)
|
|
|
|
|
|
def test_copy_docstring_and_deprecators(recwarn):
|
|
@mpl.cbook._rename_parameter("(version)", "old", "new")
|
|
@mpl.cbook._make_keyword_only("(version)", "kwo")
|
|
def func(new, kwo=None):
|
|
pass
|
|
|
|
@plt._copy_docstring_and_deprecators(func)
|
|
def wrapper_func(new, kwo=None):
|
|
pass
|
|
|
|
wrapper_func(None)
|
|
wrapper_func(new=None)
|
|
wrapper_func(None, kwo=None)
|
|
wrapper_func(new=None, kwo=None)
|
|
assert not recwarn
|
|
with pytest.warns(MatplotlibDeprecationWarning):
|
|
wrapper_func(old=None)
|
|
with pytest.warns(MatplotlibDeprecationWarning):
|
|
wrapper_func(None, None)
|
|
|
|
|
|
def test_pyplot_box():
|
|
fig, ax = plt.subplots()
|
|
plt.box(False)
|
|
assert not ax.get_frame_on()
|
|
plt.box(True)
|
|
assert ax.get_frame_on()
|
|
plt.box()
|
|
assert not ax.get_frame_on()
|
|
plt.box()
|
|
assert ax.get_frame_on()
|
|
|
|
|
|
def test_stackplot_smoke():
|
|
# Small smoke test for stackplot (see #12405)
|
|
plt.stackplot([1, 2, 3], [1, 2, 3])
|
|
|
|
|
|
def test_nrows_error():
|
|
with pytest.raises(TypeError):
|
|
plt.subplot(nrows=1)
|
|
with pytest.raises(TypeError):
|
|
plt.subplot(ncols=1)
|