def testTaskJson(self): """ Test that you can convert a Task to json and back. """ class DummyTask(Task): pass Task.register("dummy", DummyTask) dummyTask = Task.create('dummy') crawlers = FsCrawler.createFromPath( BaseTestCase.dataTestsDirectory()).glob(['mov']) targetPaths = [] for crawler in crawlers: target = '{}_target.mov'.format(crawler.var('name')) targetPath = os.path.join(BaseTestCase.dataTestsDirectory(), target) targetPaths.append(targetPath) dummyTask.add(crawler, targetPath) jsonResult = dummyTask.toJson() resultTask = Task.createFromJson(jsonResult) self.assertCountEqual(dummyTask.optionNames(), resultTask.optionNames()) self.assertCountEqual(dummyTask.metadataNames(), resultTask.metadataNames()) self.assertCountEqual( map(lambda x: x.var('filePath'), dummyTask.crawlers()), map(lambda x: x.var('filePath'), resultTask.crawlers())) self.assertCountEqual(map(dummyTask.target, dummyTask.crawlers()), map(resultTask.target, resultTask.crawlers()))
def testTaskOutput(self): """ Test that task output is returned properly. """ class DummyTask(Task): pass Task.register("dummy", DummyTask) dummyTask = Task.create('dummy') crawlers = FsCrawler.createFromPath( BaseTestCase.dataTestsDirectory()).glob(['mov']) targetPaths = [] for crawler in crawlers: target = '{}_target.mov'.format(crawler.var('name')) targetPath = os.path.join(BaseTestCase.dataTestsDirectory(), target) targetPaths.append(targetPath) crawler.setVar('contextVarTest', 1, True) dummyTask.add(crawler, targetPath) result = dummyTask.output() self.assertEqual(len(result), len(crawlers)) self.assertCountEqual(map(lambda x: x.var('filePath'), result), targetPaths) self.assertEqual(list(map(lambda x: x.var('contextVarTest'), result)), [1] * len(crawlers)) for crawler in result: self.assertIn('contextVarTest', crawler.contextVarNames())
def testTaskRegistration(self): """ Test that you can register a new Task. """ class DummyTask(Task): pass Task.register("dummy", DummyTask) self.assertIn("dummy", Task.registeredNames()) self.assertRaises(TaskTypeNotFoundError, Task.create, 'badTask')
from kombi.Task import Task class EchoTask(Task): """ Dummy task used to check the output. """ Task.register('echoTask', EchoTask)
import sys from kombi.Task import Task class PythonMajorVerTestTask(Task): """ Dummy task for testing python 2 subprocess. """ def _perform(self): sourceCrawler = self.crawlers()[0] sourceCrawler.setVar("majorVer", sys.version_info[0]) return [sourceCrawler.clone()] Task.register('pythonMajorVerTestTask', PythonMajorVerTestTask)
from kombi.Task import Task from kombi.TaskWrapper import TaskWrapper class PythonTestTask(Task): """ Dummy task for testing Python subprocess. """ def _perform(self): sourceCrawler = self.crawlers()[0] if self.option('runPython'): dummyTask = Task.create('pythonTestTask') dummyTask.setOption("runPython", False) dummyTask.add(sourceCrawler) wrapper = TaskWrapper.create('python') result = wrapper.run(dummyTask) else: import OpenImageIO sourceCrawler.setVar("testPython", OpenImageIO.VERSION) result = [sourceCrawler.clone()] return result Task.register('pythonTestTask', PythonTestTask)
from kombi.Task import Task class VendorData(Task): """ Implements a task that writes a json file. """ def _perform(self): """ Implement the execution of the task. """ crawler = self.crawlers()[0] targetFilePath = self.target(crawler) data = { "vendorVersion": crawler.var('vendorVersion'), "plateName": crawler.var('plateName') } with open(targetFilePath, 'w') as f: json.dump(data, f) return super(VendorData, self)._perform() # registering task Task.register( 'vendorData', VendorData )