From 0696ef79e43eaf7c040c1a43e833c1b889ecbdd5 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Wed, 26 Feb 2020 18:27:07 +0100 Subject: [PATCH] Fix tests and added --data option to command line --- nw/__init__.py | 7 ++++++- nw/config.py | 29 +++++++++++++++++++++-------- tests/reference/novelwriter.conf | 12 +----------- tests/test_config.py | 2 +- tests/test_gui.py | 16 ++++++++-------- tests/test_project.py | 4 ++-- 6 files changed, 39 insertions(+), 31 deletions(-) diff --git a/nw/__init__.py b/nw/__init__.py index d562d446..f3766e6c 100644 --- a/nw/__init__.py +++ b/nw/__init__.py @@ -87,6 +87,7 @@ def main(sysArgs=None): "logfile=", "version", "config=", + "data=", "testmode", "style=", ] @@ -105,6 +106,7 @@ def main(sysArgs=None): " -l, --logfile= Specify log file.\n" " --style= Set Qt5 style flag. Defaults to 'Fusion'.\n" " --config= Alternative config file.\n" + " --data= Alternative user data path.\n" " --headless Do not display GUI. Useful for testing scripts.\n" ).format( appname = __package__, @@ -120,6 +122,7 @@ def main(sysArgs=None): toFile = False toStd = True confPath = None + dataPath = None testMode = False qtStyle = "Fusion" cmdOpen = None @@ -157,6 +160,8 @@ def main(sysArgs=None): qtStyle = inArg elif inOpt in ("--config"): confPath = inArg + elif inOpt in ("--data"): + dataPath = inArg elif inOpt in ("--testmode"): testMode = True @@ -187,7 +192,7 @@ def main(sysArgs=None): logger.setLevel(debugLevel) - CONFIG.initConfig(confPath) + CONFIG.initConfig(confPath, dataPath) if testMode: nwGUI = GuiMain() diff --git a/nw/config.py b/nw/config.py index be5589e7..584e05c4 100644 --- a/nw/config.py +++ b/nw/config.py @@ -117,9 +117,6 @@ class Config: self.showRefPanel = True self.viewComments = True - ## Path - self.recentList = [""]*10 - # Check Qt5 Versions verQt = splitVersionNumber(QT_VERSION_STR) self.verQtString = QT_VERSION_STR @@ -172,7 +169,10 @@ class Config: # Actions ## - def initConfig(self, confPath=None): + def initConfig(self, confPath=None, dataPath=None): + """Initialise the config class. The manual setting of confPath + and dataPath is mainly intended for the test suite. + """ if confPath is None: confRoot = QStandardPaths.writableLocation(QStandardPaths.ConfigLocation) @@ -181,11 +181,15 @@ class Config: logger.info("Setting config from alternative path: %s" % confPath) self.confPath = confPath - if self.verQtValue >= 50400: - dataRoot = QStandardPaths.writableLocation(QStandardPaths.AppDataLocation) + if dataPath is None: + if self.verQtValue >= 50400: + dataRoot = QStandardPaths.writableLocation(QStandardPaths.AppDataLocation) + else: + dataRoot = QStandardPaths.writableLocation(QStandardPaths.DataLocation) + self.dataPath = path.join(path.abspath(dataRoot), self.appHandle) else: - dataRoot = QStandardPaths.writableLocation(QStandardPaths.DataLocation) - self.dataPath = path.join(path.abspath(dataRoot), self.appHandle) + logger.info("Setting data path from alternative path: %s" % dataPath) + self.dataPath = dataPath logger.verbose("Config path: %s" % self.confPath) logger.verbose("Data path: %s" % self.dataPath) @@ -571,6 +575,15 @@ class Config: self.confFile = path.basename(newPath) return True + def setDataPath(self, newPath): + if newPath is None: + return True + if not path.isdir(newPath): + logger.error("Config: Path not found. Using default data path instead.") + return False + self.dataPath = path.dirname(newPath) + return True + def setLastPath(self, lastPath): if lastPath is None or lastPath == "": self.lastPath = "" diff --git a/tests/reference/novelwriter.conf b/tests/reference/novelwriter.conf index 79fb70a7..bac82e44 100644 --- a/tests/reference/novelwriter.conf +++ b/tests/reference/novelwriter.conf @@ -1,5 +1,5 @@ [Main] -timestamp = 2019-11-19 21:49:29 +timestamp = 2020-02-26 18:10:35 theme = default syntax = default_light guidark = False @@ -49,14 +49,4 @@ viewcomments = True [Path] lastpath = -recent0 = -recent1 = -recent2 = -recent3 = -recent4 = -recent5 = -recent6 = -recent7 = -recent8 = -recent9 = diff --git a/tests/test_config.py b/tests/test_config.py index 4c4c2523..81d7db7d 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -13,7 +13,7 @@ theConf = Config() def testConfigInit(nwTemp,nwRef): tmpConf = path.join(nwTemp,"novelwriter.conf") refConf = path.join(nwRef, "novelwriter.conf") - assert theConf.initConfig(nwTemp) + assert theConf.initConfig(nwTemp, nwTemp) assert theConf.setLastPath("") assert theConf.saveConfig() assert cmpFiles(tmpConf, refConf, [2]) diff --git a/tests/test_gui.py b/tests/test_gui.py index dc279222..b039a9d8 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -18,8 +18,8 @@ keyDelay = 10 stepDelay = 50 @pytest.mark.gui -def testMainWindows(qtbot, nwTempGUI, nwRef): - nwGUI = nw.main(["--testmode","--config=%s" % nwTempGUI]) +def testMainWindows(qtbot, nwTempGUI, nwRef, nwTemp): + nwGUI = nw.main(["--testmode","--config=%s" % nwTempGUI, "--data=%s" % nwTemp]) qtbot.addWidget(nwGUI) nwGUI.show() qtbot.waitForWindowShown(nwGUI) @@ -254,8 +254,8 @@ def testMainWindows(qtbot, nwTempGUI, nwRef): # qtbot.stopForInteraction() @pytest.mark.gui -def testTimeLineView(qtbot, nwTempGUI, nwRef): - nwGUI = nw.main(["--testmode","--config=%s" % nwTempGUI]) +def testTimeLineView(qtbot, nwTempGUI, nwRef, nwTemp): + nwGUI = nw.main(["--testmode","--config=%s" % nwTempGUI, "--data=%s" % nwTemp]) qtbot.addWidget(nwGUI) nwGUI.show() qtbot.waitForWindowShown(nwGUI) @@ -276,8 +276,8 @@ def testTimeLineView(qtbot, nwTempGUI, nwRef): nwGUI.closeMain() @pytest.mark.gui -def testProjectEditor(qtbot, nwTempGUI, nwRef): - nwGUI = nw.main(["--testmode","--config=%s" % nwTempGUI]) +def testProjectEditor(qtbot, nwTempGUI, nwRef, nwTemp): + nwGUI = nw.main(["--testmode","--config=%s" % nwTempGUI, "--data=%s" % nwTemp]) qtbot.addWidget(nwGUI) nwGUI.show() qtbot.waitForWindowShown(nwGUI) @@ -363,8 +363,8 @@ def testProjectEditor(qtbot, nwTempGUI, nwRef): # qtbot.stopForInteraction() @pytest.mark.gui -def testItemEditor(qtbot, nwTempGUI, nwRef): - nwGUI = nw.main(["--testmode","--config=%s" % nwTempGUI]) +def testItemEditor(qtbot, nwTempGUI, nwRef, nwTemp): + nwGUI = nw.main(["--testmode","--config=%s" % nwTempGUI, "--data=%s" % nwTemp]) qtbot.addWidget(nwGUI) nwGUI.show() qtbot.waitForWindowShown(nwGUI) diff --git a/tests/test_project.py b/tests/test_project.py index 907d0e9f..c2f4078d 100644 --- a/tests/test_project.py +++ b/tests/test_project.py @@ -22,10 +22,10 @@ theProject = NWProject(theMain) theProject.handleSeed = 42 @pytest.mark.project -def testProjectNew(nwTempProj,nwRef): +def testProjectNew(nwTempProj,nwRef,nwTemp): projFile = path.join(nwTempProj,"nwProject.nwx") refFile = path.join(nwRef,"proj","1_nwProject.nwx") - assert theConf.initConfig(nwRef) + assert theConf.initConfig(nwRef, nwTemp) assert theProject.newProject() assert theProject.setProjectPath(nwTempProj) assert theProject.saveProject()