diff --git a/supervisor/api/host.py b/supervisor/api/host.py index 973474cd2..323a2c403 100644 --- a/supervisor/api/host.py +++ b/supervisor/api/host.py @@ -252,6 +252,9 @@ class APIHost(CoreSysAttributes): if "verbose" in request.query or request.headers[ACCEPT] == CONTENT_TYPE_X_LOG: log_formatter = LogFormatter.VERBOSE + if "no_colors" in request.query: + no_colors = True + if "lines" in request.query: lines = request.query.get("lines", DEFAULT_LINES) try: diff --git a/tests/api/conftest.py b/tests/api/conftest.py index e8bc980cb..83e2b6d14 100644 --- a/tests/api/conftest.py +++ b/tests/api/conftest.py @@ -32,8 +32,24 @@ async def _common_test_api_advanced_logs( range_header=DEFAULT_LOG_RANGE, accept=LogFormat.JOURNAL, ) + journal_logs_reader.assert_called_with(ANY, LogFormatter.PLAIN, False) journald_logs.reset_mock() + journal_logs_reader.reset_mock() + + resp = await api_client.get(f"{path_prefix}/logs?no_colors") + assert resp.status == 200 + assert resp.content_type == "text/plain" + + journald_logs.assert_called_once_with( + params={"SYSLOG_IDENTIFIER": syslog_identifier}, + range_header=DEFAULT_LOG_RANGE, + accept=LogFormat.JOURNAL, + ) + journal_logs_reader.assert_called_with(ANY, LogFormatter.PLAIN, True) + + journald_logs.reset_mock() + journal_logs_reader.reset_mock() resp = await api_client.get(f"{path_prefix}/logs/follow") assert resp.status == 200 diff --git a/tests/api/test_host.py b/tests/api/test_host.py index 859dd3b5b..a3a38b5e2 100644 --- a/tests/api/test_host.py +++ b/tests/api/test_host.py @@ -292,6 +292,18 @@ async def test_advaced_logs_query_parameters( ) journal_logs_reader.assert_called_with(ANY, LogFormatter.VERBOSE, False) + journal_logs_reader.reset_mock() + journald_logs.reset_mock() + + # Check no_colors query parameter + await api_client.get("/host/logs?no_colors") + journald_logs.assert_called_once_with( + params={"SYSLOG_IDENTIFIER": coresys.host.logs.default_identifiers}, + range_header=DEFAULT_RANGE, + accept=LogFormat.JOURNAL, + ) + journal_logs_reader.assert_called_with(ANY, LogFormatter.VERBOSE, True) + async def test_advanced_logs_boot_id_offset( api_client: TestClient, coresys: CoreSys, journald_logs: MagicMock