From 0efca3cadbad5517a59884576ddb90cfe7ac30f8 Mon Sep 17 00:00:00 2001 From: Diego Russo Date: Mon, 30 May 2022 13:34:14 +0100 Subject: Add MLIA codebase Add MLIA codebase including sources and tests. Change-Id: Id41707559bd721edd114793618d12ccd188d8dbd --- tests/mlia/test_cli_logging.py | 104 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 tests/mlia/test_cli_logging.py (limited to 'tests/mlia/test_cli_logging.py') diff --git a/tests/mlia/test_cli_logging.py b/tests/mlia/test_cli_logging.py new file mode 100644 index 0000000..7c5f299 --- /dev/null +++ b/tests/mlia/test_cli_logging.py @@ -0,0 +1,104 @@ +# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates. +# SPDX-License-Identifier: Apache-2.0 +"""Tests for the module cli.logging.""" +import logging +from pathlib import Path +from typing import Optional + +import pytest + +from mlia.cli.logging import setup_logging +from tests.mlia.utils.logging import clear_loggers + + +def teardown_function() -> None: + """Perform action after test completion. + + This function is launched automatically by pytest after each test + in this module. + """ + clear_loggers() + + +@pytest.mark.parametrize( + "logs_dir, verbose, expected_output, expected_log_file_content", + [ + ( + None, + None, + "cli info\n", + None, + ), + ( + None, + True, + """mlia.tools.aiet_wrapper - aiet debug +cli info +mlia.cli - cli debug +""", + None, + ), + ( + "logs", + True, + """mlia.tools.aiet_wrapper - aiet debug +cli info +mlia.cli - cli debug +""", + """mlia.tools.aiet_wrapper - DEBUG - aiet debug +mlia.cli - DEBUG - cli debug +""", + ), + ], +) +def test_setup_logging( + tmp_path: Path, + capfd: pytest.CaptureFixture, + logs_dir: str, + verbose: bool, + expected_output: str, + expected_log_file_content: str, +) -> None: + """Test function setup_logging.""" + logs_dir_path = tmp_path / logs_dir if logs_dir else None + + setup_logging(logs_dir_path, verbose) + + aiet_logger = logging.getLogger("mlia.tools.aiet_wrapper") + aiet_logger.debug("aiet debug") + + cli_logger = logging.getLogger("mlia.cli") + cli_logger.info("cli info") + cli_logger.debug("cli debug") + + stdout, _ = capfd.readouterr() + assert stdout == expected_output + + check_log_assertions(logs_dir_path, expected_log_file_content) + + +def check_log_assertions( + logs_dir_path: Optional[Path], expected_log_file_content: str +) -> None: + """Test assertions for log file.""" + if logs_dir_path is not None: + assert logs_dir_path.is_dir() + + items = list(logs_dir_path.iterdir()) + assert len(items) == 1 + + log_file_path = items[0] + assert log_file_path.is_file() + + log_file_name = log_file_path.name + assert log_file_name == "mlia.log" + + with open(log_file_path, encoding="utf-8") as log_file: + log_content = log_file.read() + + expected_lines = expected_log_file_content.split("\n") + produced_lines = log_content.split("\n") + + assert len(expected_lines) == len(produced_lines) + for expected, produced in zip(expected_lines, produced_lines): + assert expected in produced -- cgit v1.2.1