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()