Source code for evergreen.tst
# -*- encoding: utf-8 -*-
"""Test representation of evergreen."""
from __future__ import absolute_import
from typing import TYPE_CHECKING, Any, Dict, Iterable
from evergreen.base import _BaseEvergreenObject, evg_attrib, evg_datetime_attrib
if TYPE_CHECKING:
from evergreen.api import EvergreenApi
[docs]class Logs(_BaseEvergreenObject):
"""Representation of test logs from evergreen."""
url = evg_attrib("url")
line_num = evg_attrib("line_num")
url_raw = evg_attrib("url_raw")
url_lobster = evg_attrib("url_lobster")
url_parsley = evg_attrib("url_parsley")
log_id = evg_attrib("log_id")
def __init__(self, json: Dict[str, Any], api: "EvergreenApi") -> None:
"""Create an instance of a Test log."""
super(Logs, self).__init__(json, api)
[docs] def stream(self) -> Iterable[str]:
"""
Retrieve an iterator of the streamed contents of this log.
:return: Iterable to stream contents of log.
"""
return self._api.stream_log(self.url_raw)
[docs]class Tst(_BaseEvergreenObject):
"""Representation of a test object from evergreen."""
task_id = evg_attrib("task_id")
status = evg_attrib("status")
test_file = evg_attrib("test_file")
exit_code = evg_attrib("exit_code")
start_time = evg_datetime_attrib("start_time")
end_time = evg_datetime_attrib("end_time")
def __init__(self, json: Dict[str, Any], api: "EvergreenApi") -> None:
"""Create an instance of a Test object."""
super(Tst, self).__init__(json, api)
@property
def logs(self) -> Logs:
"""
Get the log object for the given test.
:return: log object for test.
"""
return Logs(self.json["logs"], self._api)