|
1 | 1 | import pytask |
2 | 2 | import json |
3 | 3 | import requests |
| 4 | +from contextlib import redirect_stdout |
| 5 | +import io |
4 | 6 |
|
5 | 7 | @pytask.hookimpl(tryfirst=True) |
6 | | -def pytask_collect_log(session: pytask.Session, reports: list[pytask.CollectionReport], tasks: list[pytask.Task]) -> None: |
| 8 | +def pytask_collect_log(session: pytask.Session, reports: list[pytask.CollectionReport], tasks: list[pytask.PTask]) -> None: |
7 | 9 | try: |
8 | 10 | if session.config['command'] == 'collect': |
9 | | - result = [{'name' : task.short_name, 'path' : str(task.path)} for task in tasks] |
10 | | - res = requests.post('http://localhost:6000/pytask', json={"exitcode" : session.exit_code, "tasks": result}, timeout=0.1) |
| 11 | + result = [{'name' : task.name.split('/')[-1], 'path' : str(task.path)} if isinstance(task,pytask.PTaskWithPath) else {'name' : task.name, 'path' : ''} for task in tasks] |
| 12 | + res = requests.post('http://localhost:6000/pytask', json={"exitcode" : session.exit_code, "tasks": result}, timeout=0.0001) |
| 13 | + except requests.exceptions.ReadTimeout: |
| 14 | + pass |
11 | 15 | except Exception as e: |
12 | 16 | pass |
13 | 17 |
|
14 | 18 |
|
15 | 19 | @pytask.hookimpl(tryfirst=True) |
16 | 20 | def pytask_execute_task_log_end(session: pytask.Session, report: pytask.ExecutionReport) -> None: |
17 | 21 |
|
18 | | - try: |
19 | | - result = {'type': 'task', 'name' : report.task.short_name, 'outcome' : str(report.outcome)} |
20 | | - res = requests.post('http://localhost:6000/pytask', json=result) |
| 22 | + try: |
| 23 | + if report.outcome == pytask.TaskOutcome.FAIL: |
| 24 | + with pytask.console.capture() as capture: |
| 25 | + pytask.console.print(pytask.render_exc_info(report.exc_info[0], report.exc_info[1], report.exc_info[2])) |
| 26 | + s = capture.get() |
| 27 | + result = {'type': 'task', 'name' : report.task.name.split('/')[-1], 'outcome' : str(report.outcome), 'exc_info' : s} |
| 28 | + else: |
| 29 | + result = {'type': 'task', 'name' : report.task.name.split('/')[-1], 'outcome' : str(report.outcome)} |
| 30 | + res = requests.post('http://localhost:6000/pytask', json=result, timeout=0.00001) |
| 31 | + except requests.exceptions.ReadTimeout: |
| 32 | + pass |
21 | 33 | except Exception as e: |
22 | 34 | pass |
0 commit comments