Skip to content

Commit ed6c62d

Browse files
committed
Fix headless tests on Wayland.
Since #17396, backends now check for Wayland settings as part of headless detection. However, the headless tests do not override those settings. When running on Wayland, they thus think the display exists when they are not supposed to.
1 parent 440af79 commit ed6c62d

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

lib/matplotlib/tests/test_backends_interactive.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import pytest
1313

1414
import matplotlib as mpl
15+
from matplotlib import _c_internal_utils
1516

1617

1718
# Minimal smoke-testing of the backends for which the dependencies are
@@ -40,8 +41,8 @@ def _get_testable_interactive_backends():
4041
]:
4142
reason = None
4243
missing = [dep for dep in deps if not importlib.util.find_spec(dep)]
43-
if sys.platform == "linux" and not os.environ.get("DISPLAY"):
44-
reason = "$DISPLAY is unset"
44+
if sys.platform == "linux" and _c_internal_utils.display_is_valid():
45+
reason = "$DISPLAY and $WAYLAND_DISPLAY are unset"
4546
elif missing:
4647
reason = "{} cannot be imported".format(", ".join(missing))
4748
elif backend == 'macosx' and os.environ.get('TF_BUILD'):
@@ -276,7 +277,8 @@ def test_lazy_linux_headless():
276277
import sys
277278
278279
# make it look headless
279-
del os.environ['DISPLAY']
280+
os.environ.pop('DISPLAY', None)
281+
os.environ.pop('WAYLAND_DISPLAY', None)
280282
281283
# we should fast-track to Agg
282284
import matplotlib.pyplot as plt

lib/matplotlib/tests/test_rcparams.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import pytest
1111

1212
import matplotlib as mpl
13-
from matplotlib import _api
13+
from matplotlib import _api, _c_internal_utils
1414
import matplotlib.pyplot as plt
1515
import matplotlib.colors as mcolors
1616
import numpy as np
@@ -476,7 +476,8 @@ def test_rcparams_reset_after_fail():
476476
@pytest.mark.skipif(sys.platform != "linux", reason="Linux only")
477477
def test_backend_fallback_headless(tmpdir):
478478
env = {**os.environ,
479-
"DISPLAY": "", "MPLBACKEND": "", "MPLCONFIGDIR": str(tmpdir)}
479+
"DISPLAY": "", "WAYLAND_DISPLAY": "",
480+
"MPLBACKEND": "", "MPLCONFIGDIR": str(tmpdir)}
480481
with pytest.raises(subprocess.CalledProcessError):
481482
subprocess.run(
482483
[sys.executable, "-c",
@@ -487,8 +488,9 @@ def test_backend_fallback_headless(tmpdir):
487488
env=env, check=True)
488489

489490

490-
@pytest.mark.skipif(sys.platform == "linux" and not os.environ.get("DISPLAY"),
491-
reason="headless")
491+
@pytest.mark.skipif(
492+
sys.platform == "linux" and not _c_internal_utils.display_is_valid(),
493+
reason="headless")
492494
def test_backend_fallback_headful(tmpdir):
493495
pytest.importorskip("tkinter")
494496
env = {**os.environ, "MPLBACKEND": "", "MPLCONFIGDIR": str(tmpdir)}

0 commit comments

Comments
 (0)