def METHOD_NAME(caplog, monkeypatch, fncPath):
    """Check launching the main GUI."""
    monkeypatch.setattr("novelwriter.guimain.GuiMain", MockGuiMain)
    # TestMode Launch
    nwGUI = main(["--testmode", f"--config={fncPath}", f"--data={fncPath}"])
    assert isinstance(nwGUI, MockGuiMain)
    # Darwin Launch
    caplog.clear()
    osDarwin = CONFIG.osDarwin
    CONFIG.osDarwin = True
    with monkeypatch.context() as mp:
        mp.setitem(sys.modules, "Foundation", None)
        nwGUI = main(["--testmode", f"--config={fncPath}", f"--data={fncPath}"])
        assert isinstance(nwGUI, MockGuiMain)
        assert "Failed" in caplog.text
    CONFIG.osDarwin = osDarwin
    # Windows Launch
    caplog.clear()
    osWindows = CONFIG.osWindows
    CONFIG.osWindows = True
    with monkeypatch.context() as mp:
        mp.setitem(sys.modules, "ctypes", None)
        nwGUI = main(["--testmode", f"--config={fncPath}", f"--data={fncPath}"])
        assert isinstance(nwGUI, MockGuiMain)
        if not sys.platform.startswith("darwin"):
            # For some reason, the test doesn't work on macOS
            assert "Failed" in caplog.text
    CONFIG.osWindows = osWindows
    # Normal Launch
    monkeypatch.setattr("PyQt5.QtWidgets.QApplication.__init__", lambda *a: None)
    monkeypatch.setattr("PyQt5.QtWidgets.QApplication.setApplicationName", lambda *a: None)
    monkeypatch.setattr("PyQt5.QtWidgets.QApplication.setApplicationVersion", lambda *a: None)
    monkeypatch.setattr("PyQt5.QtWidgets.QApplication.setWindowIcon", lambda *a: None)
    monkeypatch.setattr("PyQt5.QtWidgets.QApplication.setOrganizationDomain", lambda *a: None)
    monkeypatch.setattr("PyQt5.QtWidgets.QApplication.exec_", lambda *a: 0)
    with pytest.raises(SystemExit) as ex:
        main([f"--config={fncPath}", f"--data={fncPath}"])
        assert ex.value.code == 0