def test_normal(self): output = StringIO() rep = reporter.JsonReporter(output) t1 = Task("t1", None) t2 = Task("t2", None) t3 = Task("t3", None) t4 = Task("t4", None) expected = {'t1':'fail', 't2':'up-to-date', 't3':'success', 't4':'ignore'} # t1 fail rep.get_status(t1) rep.execute_task(t1) rep.add_failure(t1, CatchedException('t1 failed!')) # t2 skipped rep.get_status(t2) rep.skip_uptodate(t2) # t3 success rep.get_status(t3) rep.execute_task(t3) rep.add_success(t3) # t4 ignore rep.get_status(t4) rep.skip_ignore(t4) rep.teardown_task(t4) rep.complete_run() got = json.loads(output.getvalue()) for task_result in got['tasks']: assert expected[task_result['name']] == task_result['result'], got if task_result['name'] == 't1': assert 't1 failed!' in task_result['error']
def test_ignore_stdout(self): output = StringIO() rep = reporter.JsonReporter(output) sys.stdout.write("info that doesnt belong to any task...") sys.stderr.write('something on err') t1 = Task("t1", None) expected = {'t1':'success'} rep.get_status(t1) rep.execute_task(t1) rep.add_success(t1) rep.complete_run() got = json.loads(output.getvalue()) assert expected[got['tasks'][0]['name']] == got['tasks'][0]['result'] assert "info that doesnt belong to any task..." == got['out'] assert "something on err" == got['err']
def test_runtime_error(self): output = StringIO() rep = reporter.JsonReporter(output) t1 = Task("t1", None) msg = "runtime error" assert [] == rep.errors rep.get_status(t1) rep.execute_task(t1) rep.add_success(t1) rep.runtime_error(msg) assert [msg] == rep.errors assert "" in rep.outstream.getvalue() # runtime errors abort execution rep.complete_run() got = json.loads(output.getvalue()) assert msg in got['err']
def test_cleanup_error(self, capsys): output = StringIO() rep = reporter.JsonReporter(output) t1 = Task("t1", None) msg = "cleanup error" exception = CatchedException(msg) assert [] == rep.errors rep.get_status(t1) rep.execute_task(t1) rep.add_success(t1) rep.cleanup_error(exception) assert [msg+'\n'] == rep.errors assert "" in rep.outstream.getvalue() rep.complete_run() got = json.loads(output.getvalue()) assert msg in got['err']