def __loading_failure(self, has_proxy): mainloop = GLib.MainLoop.new(None, False) app = common.getPitiviMock( settings={"lastProjectFolder": "/tmp", "edgeSnapDeadband": 32}) app.project_manager = ProjectManager(app) mainwindow = PitiviMainWindow(app) mainwindow.viewer = mock.MagicMock() def __pm_missing_uri_cb(project_manager, project, error, asset): nonlocal mainloop nonlocal mainwindow nonlocal self nonlocal app nonlocal has_proxy with mock.patch('gi.repository.Gtk.Dialog') as dialog: failed_cb = mock.MagicMock() app.project_manager.connect("new-project-failed", failed_cb) dialog.return_value = mock.MagicMock() dialog.return_value.run = mock.MagicMock( return_value=Gtk.ResponseType.CLOSE) # Call the actual callback # pylint: disable=protected-access app.proxy_manager.checkProxyLoadingSucceeded = \ mock.MagicMock(return_value=has_proxy) mainwindow._projectManagerMissingUriCb( project_manager, project, error, asset) self.assertTrue(dialog.called) self.assertTrue(dialog.return_value.run.called) self.assertEqual(failed_cb.called, not has_proxy) # pylint: disable=protected-access app.project_manager.connect("missing-uri", mainwindow._projectManagerMissingUriCb) # pylint: disable=protected-access app.project_manager.connect("new-project-failed", mainwindow._projectManagerNewProjectFailedCb) mainwindow.destroy() mainloop.quit() # pylint: disable=protected-access disconnectAllByFunc(app.project_manager, mainwindow._projectManagerMissingUriCb) disconnectAllByFunc(app.project_manager, mainwindow._projectManagerNewProjectFailedCb) app.project_manager.connect("missing-uri", __pm_missing_uri_cb) xges_path, uri = self.createTempProject() try: app.project_manager.loadProject(uri) finally: os.remove(xges_path) mainloop.run()