22# License: BSD-3-Clause
33# Copyright the MNE-Python contributors.
44
5+ from contextvars import ContextVar
6+
7+ import matplotlib .pyplot as plt
58import numpy as np
69import pytest
710
811from mne import create_info
912from mne .io import RawArray
10- from mne .viz ._figure import _get_browser
13+ from mne .viz ._figure import _get_browser , use_browser_backend
1114
1215
1316def test_browse_figure_constructor ():
@@ -23,3 +26,28 @@ def test_browse_figure_requires_two_timepoints():
2326 assert len (raw .times ) == 1
2427 with pytest .raises (ValueError , match = "at least two time points" ):
2528 _get_browser (show = False , block = False , inst = raw )
29+
30+
31+ def test_browse_figure_close_context ():
32+ """Test that deferred browser close uses its creation context."""
33+ marker = ContextVar ("browser_context" , default = None )
34+ created_token = marker .set ("created" )
35+ try :
36+ info = create_info (ch_names = ["CH1" ], sfreq = 100.0 , ch_types = "eeg" )
37+ raw = RawArray (np .zeros ((1 , 100 )), info )
38+ with use_browser_backend ("matplotlib" ):
39+ fig = raw .plot (show = False )
40+
41+ current_token = marker .set ("current" )
42+ observed = []
43+ close_impl = fig ._close_impl
44+ fig ._close_impl = lambda event = None : observed .append (marker .get ())
45+ try :
46+ fig ._close ()
47+ finally :
48+ fig ._close_impl = close_impl
49+ plt .close (fig )
50+ marker .reset (current_token )
51+ assert observed == ["created" ]
52+ finally :
53+ marker .reset (created_token )
0 commit comments