From cdeee65505f89b3d3768119e2153dd1b344c4f0d Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sun, 6 Dec 2020 13:21:47 +0100 Subject: [PATCH] Also remove the gui blocking from the error handler --- nw/error.py | 4 +--- tests/test_base_error.py | 40 ++++++++++++++++++---------------------- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/nw/error.py b/nw/error.py index 6db88647..24a802aa 100644 --- a/nw/error.py +++ b/nw/error.py @@ -138,7 +138,6 @@ class NWErrorMessage(QDialog): def exceptionHandler(exType, exValue, exTrace): """Function to catch unhandled global exceptions. """ - import nw import logging from traceback import print_tb from PyQt5.QtWidgets import qApp @@ -160,8 +159,7 @@ def exceptionHandler(exType, exValue, exTrace): errMsg = NWErrorMessage(nwGUI) errMsg.setMessage(exType, exValue, exTrace) - if nw.CONFIG.showGUI: - errMsg.exec_() + errMsg.exec_() try: # Try a controlled shudown diff --git a/tests/test_base_error.py b/tests/test_base_error.py index 540b51f0..472faaa2 100644 --- a/tests/test_base_error.py +++ b/tests/test_base_error.py @@ -66,33 +66,29 @@ def testBaseError_Handler(qtbot, monkeypatch, fncDir, tmpDir): qtbot.waitForWindowShown(nwGUI) # Normal shutdown - monkeypatch.setattr("PyQt5.QtWidgets.qApp.exit", lambda x: None) - nwGUI.mainConf.showGUI = True - exceptionHandler(Exception, "Error Message", None) - nwGUI.mainConf.showGUI = False - monkeypatch.undo() - - # Disable blocking of GUI - monkeypatch.setattr("PyQt5.QtWidgets.QDialog.exec_", lambda: None) - monkeypatch.setattr("PyQt5.QtWidgets.qApp.exit", lambda x: None) - exceptionHandler(Exception, "Error Message", None) - monkeypatch.undo() - - # Should handle qApp failing - monkeypatch.setattr("PyQt5.QtWidgets.qApp.topLevelWidgets", causeException) - monkeypatch.setattr("PyQt5.QtWidgets.qApp.exit", lambda x: None) - exceptionHandler(Exception, "Error Message", None) - monkeypatch.undo() - - # Should handle failing to close main GUI - monkeypatch.setattr(nwGUI, "closeMain", causeException) - monkeypatch.setattr("PyQt5.QtWidgets.qApp.exit", lambda x: None) + monkeypatch.setattr(NWErrorMessage, "exec_", lambda *args: None) + monkeypatch.setattr("PyQt5.QtWidgets.qApp.exit", lambda *args: None) exceptionHandler(Exception, "Error Message", None) monkeypatch.undo() # Should not crash when no GUI is found + monkeypatch.setattr(NWErrorMessage, "exec_", lambda *args: None) + monkeypatch.setattr("PyQt5.QtWidgets.qApp.exit", lambda *args: None) monkeypatch.setattr("PyQt5.QtWidgets.qApp.topLevelWidgets", lambda: []) - monkeypatch.setattr("PyQt5.QtWidgets.qApp.exit", lambda x: None) + exceptionHandler(Exception, "Error Message", None) + monkeypatch.undo() + + # Should handle qApp failing + monkeypatch.setattr(NWErrorMessage, "exec_", lambda *args: None) + monkeypatch.setattr("PyQt5.QtWidgets.qApp.exit", lambda *args: None) + monkeypatch.setattr("PyQt5.QtWidgets.qApp.topLevelWidgets", causeException) + exceptionHandler(Exception, "Error Message", None) + monkeypatch.undo() + + # Should handle failing to close main GUI + monkeypatch.setattr(NWErrorMessage, "exec_", lambda *args: None) + monkeypatch.setattr("PyQt5.QtWidgets.qApp.exit", lambda *args: None) + monkeypatch.setattr(nwGUI, "closeMain", causeException) exceptionHandler(Exception, "Error Message", None) monkeypatch.undo()