From 2768c46976e6b85be9f14550255e755fbd1af198 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" Date: Sat, 18 May 2019 15:02:58 +0200 Subject: [PATCH] Updated tests and added a better way to save temp files --- tests/conftest.py | 36 +++++++++++++ .../1_1489056e0916_main.nwd} | 0 .../1_nwProject.nwx} | 3 +- .../2_nwProject.nwx} | 3 +- .../3_nwProject.nwx} | 3 +- tests/reference/novelwriter.conf | 8 +-- .../1_nwProject.nwx} | 3 +- .../2_nwProject.nwx} | 1 + tests/test_config.py | 44 ++++++++-------- tests/test_gui.py | 50 ++++++++----------- tests/test_project.py | 40 +++++++-------- 11 files changed, 111 insertions(+), 80 deletions(-) create mode 100644 tests/conftest.py rename tests/reference/{gui_1489056e0916_main.nwd => gui/1_1489056e0916_main.nwd} (100%) rename tests/reference/{gui_nwProject.nwx => gui/1_nwProject.nwx} (96%) rename tests/reference/{projedit_nwProject.nwx => gui/2_nwProject.nwx} (97%) rename tests/reference/{itemedit_nwProject.nwx => gui/3_nwProject.nwx} (96%) rename tests/reference/{new_nwProject.nwx => proj/1_nwProject.nwx} (93%) rename tests/reference/{roots_nwProject.nwx => proj/2_nwProject.nwx} (98%) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..830b620c --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +"""novelWriter Test Config +""" + +import pytest, shutil +from os import path, mkdir + +@pytest.fixture(scope="session") +def nwTemp(): + testDir = path.dirname(__file__) + tempDir = path.join(testDir,"temp") + if path.isdir(tempDir): + shutil.rmtree(tempDir) + if not path.isdir(tempDir): + mkdir(tempDir) + return tempDir + +@pytest.fixture(scope="session") +def nwTempProj(nwTemp): + projDir = path.join(nwTemp,"proj") + if not path.isdir(projDir): + mkdir(projDir) + return projDir + +@pytest.fixture(scope="session") +def nwTempGUI(nwTemp): + guiDir = path.join(nwTemp,"gui") + if not path.isdir(guiDir): + mkdir(guiDir) + return guiDir + +@pytest.fixture(scope="session") +def nwRef(): + testDir = path.dirname(__file__) + refDir = path.join(testDir,"reference") + return refDir diff --git a/tests/reference/gui_1489056e0916_main.nwd b/tests/reference/gui/1_1489056e0916_main.nwd similarity index 100% rename from tests/reference/gui_1489056e0916_main.nwd rename to tests/reference/gui/1_1489056e0916_main.nwd diff --git a/tests/reference/gui_nwProject.nwx b/tests/reference/gui/1_nwProject.nwx similarity index 96% rename from tests/reference/gui_nwProject.nwx rename to tests/reference/gui/1_nwProject.nwx index 80caebae..75ab919f 100644 --- a/tests/reference/gui_nwProject.nwx +++ b/tests/reference/gui/1_nwProject.nwx @@ -1,5 +1,5 @@ - + @@ -32,6 +32,7 @@ 0 0 0 + 0 Characters diff --git a/tests/reference/projedit_nwProject.nwx b/tests/reference/gui/2_nwProject.nwx similarity index 97% rename from tests/reference/projedit_nwProject.nwx rename to tests/reference/gui/2_nwProject.nwx index 2cd49256..74949967 100644 --- a/tests/reference/projedit_nwProject.nwx +++ b/tests/reference/gui/2_nwProject.nwx @@ -1,5 +1,5 @@ - + Project Name Project Title @@ -34,6 +34,7 @@ 0 0 0 + 0 Characters diff --git a/tests/reference/itemedit_nwProject.nwx b/tests/reference/gui/3_nwProject.nwx similarity index 96% rename from tests/reference/itemedit_nwProject.nwx rename to tests/reference/gui/3_nwProject.nwx index b55ba18e..632419cb 100644 --- a/tests/reference/itemedit_nwProject.nwx +++ b/tests/reference/gui/3_nwProject.nwx @@ -1,5 +1,5 @@ - + @@ -32,6 +32,7 @@ 0 0 0 + 0 Characters diff --git a/tests/reference/novelwriter.conf b/tests/reference/novelwriter.conf index 00e800be..645ec486 100644 --- a/tests/reference/novelwriter.conf +++ b/tests/reference/novelwriter.conf @@ -1,10 +1,10 @@ [Main] -timestamp = 2019-05-12 12:04:16 +timestamp = 2019-05-18 15:02:22 [Sizes] geometry = 1100, 650 -treecols = 120, 30, 50 -mainpane = 300, 800 +treecols = 120, 30, 129 +mainpane = 299, 797 [Project] autosaveproject = 60 @@ -25,7 +25,7 @@ repdots = True spellcheck = en_GB [Path] -recent0 = +recent0 = /home/vkbo/Code/novelWriter/tests/temp/gui recent1 = recent2 = recent3 = diff --git a/tests/reference/new_nwProject.nwx b/tests/reference/proj/1_nwProject.nwx similarity index 93% rename from tests/reference/new_nwProject.nwx rename to tests/reference/proj/1_nwProject.nwx index e9a65102..91f8998d 100644 --- a/tests/reference/new_nwProject.nwx +++ b/tests/reference/proj/1_nwProject.nwx @@ -1,5 +1,5 @@ - + @@ -53,6 +53,7 @@ 0 0 0 + 0 diff --git a/tests/reference/roots_nwProject.nwx b/tests/reference/proj/2_nwProject.nwx similarity index 98% rename from tests/reference/roots_nwProject.nwx rename to tests/reference/proj/2_nwProject.nwx index 8cad23c9..8a101717 100644 --- a/tests/reference/roots_nwProject.nwx +++ b/tests/reference/proj/2_nwProject.nwx @@ -53,6 +53,7 @@ 0 0 0 + 0 Timeline diff --git a/tests/test_config.py b/tests/test_config.py index 4301886a..528b7dcf 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -4,40 +4,34 @@ import nw, pytest from nwtools import * -from os import path, unlink +from os import path from nw.config import Config -theConf = Config() -testDir = path.dirname(__file__) -testTemp = path.join(testDir,"temp") -testRef = path.join(testDir,"reference") -tmpConf = path.join(testTemp,"novelwriter.conf") -refConf = path.join(testRef, "novelwriter.conf") - -ensureDir(testTemp) - -# Clean out old stuff -if path.isfile(tmpConf): - unlink(tmpConf) +theConf = Config() @pytest.mark.core -def testConfigInit(): - assert theConf.initConfig(testTemp) +def testConfigInit(nwTemp,nwRef): + tmpConf = path.join(nwTemp,"novelwriter.conf") + refConf = path.join(nwRef, "novelwriter.conf") + assert theConf.initConfig(nwTemp) assert cmpFiles(tmpConf, refConf, [2]) assert not theConf.confChanged @pytest.mark.core -def testConfigSave(): +def testConfigSave(nwTemp,nwRef): + tmpConf = path.join(nwTemp,"novelwriter.conf") + refConf = path.join(nwRef, "novelwriter.conf") + assert theConf.confPath == nwTemp assert theConf.saveConfig() assert cmpFiles(tmpConf, refConf, [2]) assert not theConf.confChanged @pytest.mark.core -def testConfigSetConfPath(): +def testConfigSetConfPath(nwTemp): assert theConf.setConfPath(None) assert not theConf.setConfPath(path.join("somewhere","over","the","rainbow")) - assert theConf.setConfPath(path.join(testTemp,"novelwriter.conf")) - assert theConf.confPath == testTemp + assert theConf.setConfPath(path.join(nwTemp,"novelwriter.conf")) + assert theConf.confPath == nwTemp assert theConf.confFile == "novelwriter.conf" assert not theConf.confChanged @@ -47,7 +41,9 @@ def testConfigLoad(): assert not theConf.confChanged @pytest.mark.core -def testConfigSetWinSize(): +def testConfigSetWinSize(nwTemp,nwRef): + tmpConf = path.join(nwTemp,"novelwriter.conf") + refConf = path.join(nwRef, "novelwriter.conf") assert theConf.setWinSize(1105, 655) assert not theConf.confChanged assert theConf.setWinSize(70,70) @@ -58,7 +54,9 @@ def testConfigSetWinSize(): assert not theConf.confChanged @pytest.mark.core -def testConfigSetTreeColWidths(): +def testConfigSetTreeColWidths(nwTemp,nwRef): + tmpConf = path.join(nwTemp,"novelwriter.conf") + refConf = path.join(nwRef, "novelwriter.conf") assert theConf.setTreeColWidths([0, 0, 0]) assert theConf.confChanged assert theConf.setTreeColWidths([120, 30, 50]) @@ -67,7 +65,9 @@ def testConfigSetTreeColWidths(): assert not theConf.confChanged @pytest.mark.core -def testConfigSetMainPanePos(): +def testConfigSetMainPanePos(nwTemp,nwRef): + tmpConf = path.join(nwTemp,"novelwriter.conf") + refConf = path.join(nwRef, "novelwriter.conf") assert theConf.setMainPanePos([0, 0]) assert theConf.confChanged assert theConf.setMainPanePos([300, 800]) diff --git a/tests/test_gui.py b/tests/test_gui.py index c5584edf..a1154398 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -14,14 +14,10 @@ from nw.enum import * keyDelay = 10 stepDelay = 50 -testDir = path.dirname(__file__) -testRef = path.join(testDir,"reference") @pytest.mark.gui -def testMainWindows(qtbot, tmpdir): - confDir = str(tmpdir.mkdir("conf")) - projDir = str(tmpdir.mkdir("project")) - nwGUI = nw.main(["--testmode","--config=%s" % confDir]) +def testMainWindows(qtbot, nwTempGUI, nwRef): + nwGUI = nw.main(["--testmode","--config=%s" % nwRef]) qtbot.addWidget(nwGUI) nwGUI.show() qtbot.waitForWindowShown(nwGUI) @@ -29,12 +25,12 @@ def testMainWindows(qtbot, tmpdir): # Create new, save, open project nwGUI.theProject.handleSeed = 42 - assert nwGUI.theProject.setProjectPath(projDir) + assert nwGUI.theProject.setProjectPath(nwTempGUI) assert nwGUI.newProject() - assert nwGUI.theProject.setProjectPath(projDir) + assert nwGUI.theProject.setProjectPath(nwTempGUI) assert nwGUI.saveProject() qtbot.wait(stepDelay) - assert nwGUI.openProject(projDir) + assert nwGUI.openProject(nwTempGUI) qtbot.wait(stepDelay) # Check that tree items have been created @@ -108,18 +104,16 @@ def testMainWindows(qtbot, tmpdir): qtbot.wait(stepDelay) # Check the files - projFile = path.join(projDir,"nwProject.nwx") - assert cmpFiles(projFile, path.join(testRef,"gui_nwProject.nwx"), [2]) - sceneFile = path.join(projDir,"data_3","1489056e0916_main.nwd") - assert cmpFiles(sceneFile, path.join(testRef,"gui_1489056e0916_main.nwd")) + projFile = path.join(nwTempGUI,"nwProject.nwx") + assert cmpFiles(projFile, path.join(nwRef,"gui","1_nwProject.nwx"), [2]) + sceneFile = path.join(nwTempGUI,"data_3","1489056e0916_main.nwd") + assert cmpFiles(sceneFile, path.join(nwRef,"gui","1_1489056e0916_main.nwd")) # qtbot.stopForInteraction() @pytest.mark.gui -def testProjectEditor(qtbot, tmpdir): - confDir = str(tmpdir.mkdir("conf")) - projDir = str(tmpdir.mkdir("project")) - nwGUI = nw.main(["--testmode","--config=%s" % confDir]) +def testProjectEditor(qtbot, nwTempGUI, nwRef): + nwGUI = nw.main(["--testmode","--config=%s" % nwRef]) qtbot.addWidget(nwGUI) nwGUI.show() qtbot.waitForWindowShown(nwGUI) @@ -127,9 +121,9 @@ def testProjectEditor(qtbot, tmpdir): # Create new, save, open project nwGUI.theProject.handleSeed = 42 - assert nwGUI.theProject.setProjectPath(projDir) + assert nwGUI.theProject.setProjectPath(nwTempGUI) assert nwGUI.newProject() - assert nwGUI.theProject.setProjectPath(projDir) + assert nwGUI.theProject.setProjectPath(nwTempGUI) projEdit = GuiProjectEditor(nwGUI, nwGUI.theProject) qtbot.addWidget(projEdit) @@ -162,16 +156,14 @@ def testProjectEditor(qtbot, tmpdir): qtbot.wait(stepDelay) # Check the files - projFile = path.join(projDir,"nwProject.nwx") - assert cmpFiles(projFile, path.join(testRef,"projedit_nwProject.nwx"), [2]) + projFile = path.join(nwTempGUI,"nwProject.nwx") + assert cmpFiles(projFile, path.join(nwRef,"gui","2_nwProject.nwx"), [2]) # qtbot.stopForInteraction() @pytest.mark.gui -def testItemEditor(qtbot, tmpdir): - confDir = str(tmpdir.mkdir("conf")) - projDir = str(tmpdir.mkdir("project")) - nwGUI = nw.main(["--testmode","--config=%s" % confDir]) +def testItemEditor(qtbot, nwTempGUI, nwRef): + nwGUI = nw.main(["--testmode","--config=%s" % nwRef]) qtbot.addWidget(nwGUI) nwGUI.show() qtbot.waitForWindowShown(nwGUI) @@ -179,9 +171,9 @@ def testItemEditor(qtbot, tmpdir): # Create new, save, open project nwGUI.theProject.handleSeed = 42 - assert nwGUI.theProject.setProjectPath(projDir) + assert nwGUI.theProject.setProjectPath(nwTempGUI) assert nwGUI.newProject() - assert nwGUI.theProject.setProjectPath(projDir) + assert nwGUI.theProject.setProjectPath(nwTempGUI) itemEdit = GuiItemEditor(nwGUI, nwGUI.theProject, "31489056e0916") qtbot.addWidget(itemEdit) @@ -211,7 +203,7 @@ def testItemEditor(qtbot, tmpdir): qtbot.wait(stepDelay) # Check the files - projFile = path.join(projDir,"nwProject.nwx") - assert cmpFiles(projFile, path.join(testRef,"itemedit_nwProject.nwx"), [2]) + projFile = path.join(nwTempGUI,"nwProject.nwx") + assert cmpFiles(projFile, path.join(nwRef,"gui","3_nwProject.nwx"), [2]) # qtbot.stopForInteraction() diff --git a/tests/test_project.py b/tests/test_project.py index 14406287..db925c02 100644 --- a/tests/test_project.py +++ b/tests/test_project.py @@ -3,7 +3,7 @@ """ import nw, pytest, types -from os import path, unlink +from os import path from nwtools import * from nwdummy import DummyMain @@ -13,42 +13,40 @@ from nw.project.project import NWProject from nw.project.item import NWItem from nw.enum import nwItemClass -theConf = Config() -theMain = DummyMain() +theConf = Config() +theMain = DummyMain() theMain.mainConf = theConf -testDir = path.dirname(__file__) -testTemp = path.join(testDir,"temp") -testRef = path.join(testDir,"reference") -testProj = path.join(testTemp,"proj") -ensureDir(testTemp) -ensureDir(testProj) - -theConf.initConfig(testRef) theProject = NWProject(theMain) theProject.handleSeed = 42 -projFile = path.join(testProj,"nwProject.nwx") - @pytest.mark.project -def testProjectNew(): +def testProjectNew(nwTempProj,nwRef): + projFile = path.join(nwTempProj,"nwProject.nwx") + refFile = path.join(nwRef,"proj","1_nwProject.nwx") + assert theConf.initConfig(nwRef) assert theProject.newProject() - assert theProject.setProjectPath(testProj) + assert theProject.setProjectPath(nwTempProj) assert theProject.saveProject() - assert cmpFiles(projFile, path.join(testRef,"new_nwProject.nwx"), [2]) + assert cmpFiles(projFile, refFile, [2]) @pytest.mark.project -def testProjectOpen(): +def testProjectOpen(nwTempProj): + projFile = path.join(nwTempProj,"nwProject.nwx") assert theProject.openProject(projFile) @pytest.mark.project -def testProjectSave(): +def testProjectSave(nwTempProj,nwRef): + projFile = path.join(nwTempProj,"nwProject.nwx") + refFile = path.join(nwRef,"proj","1_nwProject.nwx") assert theProject.saveProject() - assert cmpFiles(projFile, path.join(testRef,"new_nwProject.nwx"), [2]) + assert cmpFiles(projFile, refFile, [2]) assert not theProject.projChanged @pytest.mark.project -def testProjectNewRoot(): +def testProjectNewRoot(nwTempProj,nwRef): + projFile = path.join(nwTempProj,"nwProject.nwx") + refFile = path.join(nwRef,"proj","2_nwProject.nwx") assert theProject.openProject(projFile) assert isinstance(theProject.newRoot("Novel", nwItemClass.NOVEL), type(None)) assert isinstance(theProject.newRoot("Plot", nwItemClass.PLOT), type(None)) @@ -60,5 +58,5 @@ def testProjectNewRoot(): assert isinstance(theProject.newRoot("Custom2", nwItemClass.CUSTOM), str) assert theProject.projChanged assert theProject.saveProject() - assert cmpFiles(projFile, path.join(testRef,"roots_nwProject.nwx"), [2]) + assert cmpFiles(projFile, refFile, [2]) assert not theProject.projChanged