Skip to content

Commit 3a28e8f

Browse files
committed
TST: use test-specific pdfguicontrol factory
Replace pdfguicontrol() factory within the GUITestCase context. Use tuple to save original functions in GUITestCase attributes to avoid misinterpreting them as unbounded methods.
1 parent 2633faf commit 3a28e8f

1 file changed

Lines changed: 18 additions & 5 deletions

File tree

src/diffpy/pdfgui/tests/testutils.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,13 @@ def setUpClass(cls):
136136
pdfguiglobals.dbopts.noconfirm = True
137137
cls._save_cmdargs = list(pdfguiglobals.cmdargs)
138138
cls._save_configfilename = pdfguiglobals.configfilename
139-
mainframe.pdfguicontrol = pdfguicontrol.PDFGuiControl
140-
cls._save_qmrun = pdfguicontrol.PDFGuiControl.QueueManager.run
139+
cls._save_qmrun = (pdfguicontrol.PDFGuiControl.QueueManager.run,)
141140
pdfguicontrol.PDFGuiControl.QueueManager.run = lambda self: None
142-
cls._save_factory = mainframe.pdfguicontrol
141+
cls._save_factory = (mainframe.pdfguicontrol,)
142+
cls.__pdfguicontrol = None
143+
assert mainframe.pdfguicontrol is pdfguicontrol.pdfguicontrol
144+
mainframe.pdfguicontrol = cls.pdfguicontrol
145+
pdfguicontrol.pdfguicontrol = cls.pdfguicontrol
143146
pdfguiglobals.configfilename = os.devnull
144147
return
145148

@@ -149,8 +152,11 @@ def tearDownClass(cls):
149152
pdfguiglobals.dbopts.noconfirm = cls._save_noconfirm
150153
pdfguiglobals.cmdargs[:] = cls._save_cmdargs
151154
pdfguiglobals.configfilename = cls._save_configfilename
152-
pdfguicontrol.PDFGuiControl.QueueManager.run = cls._save_qmrun
153-
mainframe.pdfguicontrol = cls._save_factory
155+
pdfguicontrol.PDFGuiControl.QueueManager.run, = cls._save_qmrun
156+
mainframe.pdfguicontrol, = cls._save_factory
157+
pdfguicontrol.pdfguicontrol, = cls._save_factory
158+
assert mainframe.pdfguicontrol is pdfguicontrol.pdfguicontrol
159+
cls.__pdfguicontrol = None
154160
return
155161

156162
@classmethod
@@ -159,6 +165,13 @@ def setCmdArgs(cls, args):
159165
pdfguiglobals.cmdargs[:] = args
160166
return
161167

168+
@classmethod
169+
def pdfguicontrol(cls, *args, **kwargs):
170+
if cls.__pdfguicontrol is not None:
171+
return cls.__pdfguicontrol
172+
cls.__pdfguicontrol = pdfguicontrol.PDFGuiControl(*args, **kwargs)
173+
return cls.pdfguicontrol()
174+
162175
@staticmethod
163176
def _mockUpMainFrame():
164177
return _TMainFrame()

0 commit comments

Comments
 (0)