From eb92031774dceec37b0e260cdc3615d6fe248cf5 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 21 Feb 2022 21:29:26 +0100 Subject: [PATCH] Test: automatically close modal dialogs when running Workbench tests --- src/Mod/Test/Workbench.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/Mod/Test/Workbench.py b/src/Mod/Test/Workbench.py index bd5d1723e4..d382421ea6 100755 --- a/src/Mod/Test/Workbench.py +++ b/src/Mod/Test/Workbench.py @@ -25,6 +25,15 @@ import FreeCAD, FreeCADGui, os, unittest +from PySide2 import QtWidgets, QtCore +from PySide2.QtWidgets import QApplication + +class CallableCheckWarning: + def __call__(self): + diag = QApplication.activeModalWidget() + if (diag): + QtCore.QTimer.singleShot(0, diag, QtCore.SLOT('accept()')) + class WorkbenchTestCase(unittest.TestCase): def setUp(self): self.Active = FreeCADGui.activeWorkbench() @@ -34,16 +43,17 @@ class WorkbenchTestCase(unittest.TestCase): wbs=FreeCADGui.listWorkbenches() # this gives workbenches a possibility to detect that we're under test environment FreeCAD.TestEnvironment = True - try: - for i in wbs: + for i in wbs: + try: + print ("Activate workbench '{}'".format(i)) + cobj = CallableCheckWarning() + QtCore.QTimer.singleShot(500, cobj) success = FreeCADGui.activateWorkbench(i) FreeCAD.Console.PrintLog("Active: "+FreeCADGui.activeWorkbench().name()+ " Expected: "+i+"\n") self.assertTrue(success, "Test on activating workbench {0} failed".format(i)) - except Exception as e: - del FreeCAD.TestEnvironment - self.fail("Loading of workbench '{0}' failed: {1}".format(i, e)) - else: - del FreeCAD.TestEnvironment + except Exception as e: + self.fail("Loading of workbench '{0}' failed: {1}".format(i, e)) + del FreeCAD.TestEnvironment def testHandler(self): import __main__