Skip to content

Commit 987cdc4

Browse files
committed
Increase backend_registry test coverage
1 parent 312f743 commit 987cdc4

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

lib/matplotlib/tests/test_backend_registry.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,25 @@ def test_list_builtin_with_filter(filter, expected):
6767
assert {*backends} == {*expected}
6868

6969

70+
def test_list_gui_frameworks():
71+
frameworks = backend_registry.list_gui_frameworks()
72+
assert not has_duplicates(frameworks)
73+
# Compare using sets as order is not important
74+
assert {*frameworks} == {
75+
"gtk3", "gtk4", "osx", "qt", "qt5", "qt6", "tk", "wx",
76+
}
77+
78+
79+
@pytest.mark.parametrize("backend, is_valid", [
80+
("agg", True),
81+
("QtAgg", True),
82+
("module://anything", True),
83+
("made-up-name", False),
84+
])
85+
def test_is_valid_backend(backend, is_valid):
86+
assert backend_registry.is_valid_backend(backend) == is_valid
87+
88+
7089
def test_deprecated_rcsetup_attributes():
7190
match = "was deprecated in Matplotlib 3.9"
7291
with pytest.warns(mpl.MatplotlibDeprecationWarning, match=match):
@@ -119,3 +138,23 @@ def test_load_entry_points_only_if_needed(clear_backend_registry, backend):
119138
assert not backend_registry._loaded_entry_points
120139
backend_registry.list_all() # Force load of entry points
121140
assert backend_registry._loaded_entry_points
141+
142+
143+
@pytest.mark.parametrize(
144+
'gui_or_backend, expected_backend, expected_gui',
145+
[
146+
('agg', 'agg', None),
147+
('qt', 'qtagg', 'qt'),
148+
('TkCairo', 'tkcairo', 'tk'),
149+
]
150+
)
151+
def test_resolve_gui_or_backend(gui_or_backend, expected_backend, expected_gui):
152+
backend, gui = backend_registry.resolve_gui_or_backend(gui_or_backend)
153+
assert backend == expected_backend
154+
assert gui == expected_gui
155+
156+
157+
def test_resolve_gui_or_backend_invalid():
158+
match = "is not a recognised GUI loop or backend name"
159+
with pytest.raises(RuntimeError, match=match):
160+
backend_registry.resolve_gui_or_backend('no-such-name')

0 commit comments

Comments
 (0)