11import importlib
22import importlib .util
3+ import json
34import os
45import signal
56import subprocess
@@ -60,6 +61,7 @@ def _get_testable_interactive_backends():
6061_test_script = """\
6162 import importlib
6263import importlib.util
64+ import json
6365import sys
6466from unittest import TestCase
6567
@@ -70,6 +72,8 @@ def _get_testable_interactive_backends():
7072 "webagg.open_in_browser": False,
7173 "webagg.port_retries": 1,
7274})
75+ if len(sys.argv) >= 2: # Second argument is json-encoded rcParams.
76+ rcParams.update(json.loads(sys.argv[1]))
7377backend = plt.rcParams["backend"].lower()
7478assert_equal = TestCase().assertEqual
7579assert_raises = TestCase().assertRaises
@@ -122,10 +126,14 @@ def check_alt_backend(alt_backend):
122126
123127
124128@pytest .mark .parametrize ("backend" , _get_testable_interactive_backends ())
129+ @pytest .mark .parametrize ("toolbar" , ["toolbar2" , "toolmanager" ])
125130@pytest .mark .flaky (reruns = 3 )
126- def test_interactive_backend (backend ):
131+ def test_interactive_backend (backend , toolbar ):
132+ if backend == "macosx" and toolbar == "toolmanager" :
133+ pytest .skip ("toolmanager is not implemented for macosx." )
127134 proc = subprocess .run (
128- [sys .executable , "-c" , _test_script ],
135+ [sys .executable , "-c" , _test_script ,
136+ json .dumps ({"toolbar" : toolbar })],
129137 env = {** os .environ , "MPLBACKEND" : backend }, timeout = _test_timeout ,
130138 stdout = subprocess .PIPE , universal_newlines = True )
131139 if proc .returncode :
0 commit comments