GUI tests working locally when headless.
This commit is contained in:
+4
-3
@@ -1,4 +1,6 @@
|
|||||||
dist: xenial
|
dist: xenial
|
||||||
|
# services:
|
||||||
|
# - xvfb
|
||||||
language: python
|
language: python
|
||||||
sudo: required
|
sudo: required
|
||||||
addons:
|
addons:
|
||||||
@@ -6,16 +8,15 @@ addons:
|
|||||||
packages:
|
packages:
|
||||||
- libenchant-dev
|
- libenchant-dev
|
||||||
python:
|
python:
|
||||||
# - "3.5"
|
|
||||||
# - "3.6"
|
|
||||||
- "3.7"
|
- "3.7"
|
||||||
# - "3.8-dev"
|
|
||||||
install:
|
install:
|
||||||
- pip install -r requirements.txt
|
- pip install -r requirements.txt
|
||||||
|
# - pip install pytest-faulthandler
|
||||||
- pip install pytest-cov
|
- pip install pytest-cov
|
||||||
# - pip install pytest-qt
|
# - pip install pytest-qt
|
||||||
- pip install codecov
|
- pip install codecov
|
||||||
script:
|
script:
|
||||||
|
# - xvfb-run -a python -m pytest --cov=nw -m "project|core|gui" -v -s
|
||||||
- python -m pytest --cov=nw -m "project|core" -v
|
- python -m pytest --cov=nw -m "project|core" -v
|
||||||
after_success:
|
after_success:
|
||||||
- codecov
|
- codecov
|
||||||
|
|||||||
+10
-9
@@ -282,15 +282,16 @@ class GuiDocTree(QTreeWidget):
|
|||||||
|
|
||||||
def propagateCount(self, tHandle, theCount, nDepth=0):
|
def propagateCount(self, tHandle, theCount, nDepth=0):
|
||||||
tItem = self._getTreeItem(tHandle)
|
tItem = self._getTreeItem(tHandle)
|
||||||
tItem.setText(self.C_COUNT,str(theCount))
|
if tItem is not None:
|
||||||
pItem = tItem.parent()
|
tItem.setText(self.C_COUNT,str(theCount))
|
||||||
if pItem is not None:
|
pItem = tItem.parent()
|
||||||
pCount = 0
|
if pItem is not None:
|
||||||
for i in range(pItem.childCount()):
|
pCount = 0
|
||||||
pCount += int(pItem.child(i).text(self.C_COUNT))
|
for i in range(pItem.childCount()):
|
||||||
pHandle = pItem.text(self.C_HANDLE)
|
pCount += int(pItem.child(i).text(self.C_COUNT))
|
||||||
if not nDepth > 200 and pHandle != "":
|
pHandle = pItem.text(self.C_HANDLE)
|
||||||
self.propagateCount(pHandle, pCount, nDepth+1)
|
if not nDepth > 200 and pHandle != "":
|
||||||
|
self.propagateCount(pHandle, pCount, nDepth+1)
|
||||||
return
|
return
|
||||||
|
|
||||||
def buildTree(self):
|
def buildTree(self):
|
||||||
|
|||||||
+5
-4
@@ -207,7 +207,7 @@ class GuiMain(QMainWindow):
|
|||||||
self.stackPane.setCurrentIndex(self.stackDoc)
|
self.stackPane.setCurrentIndex(self.stackDoc)
|
||||||
self.docEditor.setText(self.theDocument.openDocument(tHandle))
|
self.docEditor.setText(self.theDocument.openDocument(tHandle))
|
||||||
self.docEditor.changeWidth()
|
self.docEditor.changeWidth()
|
||||||
return
|
return True
|
||||||
|
|
||||||
def saveDocument(self):
|
def saveDocument(self):
|
||||||
if self.theDocument.theItem is not None:
|
if self.theDocument.theItem is not None:
|
||||||
@@ -217,7 +217,7 @@ class GuiMain(QMainWindow):
|
|||||||
self.theDocument.theItem.setParaCount(self.docEditor.paraCount)
|
self.theDocument.theItem.setParaCount(self.docEditor.paraCount)
|
||||||
self.theDocument.saveDocument(docHtml)
|
self.theDocument.saveDocument(docHtml)
|
||||||
self.docEditor.setDocumentChanged(False)
|
self.docEditor.setDocumentChanged(False)
|
||||||
return
|
return True
|
||||||
|
|
||||||
def _previewDocument(self):
|
def _previewDocument(self):
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ class GuiMain(QMainWindow):
|
|||||||
tHandle = self.treeView.getSelectedHandle()
|
tHandle = self.treeView.getSelectedHandle()
|
||||||
if tHandle is None:
|
if tHandle is None:
|
||||||
logger.warning("No item selected")
|
logger.warning("No item selected")
|
||||||
return
|
return False
|
||||||
|
|
||||||
logger.verbose("Opening item %s" % tHandle)
|
logger.verbose("Opening item %s" % tHandle)
|
||||||
nwItem = self.theProject.getItem(tHandle)
|
nwItem = self.theProject.getItem(tHandle)
|
||||||
@@ -255,7 +255,8 @@ class GuiMain(QMainWindow):
|
|||||||
self.openDocument(tHandle)
|
self.openDocument(tHandle)
|
||||||
else:
|
else:
|
||||||
logger.verbose("Requested item %s is not a file" % tHandle)
|
logger.verbose("Requested item %s is not a file" % tHandle)
|
||||||
return
|
|
||||||
|
return True
|
||||||
|
|
||||||
def editItem(self):
|
def editItem(self):
|
||||||
tHandle = self.treeView.getSelectedHandle()
|
tHandle = self.treeView.getSelectedHandle()
|
||||||
|
|||||||
+34
-16
@@ -7,9 +7,10 @@ from nwtools import *
|
|||||||
from os import path, unlink
|
from os import path, unlink
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
|
|
||||||
keyDelay = 10
|
keyDelay = 10
|
||||||
testDir = path.dirname(__file__)
|
stepDelay = 100
|
||||||
testRef = path.join(testDir,"reference")
|
testDir = path.dirname(__file__)
|
||||||
|
testRef = path.join(testDir,"reference")
|
||||||
|
|
||||||
@pytest.mark.gui
|
@pytest.mark.gui
|
||||||
def testMainWindows(qtbot, tmpdir):
|
def testMainWindows(qtbot, tmpdir):
|
||||||
@@ -19,22 +20,35 @@ def testMainWindows(qtbot, tmpdir):
|
|||||||
qtbot.addWidget(nwGUI)
|
qtbot.addWidget(nwGUI)
|
||||||
nwGUI.show()
|
nwGUI.show()
|
||||||
qtbot.waitForWindowShown(nwGUI)
|
qtbot.waitForWindowShown(nwGUI)
|
||||||
qtbot.wait(500)
|
qtbot.wait(stepDelay)
|
||||||
|
|
||||||
|
# Create new, save, open project
|
||||||
nwGUI.theProject.handleSeed = 42
|
nwGUI.theProject.handleSeed = 42
|
||||||
assert nwGUI.theProject.setProjectPath(projDir)
|
assert nwGUI.theProject.setProjectPath(projDir)
|
||||||
assert nwGUI.newProject()
|
assert nwGUI.newProject()
|
||||||
assert nwGUI.theProject.setProjectPath(projDir)
|
assert nwGUI.theProject.setProjectPath(projDir)
|
||||||
assert nwGUI.saveProject()
|
assert nwGUI.saveProject()
|
||||||
qtbot.wait(500)
|
qtbot.wait(stepDelay)
|
||||||
assert nwGUI.openProject(projDir)
|
assert nwGUI.openProject(projDir)
|
||||||
qtbot.keyClick(nwGUI.treeView, Qt.Key_1, modifier=Qt.ControlModifier, delay=keyDelay)
|
qtbot.wait(stepDelay)
|
||||||
qtbot.keyClick(nwGUI.treeView, Qt.Key_Down, delay=keyDelay)
|
|
||||||
qtbot.keyClick(nwGUI.treeView, Qt.Key_Right, delay=keyDelay)
|
# Check that tree items have been created
|
||||||
qtbot.keyClick(nwGUI.treeView, Qt.Key_Down, delay=keyDelay)
|
assert nwGUI.treeView._getTreeItem("73475cb40a568") is not None
|
||||||
qtbot.keyClick(nwGUI.treeView, Qt.Key_Right, delay=keyDelay)
|
assert nwGUI.treeView._getTreeItem("25fc0e7096fc6") is not None
|
||||||
qtbot.keyClick(nwGUI.treeView, Qt.Key_Down, delay=keyDelay)
|
assert nwGUI.treeView._getTreeItem("31489056e0916") is not None
|
||||||
qtbot.keyClick(nwGUI.treeView, Qt.Key_Return, delay=keyDelay)
|
assert nwGUI.treeView._getTreeItem("44cb730c42048") is not None
|
||||||
qtbot.keyClick(nwGUI.treeView, Qt.Key_2, modifier=Qt.ControlModifier, delay=keyDelay)
|
assert nwGUI.treeView._getTreeItem("71ee45a3c0db9") is not None
|
||||||
|
assert nwGUI.treeView._getTreeItem("811786ad1ae74") is not None
|
||||||
|
|
||||||
|
# Select the 'New Scene' file
|
||||||
|
nwGUI.treeView.setFocus()
|
||||||
|
nwGUI.treeView._getTreeItem("73475cb40a568").setExpanded(True)
|
||||||
|
nwGUI.treeView._getTreeItem("25fc0e7096fc6").setExpanded(True)
|
||||||
|
nwGUI.treeView._getTreeItem("31489056e0916").setSelected(True)
|
||||||
|
assert nwGUI.openSelectedItem()
|
||||||
|
|
||||||
|
# Type something into the document
|
||||||
|
nwGUI.docEditor.setFocus()
|
||||||
for c in "# Hello World!":
|
for c in "# Hello World!":
|
||||||
qtbot.keyClick(nwGUI.docEditor, c, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, c, delay=keyDelay)
|
||||||
qtbot.keyClick(nwGUI.docEditor, Qt.Key_Return, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, Qt.Key_Return, delay=keyDelay)
|
||||||
@@ -51,10 +65,14 @@ def testMainWindows(qtbot, tmpdir):
|
|||||||
qtbot.keyClick(nwGUI.docEditor, c, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, c, delay=keyDelay)
|
||||||
for c in "Ellipsis? Not a problem either ... ":
|
for c in "Ellipsis? Not a problem either ... ":
|
||||||
qtbot.keyClick(nwGUI.docEditor, c, delay=keyDelay)
|
qtbot.keyClick(nwGUI.docEditor, c, delay=keyDelay)
|
||||||
qtbot.wait(500)
|
qtbot.wait(stepDelay)
|
||||||
qtbot.keyClick(nwGUI, "s", modifier=Qt.ControlModifier, delay=keyDelay)
|
|
||||||
qtbot.wait(500)
|
|
||||||
|
|
||||||
|
# Save the document
|
||||||
|
assert nwGUI.docEditor.docChanged
|
||||||
|
assert nwGUI.saveDocument()
|
||||||
|
qtbot.wait(stepDelay)
|
||||||
|
|
||||||
|
# Check the files
|
||||||
projFile = projDir.join("nwProject.nwx")
|
projFile = projDir.join("nwProject.nwx")
|
||||||
assert cmpFiles(projFile, path.join(testRef,"gui_nwProject.nwx"), [2])
|
assert cmpFiles(projFile, path.join(testRef,"gui_nwProject.nwx"), [2])
|
||||||
sceneFile = projDir.join("data_3","1489056e0916_main.nwd")
|
sceneFile = projDir.join("data_3","1489056e0916_main.nwd")
|
||||||
|
|||||||
Reference in New Issue
Block a user