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