Updated tests and added a better way to save temp files

This commit is contained in:
Veronica K. B. Olsen
2019-05-18 15:02:58 +02:00
parent 19b2521b73
commit 2768c46976
11 changed files with 111 additions and 80 deletions
+36
View File
@@ -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
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="0.1.2" fileVersion="1.0" timeStamp="2019-05-16 22:37:13"> <novelWriterXML appVersion="0.1.2" fileVersion="1.0" timeStamp="2019-05-18 14:55:20">
<project> <project>
<name></name> <name></name>
<title></title> <title></title>
@@ -32,6 +32,7 @@
<charCount>0</charCount> <charCount>0</charCount>
<wordCount>0</wordCount> <wordCount>0</wordCount>
<paraCount>0</paraCount> <paraCount>0</paraCount>
<cursorPos>0</cursorPos>
</item> </item>
<item handle="44cb730c42048" order="1" parent="None"> <item handle="44cb730c42048" order="1" parent="None">
<name>Characters</name> <name>Characters</name>
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="0.1.2" fileVersion="1.0" timeStamp="2019-05-17 20:43:19"> <novelWriterXML appVersion="0.1.2" fileVersion="1.0" timeStamp="2019-05-18 14:58:58">
<project> <project>
<name>Project Name</name> <name>Project Name</name>
<title>Project Title</title> <title>Project Title</title>
@@ -34,6 +34,7 @@
<charCount>0</charCount> <charCount>0</charCount>
<wordCount>0</wordCount> <wordCount>0</wordCount>
<paraCount>0</paraCount> <paraCount>0</paraCount>
<cursorPos>0</cursorPos>
</item> </item>
<item handle="44cb730c42048" order="1" parent="None"> <item handle="44cb730c42048" order="1" parent="None">
<name>Characters</name> <name>Characters</name>
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="0.1.2" fileVersion="1.0" timeStamp="2019-05-17 21:06:41"> <novelWriterXML appVersion="0.1.2" fileVersion="1.0" timeStamp="2019-05-18 15:00:34">
<project> <project>
<name></name> <name></name>
<title></title> <title></title>
@@ -32,6 +32,7 @@
<charCount>0</charCount> <charCount>0</charCount>
<wordCount>0</wordCount> <wordCount>0</wordCount>
<paraCount>0</paraCount> <paraCount>0</paraCount>
<cursorPos>0</cursorPos>
</item> </item>
<item handle="44cb730c42048" order="1" parent="None"> <item handle="44cb730c42048" order="1" parent="None">
<name>Characters</name> <name>Characters</name>
+4 -4
View File
@@ -1,10 +1,10 @@
[Main] [Main]
timestamp = 2019-05-12 12:04:16 timestamp = 2019-05-18 15:02:22
[Sizes] [Sizes]
geometry = 1100, 650 geometry = 1100, 650
treecols = 120, 30, 50 treecols = 120, 30, 129
mainpane = 300, 800 mainpane = 299, 797
[Project] [Project]
autosaveproject = 60 autosaveproject = 60
@@ -25,7 +25,7 @@ repdots = True
spellcheck = en_GB spellcheck = en_GB
[Path] [Path]
recent0 = recent0 = /home/vkbo/Code/novelWriter/tests/temp/gui
recent1 = recent1 =
recent2 = recent2 =
recent3 = recent3 =
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="0.1.0" fileVersion="1.0" timeStamp="2019-05-12 14:21:08"> <novelWriterXML appVersion="0.1.2" fileVersion="1.0" timeStamp="2019-05-18 14:46:29">
<project> <project>
<name></name> <name></name>
<title></title> <title></title>
@@ -53,6 +53,7 @@
<charCount>0</charCount> <charCount>0</charCount>
<wordCount>0</wordCount> <wordCount>0</wordCount>
<paraCount>0</paraCount> <paraCount>0</paraCount>
<cursorPos>0</cursorPos>
</item> </item>
</content> </content>
</novelWriterXML> </novelWriterXML>
@@ -53,6 +53,7 @@
<charCount>0</charCount> <charCount>0</charCount>
<wordCount>0</wordCount> <wordCount>0</wordCount>
<paraCount>0</paraCount> <paraCount>0</paraCount>
<cursorPos>0</cursorPos>
</item> </item>
<item handle="39fa9ec190eee" order="None" parent="None"> <item handle="39fa9ec190eee" order="None" parent="None">
<name>Timeline</name> <name>Timeline</name>
+22 -22
View File
@@ -4,40 +4,34 @@
import nw, pytest import nw, pytest
from nwtools import * from nwtools import *
from os import path, unlink from os import path
from nw.config import Config from nw.config import Config
theConf = 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)
@pytest.mark.core @pytest.mark.core
def testConfigInit(): def testConfigInit(nwTemp,nwRef):
assert theConf.initConfig(testTemp) tmpConf = path.join(nwTemp,"novelwriter.conf")
refConf = path.join(nwRef, "novelwriter.conf")
assert theConf.initConfig(nwTemp)
assert cmpFiles(tmpConf, refConf, [2]) assert cmpFiles(tmpConf, refConf, [2])
assert not theConf.confChanged assert not theConf.confChanged
@pytest.mark.core @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 theConf.saveConfig()
assert cmpFiles(tmpConf, refConf, [2]) assert cmpFiles(tmpConf, refConf, [2])
assert not theConf.confChanged assert not theConf.confChanged
@pytest.mark.core @pytest.mark.core
def testConfigSetConfPath(): def testConfigSetConfPath(nwTemp):
assert theConf.setConfPath(None) assert theConf.setConfPath(None)
assert not theConf.setConfPath(path.join("somewhere","over","the","rainbow")) assert not theConf.setConfPath(path.join("somewhere","over","the","rainbow"))
assert theConf.setConfPath(path.join(testTemp,"novelwriter.conf")) assert theConf.setConfPath(path.join(nwTemp,"novelwriter.conf"))
assert theConf.confPath == testTemp assert theConf.confPath == nwTemp
assert theConf.confFile == "novelwriter.conf" assert theConf.confFile == "novelwriter.conf"
assert not theConf.confChanged assert not theConf.confChanged
@@ -47,7 +41,9 @@ def testConfigLoad():
assert not theConf.confChanged assert not theConf.confChanged
@pytest.mark.core @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 theConf.setWinSize(1105, 655)
assert not theConf.confChanged assert not theConf.confChanged
assert theConf.setWinSize(70,70) assert theConf.setWinSize(70,70)
@@ -58,7 +54,9 @@ def testConfigSetWinSize():
assert not theConf.confChanged assert not theConf.confChanged
@pytest.mark.core @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.setTreeColWidths([0, 0, 0])
assert theConf.confChanged assert theConf.confChanged
assert theConf.setTreeColWidths([120, 30, 50]) assert theConf.setTreeColWidths([120, 30, 50])
@@ -67,7 +65,9 @@ def testConfigSetTreeColWidths():
assert not theConf.confChanged assert not theConf.confChanged
@pytest.mark.core @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.setMainPanePos([0, 0])
assert theConf.confChanged assert theConf.confChanged
assert theConf.setMainPanePos([300, 800]) assert theConf.setMainPanePos([300, 800])
+21 -29
View File
@@ -14,14 +14,10 @@ from nw.enum import *
keyDelay = 10 keyDelay = 10
stepDelay = 50 stepDelay = 50
testDir = path.dirname(__file__)
testRef = path.join(testDir,"reference")
@pytest.mark.gui @pytest.mark.gui
def testMainWindows(qtbot, tmpdir): def testMainWindows(qtbot, nwTempGUI, nwRef):
confDir = str(tmpdir.mkdir("conf")) nwGUI = nw.main(["--testmode","--config=%s" % nwRef])
projDir = str(tmpdir.mkdir("project"))
nwGUI = nw.main(["--testmode","--config=%s" % confDir])
qtbot.addWidget(nwGUI) qtbot.addWidget(nwGUI)
nwGUI.show() nwGUI.show()
qtbot.waitForWindowShown(nwGUI) qtbot.waitForWindowShown(nwGUI)
@@ -29,12 +25,12 @@ def testMainWindows(qtbot, tmpdir):
# Create new, save, open project # Create new, save, open project
nwGUI.theProject.handleSeed = 42 nwGUI.theProject.handleSeed = 42
assert nwGUI.theProject.setProjectPath(projDir) assert nwGUI.theProject.setProjectPath(nwTempGUI)
assert nwGUI.newProject() assert nwGUI.newProject()
assert nwGUI.theProject.setProjectPath(projDir) assert nwGUI.theProject.setProjectPath(nwTempGUI)
assert nwGUI.saveProject() assert nwGUI.saveProject()
qtbot.wait(stepDelay) qtbot.wait(stepDelay)
assert nwGUI.openProject(projDir) assert nwGUI.openProject(nwTempGUI)
qtbot.wait(stepDelay) qtbot.wait(stepDelay)
# Check that tree items have been created # Check that tree items have been created
@@ -108,18 +104,16 @@ def testMainWindows(qtbot, tmpdir):
qtbot.wait(stepDelay) qtbot.wait(stepDelay)
# Check the files # Check the files
projFile = path.join(projDir,"nwProject.nwx") projFile = path.join(nwTempGUI,"nwProject.nwx")
assert cmpFiles(projFile, path.join(testRef,"gui_nwProject.nwx"), [2]) assert cmpFiles(projFile, path.join(nwRef,"gui","1_nwProject.nwx"), [2])
sceneFile = path.join(projDir,"data_3","1489056e0916_main.nwd") sceneFile = path.join(nwTempGUI,"data_3","1489056e0916_main.nwd")
assert cmpFiles(sceneFile, path.join(testRef,"gui_1489056e0916_main.nwd")) assert cmpFiles(sceneFile, path.join(nwRef,"gui","1_1489056e0916_main.nwd"))
# qtbot.stopForInteraction() # qtbot.stopForInteraction()
@pytest.mark.gui @pytest.mark.gui
def testProjectEditor(qtbot, tmpdir): def testProjectEditor(qtbot, nwTempGUI, nwRef):
confDir = str(tmpdir.mkdir("conf")) nwGUI = nw.main(["--testmode","--config=%s" % nwRef])
projDir = str(tmpdir.mkdir("project"))
nwGUI = nw.main(["--testmode","--config=%s" % confDir])
qtbot.addWidget(nwGUI) qtbot.addWidget(nwGUI)
nwGUI.show() nwGUI.show()
qtbot.waitForWindowShown(nwGUI) qtbot.waitForWindowShown(nwGUI)
@@ -127,9 +121,9 @@ def testProjectEditor(qtbot, tmpdir):
# Create new, save, open project # Create new, save, open project
nwGUI.theProject.handleSeed = 42 nwGUI.theProject.handleSeed = 42
assert nwGUI.theProject.setProjectPath(projDir) assert nwGUI.theProject.setProjectPath(nwTempGUI)
assert nwGUI.newProject() assert nwGUI.newProject()
assert nwGUI.theProject.setProjectPath(projDir) assert nwGUI.theProject.setProjectPath(nwTempGUI)
projEdit = GuiProjectEditor(nwGUI, nwGUI.theProject) projEdit = GuiProjectEditor(nwGUI, nwGUI.theProject)
qtbot.addWidget(projEdit) qtbot.addWidget(projEdit)
@@ -162,16 +156,14 @@ def testProjectEditor(qtbot, tmpdir):
qtbot.wait(stepDelay) qtbot.wait(stepDelay)
# Check the files # Check the files
projFile = path.join(projDir,"nwProject.nwx") projFile = path.join(nwTempGUI,"nwProject.nwx")
assert cmpFiles(projFile, path.join(testRef,"projedit_nwProject.nwx"), [2]) assert cmpFiles(projFile, path.join(nwRef,"gui","2_nwProject.nwx"), [2])
# qtbot.stopForInteraction() # qtbot.stopForInteraction()
@pytest.mark.gui @pytest.mark.gui
def testItemEditor(qtbot, tmpdir): def testItemEditor(qtbot, nwTempGUI, nwRef):
confDir = str(tmpdir.mkdir("conf")) nwGUI = nw.main(["--testmode","--config=%s" % nwRef])
projDir = str(tmpdir.mkdir("project"))
nwGUI = nw.main(["--testmode","--config=%s" % confDir])
qtbot.addWidget(nwGUI) qtbot.addWidget(nwGUI)
nwGUI.show() nwGUI.show()
qtbot.waitForWindowShown(nwGUI) qtbot.waitForWindowShown(nwGUI)
@@ -179,9 +171,9 @@ def testItemEditor(qtbot, tmpdir):
# Create new, save, open project # Create new, save, open project
nwGUI.theProject.handleSeed = 42 nwGUI.theProject.handleSeed = 42
assert nwGUI.theProject.setProjectPath(projDir) assert nwGUI.theProject.setProjectPath(nwTempGUI)
assert nwGUI.newProject() assert nwGUI.newProject()
assert nwGUI.theProject.setProjectPath(projDir) assert nwGUI.theProject.setProjectPath(nwTempGUI)
itemEdit = GuiItemEditor(nwGUI, nwGUI.theProject, "31489056e0916") itemEdit = GuiItemEditor(nwGUI, nwGUI.theProject, "31489056e0916")
qtbot.addWidget(itemEdit) qtbot.addWidget(itemEdit)
@@ -211,7 +203,7 @@ def testItemEditor(qtbot, tmpdir):
qtbot.wait(stepDelay) qtbot.wait(stepDelay)
# Check the files # Check the files
projFile = path.join(projDir,"nwProject.nwx") projFile = path.join(nwTempGUI,"nwProject.nwx")
assert cmpFiles(projFile, path.join(testRef,"itemedit_nwProject.nwx"), [2]) assert cmpFiles(projFile, path.join(nwRef,"gui","3_nwProject.nwx"), [2])
# qtbot.stopForInteraction() # qtbot.stopForInteraction()
+19 -21
View File
@@ -3,7 +3,7 @@
""" """
import nw, pytest, types import nw, pytest, types
from os import path, unlink from os import path
from nwtools import * from nwtools import *
from nwdummy import DummyMain from nwdummy import DummyMain
@@ -13,42 +13,40 @@ from nw.project.project import NWProject
from nw.project.item import NWItem from nw.project.item import NWItem
from nw.enum import nwItemClass from nw.enum import nwItemClass
theConf = Config() theConf = Config()
theMain = DummyMain() theMain = DummyMain()
theMain.mainConf = theConf 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 = NWProject(theMain)
theProject.handleSeed = 42 theProject.handleSeed = 42
projFile = path.join(testProj,"nwProject.nwx")
@pytest.mark.project @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.newProject()
assert theProject.setProjectPath(testProj) assert theProject.setProjectPath(nwTempProj)
assert theProject.saveProject() assert theProject.saveProject()
assert cmpFiles(projFile, path.join(testRef,"new_nwProject.nwx"), [2]) assert cmpFiles(projFile, refFile, [2])
@pytest.mark.project @pytest.mark.project
def testProjectOpen(): def testProjectOpen(nwTempProj):
projFile = path.join(nwTempProj,"nwProject.nwx")
assert theProject.openProject(projFile) assert theProject.openProject(projFile)
@pytest.mark.project @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 theProject.saveProject()
assert cmpFiles(projFile, path.join(testRef,"new_nwProject.nwx"), [2]) assert cmpFiles(projFile, refFile, [2])
assert not theProject.projChanged assert not theProject.projChanged
@pytest.mark.project @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 theProject.openProject(projFile)
assert isinstance(theProject.newRoot("Novel", nwItemClass.NOVEL), type(None)) assert isinstance(theProject.newRoot("Novel", nwItemClass.NOVEL), type(None))
assert isinstance(theProject.newRoot("Plot", nwItemClass.PLOT), 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 isinstance(theProject.newRoot("Custom2", nwItemClass.CUSTOM), str)
assert theProject.projChanged assert theProject.projChanged
assert theProject.saveProject() assert theProject.saveProject()
assert cmpFiles(projFile, path.join(testRef,"roots_nwProject.nwx"), [2]) assert cmpFiles(projFile, refFile, [2])
assert not theProject.projChanged assert not theProject.projChanged