Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 4 additions & 7 deletions src/cite_runner/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ class CiteRunnerContext(pydantic.BaseModel):
debug: bool = False
jinja_environment: jinja2.Environment = jinja2.Environment()
network_timeout_seconds: int = 20
rich_console: "Console"
result_console: Console
status_console: Console
settings: CiteRunnerSettings


Expand Down Expand Up @@ -72,20 +73,16 @@ def configure_logging(rich_console: Console, debug: bool) -> None:
logging.getLogger("httpx").setLevel(logging.INFO if debug else logging.WARNING)


def get_console() -> Console:
return Console()


def get_context(
debug: bool,
network_timeout_seconds: int,
) -> CiteRunnerContext:
settings = get_settings()
console = get_console()
return CiteRunnerContext(
debug=debug,
network_timeout_seconds=network_timeout_seconds,
jinja_environment=_get_jinja_environment(settings),
settings=settings,
rich_console=console,
result_console=Console(),
status_console=Console(stderr=True),
)
25 changes: 18 additions & 7 deletions src/cite_runner/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def base_callback(
debug=debug,
network_timeout_seconds=network_timeout,
)
config.configure_logging(rich_console=context.rich_console, debug=debug)
config.configure_logging(rich_console=context.status_console, debug=debug)
ctx.obj = context


Expand All @@ -81,9 +81,11 @@ def parse_test_result(
include_passed_detail: bool = False,
):
context: config.CiteRunnerContext = ctx.obj
context.status_console.print("Parsing test suite execution results...")
parsed = teamengine_runner.parse_test_suite_result(
test_suite_result.read_text(), context.settings
)
context.status_console.print(f"Serializing parsed results to {output_format}...")
serialized = teamengine_runner.serialize_suite_result(
parsed,
output_format,
Expand All @@ -96,7 +98,7 @@ def parse_test_result(
context=ctx.obj,
)
if output_format.print_pretty():
context.rich_console.print(serialized)
context.result_console.print(serialized)
else:
stdlib_print(serialized)
raise typer.Exit(_get_exit_code(parsed, exit_with_error_on_suite_failed_result))
Expand Down Expand Up @@ -153,7 +155,7 @@ def execute_test_suite_from_github_actions(
)
context: config.CiteRunnerContext = ctx.obj
if output_format.print_pretty():
context.rich_console.print(serialized)
context.result_console.print(serialized)
else:
stdlib_print(serialized)
raise typer.Exit(
Expand Down Expand Up @@ -211,7 +213,7 @@ def execute_test_suite(
if output_format == models.OutputFormat.RAW:
logger.debug("Outputting raw response, as returned by teamengine...")
if output_format.print_pretty():
context.rich_console.print(serialized)
context.result_console.print(serialized)
else:
stdlib_print(serialized)
raise typer.Exit(
Expand All @@ -234,8 +236,9 @@ def _execute_test_suite(
logger.debug(f"{locals()=}")
client = httpx.Client(timeout=context.network_timeout_seconds)
base_url = teamengine_base_url.strip("/")
context.status_console.print("Checking if teamengine is ready...")
if teamengine_runner.wait_for_teamengine_to_be_ready(client, base_url):
logger.debug(
context.status_console.print(
f"Asking teamengine to execute test suite {test_suite_identifier!r}..."
)
try:
Expand All @@ -251,15 +254,23 @@ def _execute_test_suite(
logger.exception("Unable to collect test suite execution results")
raise SystemExit(1)
else:
context.status_console.print(
"Received teamengine execution result in EARL format"
)
parsed = None
if output_format == models.OutputFormat.RAW:
logger.debug("Outputting raw response, as returned by teamengine...")
context.status_console.print(
"Outputting raw response, as returned by teamengine..."
)
serialized = raw_result
else:
logger.debug("Parsing test suite execution results...")
context.status_console.print("Parsing test suite execution results...")
parsed = teamengine_runner.parse_test_suite_result(
raw_result, context.settings
)
context.status_console.print(
f"Serializing parsed results to {output_format}..."
)
serialized = teamengine_runner.serialize_suite_result(
parsed,
output_format,
Expand Down