Fix flaky VirtualLayerTask test

This commit is contained in:
Nyall Dawson 2018-03-15 12:10:48 +10:00
parent feb20a7a27
commit 9e351e80fc

View File

@ -35,9 +35,12 @@ class TestQgsVirtualLayerTask(unittest.TestCase):
self.testDataDir = unitTestDataPath() self.testDataDir = unitTestDataPath()
self.success = False self.success = False
self.fail = False self.fail = False
self.ids = None
self.task = None
def onSuccess(self): def onSuccess(self):
self.success = True self.success = True
self.ids = [f.id() for f in self.task.layer().getFeatures()]
def onFail(self): def onFail(self):
self.fail = True self.fail = True
@ -49,23 +52,22 @@ class TestQgsVirtualLayerTask(unittest.TestCase):
df = QgsVirtualLayerDefinition() df = QgsVirtualLayerDefinition()
df.setQuery('select * from "françéà"') df.setQuery('select * from "françéà"')
task = QgsVirtualLayerTask(df) self.task = QgsVirtualLayerTask(df)
ids = [f.id() for f in task.layer().getFeatures()] ids = [f.id() for f in self.task.layer().getFeatures()]
self.assertEqual(len(ids), 0) self.assertEqual(len(ids), 0)
task.taskCompleted.connect(self.onSuccess) self.task.taskCompleted.connect(self.onSuccess)
task.taskTerminated.connect(self.onFail) self.task.taskTerminated.connect(self.onFail)
QgsApplication.taskManager().addTask(task) QgsApplication.taskManager().addTask(self.task)
while not self.success and not self.fail: while not self.success and not self.fail:
QCoreApplication.processEvents() QCoreApplication.processEvents()
self.assertTrue(self.success) self.assertTrue(self.success)
self.assertFalse(self.fail) self.assertFalse(self.fail)
ids = [f.id() for f in task.layer().getFeatures()] self.assertEqual(len(self.ids), 4)
self.assertEqual(len(ids), 4)
if __name__ == '__main__': if __name__ == '__main__':