Remove code for mocking CONFIG object and instead reset it for each test
This commit is contained in:
+119
-109
@@ -28,6 +28,7 @@ from pathlib import Path
|
||||
from mock import causeOSError, MockApp
|
||||
from tools import cmpFiles, writeFile
|
||||
|
||||
from novelwriter import CONFIG
|
||||
from novelwriter.config import Config, RecentProjects
|
||||
from novelwriter.constants import nwFiles
|
||||
|
||||
@@ -196,197 +197,206 @@ def testBaseConfig_Localisation(fncPath, tstPaths):
|
||||
|
||||
|
||||
@pytest.mark.base
|
||||
def testBaseConfig_Methods(tmpConf, tmpPath):
|
||||
def testBaseConfig_Methods(fncPath):
|
||||
"""Check class methods.
|
||||
"""
|
||||
tstConf = Config()
|
||||
tstConf.initConfig(confPath=fncPath, dataPath=fncPath)
|
||||
|
||||
# Data Path
|
||||
assert tmpConf.dataPath() == tmpPath
|
||||
assert tmpConf.dataPath("stuff") == tmpPath / "stuff"
|
||||
assert tstConf.dataPath() == fncPath
|
||||
assert tstConf.dataPath("stuff") == fncPath / "stuff"
|
||||
|
||||
# Assets Path
|
||||
appPath = tmpConf._appPath
|
||||
assert tmpConf.assetPath() == appPath / "assets"
|
||||
assert tmpConf.assetPath("stuff") == appPath / "assets" / "stuff"
|
||||
appPath = tstConf._appPath
|
||||
assert tstConf.assetPath() == appPath / "assets"
|
||||
assert tstConf.assetPath("stuff") == appPath / "assets" / "stuff"
|
||||
|
||||
# Last Path
|
||||
assert tmpConf.lastPath() == tmpPath
|
||||
assert tstConf.lastPath() == Path.home().absolute()
|
||||
|
||||
tmpStuff = tmpPath / "stuff"
|
||||
tmpStuff = fncPath / "stuff"
|
||||
tmpStuff.mkdir()
|
||||
tmpConf.setLastPath(tmpStuff)
|
||||
assert tmpConf.lastPath() == tmpStuff
|
||||
tstConf.setLastPath(tmpStuff)
|
||||
assert tstConf.lastPath() == tmpStuff
|
||||
|
||||
fileStuff = tmpStuff / "more_stuff.txt"
|
||||
fileStuff.write_text("Stuff")
|
||||
tmpConf.setLastPath(fileStuff)
|
||||
assert tmpConf.lastPath() == tmpStuff
|
||||
tstConf.setLastPath(fileStuff)
|
||||
assert tstConf.lastPath() == tmpStuff
|
||||
|
||||
fileStuff.unlink()
|
||||
tmpStuff.rmdir()
|
||||
assert tmpConf.lastPath() == Path.home().absolute()
|
||||
assert tstConf.lastPath() == Path.home().absolute()
|
||||
|
||||
# Recent Projects
|
||||
assert isinstance(tmpConf.recentProjects, RecentProjects)
|
||||
assert isinstance(tstConf.recentProjects, RecentProjects)
|
||||
|
||||
# END Test testBaseConfig_Methods
|
||||
|
||||
|
||||
@pytest.mark.base
|
||||
def testBaseConfig_SettersGetters(tmpConf):
|
||||
def testBaseConfig_SettersGetters(fncPath):
|
||||
"""Set various sizes and positions
|
||||
"""
|
||||
tstConf = Config()
|
||||
tstConf.initConfig(confPath=fncPath, dataPath=fncPath)
|
||||
|
||||
# GUI Scaling
|
||||
# ===========
|
||||
|
||||
tmpConf.guiScale = 1.0
|
||||
assert tmpConf.pxInt(10) == 10
|
||||
assert tmpConf.pxInt(13) == 13
|
||||
assert tmpConf.rpxInt(10) == 10
|
||||
assert tmpConf.rpxInt(13) == 13
|
||||
tstConf.guiScale = 1.0
|
||||
assert tstConf.pxInt(10) == 10
|
||||
assert tstConf.pxInt(13) == 13
|
||||
assert tstConf.rpxInt(10) == 10
|
||||
assert tstConf.rpxInt(13) == 13
|
||||
|
||||
tmpConf.guiScale = 2.0
|
||||
assert tmpConf.pxInt(10) == 20
|
||||
assert tmpConf.pxInt(13) == 26
|
||||
assert tmpConf.rpxInt(10) == 5
|
||||
assert tmpConf.rpxInt(13) == 6
|
||||
tstConf.guiScale = 2.0
|
||||
assert tstConf.pxInt(10) == 20
|
||||
assert tstConf.pxInt(13) == 26
|
||||
assert tstConf.rpxInt(10) == 5
|
||||
assert tstConf.rpxInt(13) == 6
|
||||
|
||||
# Setter + Getter Combos
|
||||
# ======================
|
||||
|
||||
# Window Size
|
||||
tmpConf.guiScale = 1.0
|
||||
tmpConf.setMainWinSize(1205, 655)
|
||||
assert tmpConf.mainWinSize == [1200, 650]
|
||||
tstConf.guiScale = 1.0
|
||||
tstConf.setMainWinSize(1205, 655)
|
||||
assert tstConf.mainWinSize == [1200, 650]
|
||||
|
||||
tmpConf.guiScale = 2.0
|
||||
tmpConf.setMainWinSize(70, 70)
|
||||
assert tmpConf.mainWinSize == [70, 70]
|
||||
assert tmpConf._mainWinSize == [35, 35]
|
||||
tstConf.guiScale = 2.0
|
||||
tstConf.setMainWinSize(70, 70)
|
||||
assert tstConf.mainWinSize == [70, 70]
|
||||
assert tstConf._mainWinSize == [35, 35]
|
||||
|
||||
tmpConf.guiScale = 1.0
|
||||
tmpConf.setMainWinSize(70, 70)
|
||||
assert tmpConf.mainWinSize == [70, 70]
|
||||
assert tmpConf._mainWinSize == [70, 70]
|
||||
tstConf.guiScale = 1.0
|
||||
tstConf.setMainWinSize(70, 70)
|
||||
assert tstConf.mainWinSize == [70, 70]
|
||||
assert tstConf._mainWinSize == [70, 70]
|
||||
|
||||
tmpConf.setMainWinSize(1200, 650)
|
||||
tstConf.setMainWinSize(1200, 650)
|
||||
|
||||
# Preferences Size
|
||||
tmpConf.guiScale = 2.0
|
||||
tmpConf.setPreferencesWinSize(70, 70)
|
||||
assert tmpConf.preferencesWinSize == [70, 70]
|
||||
assert tmpConf._prefsWinSize == [35, 35]
|
||||
tstConf.guiScale = 2.0
|
||||
tstConf.setPreferencesWinSize(70, 70)
|
||||
assert tstConf.preferencesWinSize == [70, 70]
|
||||
assert tstConf._prefsWinSize == [35, 35]
|
||||
|
||||
tmpConf.guiScale = 1.0
|
||||
tmpConf.setPreferencesWinSize(70, 70)
|
||||
assert tmpConf.preferencesWinSize == [70, 70]
|
||||
assert tmpConf._prefsWinSize == [70, 70]
|
||||
tstConf.guiScale = 1.0
|
||||
tstConf.setPreferencesWinSize(70, 70)
|
||||
assert tstConf.preferencesWinSize == [70, 70]
|
||||
assert tstConf._prefsWinSize == [70, 70]
|
||||
|
||||
tmpConf.setPreferencesWinSize(700, 615)
|
||||
tstConf.setPreferencesWinSize(700, 615)
|
||||
|
||||
# Project Settings Tree Columns
|
||||
tmpConf.guiScale = 2.0
|
||||
tmpConf.setProjLoadColWidths([10, 20, 30])
|
||||
assert tmpConf.projLoadColWidths == [10, 20, 30]
|
||||
assert tmpConf._projLoadCols == [5, 10, 15]
|
||||
tstConf.guiScale = 2.0
|
||||
tstConf.setProjLoadColWidths([10, 20, 30])
|
||||
assert tstConf.projLoadColWidths == [10, 20, 30]
|
||||
assert tstConf._projLoadCols == [5, 10, 15]
|
||||
|
||||
tmpConf.guiScale = 1.0
|
||||
tmpConf.setProjLoadColWidths([10, 20, 30])
|
||||
assert tmpConf.projLoadColWidths == [10, 20, 30]
|
||||
assert tmpConf._projLoadCols == [10, 20, 30]
|
||||
tstConf.guiScale = 1.0
|
||||
tstConf.setProjLoadColWidths([10, 20, 30])
|
||||
assert tstConf.projLoadColWidths == [10, 20, 30]
|
||||
assert tstConf._projLoadCols == [10, 20, 30]
|
||||
|
||||
tmpConf.setProjLoadColWidths([200, 60, 140])
|
||||
tstConf.setProjLoadColWidths([200, 60, 140])
|
||||
|
||||
# Main Pane Splitter
|
||||
tmpConf.guiScale = 2.0
|
||||
tmpConf.setMainPanePos([200, 700])
|
||||
assert tmpConf.mainPanePos == [200, 700]
|
||||
assert tmpConf._mainPanePos == [100, 350]
|
||||
tstConf.guiScale = 2.0
|
||||
tstConf.setMainPanePos([200, 700])
|
||||
assert tstConf.mainPanePos == [200, 700]
|
||||
assert tstConf._mainPanePos == [100, 350]
|
||||
|
||||
tmpConf.guiScale = 1.0
|
||||
tmpConf.setMainPanePos([200, 700])
|
||||
assert tmpConf.mainPanePos == [200, 700]
|
||||
assert tmpConf._mainPanePos == [200, 700]
|
||||
tstConf.guiScale = 1.0
|
||||
tstConf.setMainPanePos([200, 700])
|
||||
assert tstConf.mainPanePos == [200, 700]
|
||||
assert tstConf._mainPanePos == [200, 700]
|
||||
|
||||
tmpConf.setMainPanePos([300, 800])
|
||||
tstConf.setMainPanePos([300, 800])
|
||||
|
||||
# View Pane Splitter
|
||||
tmpConf.guiScale = 2.0
|
||||
tmpConf.setViewPanePos([400, 250])
|
||||
assert tmpConf.viewPanePos == [400, 250]
|
||||
assert tmpConf._viewPanePos == [200, 125]
|
||||
tstConf.guiScale = 2.0
|
||||
tstConf.setViewPanePos([400, 250])
|
||||
assert tstConf.viewPanePos == [400, 250]
|
||||
assert tstConf._viewPanePos == [200, 125]
|
||||
|
||||
tmpConf.guiScale = 1.0
|
||||
tmpConf.setViewPanePos([400, 250])
|
||||
assert tmpConf.viewPanePos == [400, 250]
|
||||
assert tmpConf._viewPanePos == [400, 250]
|
||||
tstConf.guiScale = 1.0
|
||||
tstConf.setViewPanePos([400, 250])
|
||||
assert tstConf.viewPanePos == [400, 250]
|
||||
assert tstConf._viewPanePos == [400, 250]
|
||||
|
||||
tmpConf.setViewPanePos([500, 150])
|
||||
tstConf.setViewPanePos([500, 150])
|
||||
|
||||
# Outline Pane Splitter
|
||||
tmpConf.guiScale = 2.0
|
||||
tmpConf.setOutlinePanePos([400, 250])
|
||||
assert tmpConf.outlinePanePos == [400, 250]
|
||||
assert tmpConf._outlnPanePos == [200, 125]
|
||||
tstConf.guiScale = 2.0
|
||||
tstConf.setOutlinePanePos([400, 250])
|
||||
assert tstConf.outlinePanePos == [400, 250]
|
||||
assert tstConf._outlnPanePos == [200, 125]
|
||||
|
||||
tmpConf.guiScale = 1.0
|
||||
tmpConf.setOutlinePanePos([400, 250])
|
||||
assert tmpConf.outlinePanePos == [400, 250]
|
||||
assert tmpConf._outlnPanePos == [400, 250]
|
||||
tstConf.guiScale = 1.0
|
||||
tstConf.setOutlinePanePos([400, 250])
|
||||
assert tstConf.outlinePanePos == [400, 250]
|
||||
assert tstConf._outlnPanePos == [400, 250]
|
||||
|
||||
tmpConf.setOutlinePanePos([500, 150])
|
||||
tstConf.setOutlinePanePos([500, 150])
|
||||
|
||||
# Getters Only
|
||||
# ============
|
||||
|
||||
tmpConf.guiScale = 1.0
|
||||
assert tmpConf.getTextWidth(False) == 700
|
||||
assert tmpConf.getTextWidth(True) == 800
|
||||
assert tmpConf.getTextMargin() == 40
|
||||
assert tmpConf.getTabWidth() == 40
|
||||
tstConf.guiScale = 1.0
|
||||
assert tstConf.getTextWidth(False) == 700
|
||||
assert tstConf.getTextWidth(True) == 800
|
||||
assert tstConf.getTextMargin() == 40
|
||||
assert tstConf.getTabWidth() == 40
|
||||
|
||||
tmpConf.guiScale = 2.0
|
||||
assert tmpConf.getTextWidth(False) == 1400
|
||||
assert tmpConf.getTextWidth(True) == 1600
|
||||
assert tmpConf.getTextMargin() == 80
|
||||
assert tmpConf.getTabWidth() == 80
|
||||
tstConf.guiScale = 2.0
|
||||
assert tstConf.getTextWidth(False) == 1400
|
||||
assert tstConf.getTextWidth(True) == 1600
|
||||
assert tstConf.getTextMargin() == 80
|
||||
assert tstConf.getTabWidth() == 80
|
||||
|
||||
# END Test testBaseConfig_SettersGetters
|
||||
|
||||
|
||||
@pytest.mark.base
|
||||
def testBaseConfig_Internal(monkeypatch, tmpConf):
|
||||
def testBaseConfig_Internal(monkeypatch, fncPath):
|
||||
"""Check internal functions.
|
||||
"""
|
||||
tstConf = Config()
|
||||
tstConf.initConfig(confPath=fncPath, dataPath=fncPath)
|
||||
|
||||
# Function _packList
|
||||
assert tmpConf._packList(["A", 1, 2.0, None, False]) == "A, 1, 2.0, None, False"
|
||||
assert tstConf._packList(["A", 1, 2.0, None, False]) == "A, 1, 2.0, None, False"
|
||||
|
||||
# Function _checkNone
|
||||
assert tmpConf._checkNone(None) is None
|
||||
assert tmpConf._checkNone("None") is None
|
||||
assert tmpConf._checkNone("none") is None
|
||||
assert tmpConf._checkNone("NONE") is None
|
||||
assert tmpConf._checkNone("NoNe") is None
|
||||
assert tmpConf._checkNone(123456) == 123456
|
||||
assert tstConf._checkNone(None) is None
|
||||
assert tstConf._checkNone("None") is None
|
||||
assert tstConf._checkNone("none") is None
|
||||
assert tstConf._checkNone("NONE") is None
|
||||
assert tstConf._checkNone("NoNe") is None
|
||||
assert tstConf._checkNone(123456) == 123456
|
||||
|
||||
# Function _checkOptionalPackages
|
||||
# (Assumes enchant package exists and is importable)
|
||||
tmpConf._checkOptionalPackages()
|
||||
assert tmpConf.hasEnchant is True
|
||||
tstConf._checkOptionalPackages()
|
||||
assert tstConf.hasEnchant is True
|
||||
|
||||
with monkeypatch.context() as mp:
|
||||
mp.setitem(sys.modules, "enchant", None)
|
||||
tmpConf._checkOptionalPackages()
|
||||
assert tmpConf.hasEnchant is False
|
||||
tstConf._checkOptionalPackages()
|
||||
assert tstConf.hasEnchant is False
|
||||
|
||||
# END Test testBaseConfig_Internal
|
||||
|
||||
|
||||
@pytest.mark.base
|
||||
def testBaseConfig_RecentCache(monkeypatch, fncConf, fncPath):
|
||||
def testBaseConfig_RecentCache(monkeypatch, tstPaths):
|
||||
"""Test recent cache file.
|
||||
"""
|
||||
cacheFile = fncPath / nwFiles.RECENT_FILE
|
||||
recent = RecentProjects(fncConf)
|
||||
cacheFile = tstPaths.cnfDir / nwFiles.RECENT_FILE
|
||||
recent = RecentProjects(CONFIG)
|
||||
|
||||
# Load when there is no file should pass, but load nothing
|
||||
assert not cacheFile.exists()
|
||||
@@ -394,8 +404,8 @@ def testBaseConfig_RecentCache(monkeypatch, fncConf, fncPath):
|
||||
assert recent.listEntries() == []
|
||||
|
||||
# Add a couple of values
|
||||
pathOne = fncPath / "projPathOne" / nwFiles.PROJ_FILE
|
||||
pathTwo = fncPath / "projPathTwo" / nwFiles.PROJ_FILE
|
||||
pathOne = tstPaths.cnfDir / "projPathOne" / nwFiles.PROJ_FILE
|
||||
pathTwo = tstPaths.cnfDir / "projPathTwo" / nwFiles.PROJ_FILE
|
||||
|
||||
recent.update(pathOne, "Proj One", 100, 1600002000)
|
||||
recent.update(pathTwo, "Proj Two", 200, 1600005600)
|
||||
|
||||
@@ -28,13 +28,13 @@ from mock import MockGuiMain
|
||||
|
||||
|
||||
@pytest.mark.base
|
||||
def testBaseInit_Launch(caplog, monkeypatch, tmpPath):
|
||||
def testBaseInit_Launch(caplog, monkeypatch, fncPath):
|
||||
"""Check launching the main GUI.
|
||||
"""
|
||||
monkeypatch.setattr("novelwriter.guimain.GuiMain", MockGuiMain)
|
||||
|
||||
# TestMode Launch
|
||||
nwGUI = novelwriter.main(["--testmode", f"--config={tmpPath}", f"--data={tmpPath}"])
|
||||
nwGUI = novelwriter.main(["--testmode", f"--config={fncPath}", f"--data={fncPath}"])
|
||||
assert isinstance(nwGUI, MockGuiMain)
|
||||
|
||||
# Darwin Launch
|
||||
@@ -43,7 +43,7 @@ def testBaseInit_Launch(caplog, monkeypatch, tmpPath):
|
||||
novelwriter.CONFIG.osDarwin = True
|
||||
with monkeypatch.context() as mp:
|
||||
mp.setitem(sys.modules, "Foundation", None)
|
||||
nwGUI = novelwriter.main(["--testmode", f"--config={tmpPath}", f"--data={tmpPath}"])
|
||||
nwGUI = novelwriter.main(["--testmode", f"--config={fncPath}", f"--data={fncPath}"])
|
||||
assert isinstance(nwGUI, MockGuiMain)
|
||||
assert "Failed" in caplog.text
|
||||
|
||||
@@ -55,7 +55,7 @@ def testBaseInit_Launch(caplog, monkeypatch, tmpPath):
|
||||
novelwriter.CONFIG.osWindows = True
|
||||
with monkeypatch.context() as mp:
|
||||
mp.setitem(sys.modules, "ctypes", None)
|
||||
nwGUI = novelwriter.main(["--testmode", f"--config={tmpPath}", f"--data={tmpPath}"])
|
||||
nwGUI = novelwriter.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
|
||||
@@ -71,19 +71,19 @@ def testBaseInit_Launch(caplog, monkeypatch, tmpPath):
|
||||
monkeypatch.setattr("PyQt5.QtWidgets.QApplication.setOrganizationDomain", lambda *a: None)
|
||||
monkeypatch.setattr("PyQt5.QtWidgets.QApplication.exec_", lambda *a: 0)
|
||||
with pytest.raises(SystemExit) as ex:
|
||||
novelwriter.main([f"--config={tmpPath}", f"--data={tmpPath}"])
|
||||
novelwriter.main([f"--config={fncPath}", f"--data={fncPath}"])
|
||||
assert ex.value.code == 0
|
||||
|
||||
# END Test testBaseInit_Launch
|
||||
|
||||
|
||||
@pytest.mark.base
|
||||
def testBaseInit_Options(monkeypatch, tmpPath):
|
||||
def testBaseInit_Options(monkeypatch, fncPath):
|
||||
"""Test command line options for logging level.
|
||||
"""
|
||||
monkeypatch.setattr("novelwriter.guimain.GuiMain", MockGuiMain)
|
||||
monkeypatch.setattr(sys, "argv", [
|
||||
"novelWriter.py", "--testmode", f"--config={tmpPath}", f"--data={tmpPath}"
|
||||
"novelWriter.py", "--testmode", f"--config={fncPath}", f"--data={fncPath}"
|
||||
])
|
||||
|
||||
# Defaults w/None Args
|
||||
@@ -93,20 +93,20 @@ def testBaseInit_Options(monkeypatch, tmpPath):
|
||||
|
||||
# Defaults
|
||||
nwGUI = novelwriter.main(
|
||||
["--testmode", f"--config={tmpPath}", f"--data={tmpPath}", "--style=Fusion"]
|
||||
["--testmode", f"--config={fncPath}", f"--data={fncPath}", "--style=Fusion"]
|
||||
)
|
||||
assert novelwriter.logger.getEffectiveLevel() == logging.WARNING
|
||||
assert nwGUI.closeMain() == "closeMain"
|
||||
|
||||
# Log Levels
|
||||
nwGUI = novelwriter.main(
|
||||
["--testmode", "--info", f"--config={tmpPath}", f"--data={tmpPath}"]
|
||||
["--testmode", "--info", f"--config={fncPath}", f"--data={fncPath}"]
|
||||
)
|
||||
assert novelwriter.logger.getEffectiveLevel() == logging.INFO
|
||||
assert nwGUI.closeMain() == "closeMain"
|
||||
|
||||
nwGUI = novelwriter.main(
|
||||
["--testmode", "--debug", f"--config={tmpPath}", f"--data={tmpPath}"]
|
||||
["--testmode", "--debug", f"--config={fncPath}", f"--data={fncPath}"]
|
||||
)
|
||||
assert novelwriter.logger.getEffectiveLevel() == logging.DEBUG
|
||||
assert nwGUI.closeMain() == "closeMain"
|
||||
@@ -114,14 +114,14 @@ def testBaseInit_Options(monkeypatch, tmpPath):
|
||||
# Help and Version
|
||||
with pytest.raises(SystemExit) as ex:
|
||||
nwGUI = novelwriter.main(
|
||||
["--testmode", "--help", f"--config={tmpPath}", f"--data={tmpPath}"]
|
||||
["--testmode", "--help", f"--config={fncPath}", f"--data={fncPath}"]
|
||||
)
|
||||
assert nwGUI.closeMain() == "closeMain"
|
||||
assert ex.value.code == 0
|
||||
|
||||
with pytest.raises(SystemExit) as ex:
|
||||
nwGUI = novelwriter.main(
|
||||
["--testmode", "--version", f"--config={tmpPath}", f"--data={tmpPath}"]
|
||||
["--testmode", "--version", f"--config={fncPath}", f"--data={fncPath}"]
|
||||
)
|
||||
assert nwGUI.closeMain() == "closeMain"
|
||||
assert ex.value.code == 0
|
||||
@@ -129,14 +129,14 @@ def testBaseInit_Options(monkeypatch, tmpPath):
|
||||
# Invalid options
|
||||
with pytest.raises(SystemExit) as ex:
|
||||
nwGUI = novelwriter.main(
|
||||
["--testmode", "--invalid", f"--config={tmpPath}", f"--data={tmpPath}"]
|
||||
["--testmode", "--invalid", f"--config={fncPath}", f"--data={fncPath}"]
|
||||
)
|
||||
assert nwGUI.closeMain() == "closeMain"
|
||||
assert ex.value.code == 2
|
||||
|
||||
# Project Path
|
||||
nwGUI = novelwriter.main(
|
||||
["--testmode", f"--config={tmpPath}", f"--data={tmpPath}", "sample/"]
|
||||
["--testmode", f"--config={fncPath}", f"--data={fncPath}", "sample/"]
|
||||
)
|
||||
assert nwGUI.closeMain() == "closeMain"
|
||||
|
||||
@@ -144,7 +144,7 @@ def testBaseInit_Options(monkeypatch, tmpPath):
|
||||
|
||||
|
||||
@pytest.mark.base
|
||||
def testBaseInit_Imports(caplog, monkeypatch, tmpPath):
|
||||
def testBaseInit_Imports(caplog, monkeypatch, fncPath):
|
||||
"""Check import error handling.
|
||||
"""
|
||||
monkeypatch.setattr("novelwriter.guimain.GuiMain", MockGuiMain)
|
||||
@@ -160,7 +160,7 @@ def testBaseInit_Imports(caplog, monkeypatch, tmpPath):
|
||||
|
||||
with pytest.raises(SystemExit) as ex:
|
||||
_ = novelwriter.main(
|
||||
["--testmode", f"--config={tmpPath}", f"--data={tmpPath}"]
|
||||
["--testmode", f"--config={fncPath}", f"--data={fncPath}"]
|
||||
)
|
||||
|
||||
assert ex.value.code & 4 == 4 # Python version not satisfied
|
||||
|
||||
Reference in New Issue
Block a user