def test_no_such_file(self): external_process = ExternalProcessUser( "Fake", ["kitteh and doge.avi.exe"]) pipeline = Pipeline(external_process) pipeline.has_failed = None def fail_callback(task, item): pipeline.has_failed = True pipeline.on_fail_item += fail_callback runner = SimpleRunner(pipeline, max_items=1) runner.start() self.assertTrue(pipeline.has_failed) self.assertIOLoopOK()
def test_proc(self): external_process = ExternalProcessUser( "Echo", ["python", "-c", "print('hello world!')"], max_tries=4) pipeline = Pipeline(external_process) pipeline.has_failed = None def fail_callback(task, item): pipeline.has_failed = True pipeline.on_fail_item += fail_callback runner = SimpleRunner(pipeline, max_items=1) runner.start() output = external_process.output_buffer.getvalue() self.assertFalse(pipeline.has_failed) self.assertTrue('hello world!' in output) self.assertIOLoopOK()
def test_proc_utf8(self): external_process = ExternalProcessUser( "Echo", ["python", "-c", "print(u'hello world!áßðfáßðf')"], ) pipeline = Pipeline(external_process) pipeline.has_failed = None def fail_callback(task, item): pipeline.has_failed = True pipeline.on_fail_item += fail_callback runner = SimpleRunner(pipeline, max_items=1) runner.start() self.assertFalse(pipeline.has_failed) self.assertIOLoopOK()
def test_proc_stdin_error(self): external_process = ExternalProcessUser( "Echo", ["python", "-c" "print('hello world!')"], max_tries=4) external_process.stdin_data = lambda item: 123456 pipeline = Pipeline(external_process) pipeline.has_failed = None def fail_callback(task, item): pipeline.has_failed = True pipeline.on_fail_item += fail_callback runner = SimpleRunner(pipeline, max_items=1) runner.start() self.assertTrue(pipeline.has_failed) self.assertIOLoopOK() self.assertEqual(4, external_process.exit_count)
def test_proc_fail(self): for max_tries in [1, 2, 20]: external_process = ExternalProcessUser( "Quitter", ["python", "-c", "import sys;sys.exit(33)"], max_tries=max_tries) pipeline = Pipeline(external_process) pipeline.has_failed = None def fail_callback(task, item): pipeline.has_failed = True pipeline.on_fail_item += fail_callback runner = SimpleRunner(pipeline, max_items=1) runner.start() self.assertTrue(pipeline.has_failed) self.assertEqual(33, external_process.return_code) self.assertEqual(max_tries, external_process.exit_count) self.assertIOLoopOK()
def test_max_items(self): pipeline = Pipeline(PrintItem(), PrintItem()) pipeline.has_failed = None def fail_callback(task, item): pipeline.has_failed = True pipeline.on_fail_item += fail_callback runner = SimpleRunner(pipeline, max_items=3) def finish_item_callback(runner, pipeline, item): if runner.item_count > 10: raise Exception('Too many items.') runner.on_pipeline_finish_item += finish_item_callback runner.start() self.assertFalse(pipeline.has_failed) self.assertEqual(3, runner.item_count) self.assertIOLoopOK()