You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.1 KiB

from contextlib import contextmanager
import time
from threading import Thread
import wx
from gooey.gui import application
from python_bindings.config_generator import create_from_parser
from python_bindings.gooey_decorator import defaults
from util.functional import merge
@contextmanager
def instrumentGooey(parser, **kwargs):
"""
Context manager used during testing for setup/tear down of the
WX infrastructure during subTests.
Weirdness warning: this uses a globally reused wx.App instance.
"""
from gooey.tests import app
if app == None:
raise Exception("App instance has not been created! This is likely due to "
"you forgetting to add the magical import which makes all these "
"tests work. See the module doc in gooey.tests.__init__ for guidance")
buildspec = create_from_parser(parser, "", **merge(defaults, kwargs))
app, gooey = application._build_app(buildspec, app)
app.SetTopWindow(gooey)
try:
yield (app, gooey)
finally:
wx.CallAfter(app.ExitMainLoop)
gooey.Destroy()
app.SetTopWindow(None)
del gooey