diff --git a/pytest.ini b/pytest.ini index 321b4ce..19b13dc 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,6 +1,7 @@ [pytest] log_cli = true -log_cli_level = INFO +log_cli_level = WARNING +log_level = WARNING testpaths = src/tests markers = network: tests that require network connectivity diff --git a/src/constants.py b/src/constants.py index 397ef3c..fa85374 100644 --- a/src/constants.py +++ b/src/constants.py @@ -21,17 +21,21 @@ try: # ----------------------------------- APP_DIR = Path.home() / ".seedpass" APP_DIR.mkdir(exist_ok=True, parents=True) # Ensure the directory exists - logging.info(f"Application directory created at {APP_DIR}") + if logger.isEnabledFor(logging.DEBUG): + logger.info(f"Application directory created at {APP_DIR}") except Exception as e: - logging.error(f"Failed to create application directory: {e}") - logging.error(traceback.format_exc()) # Log full traceback + if logger.isEnabledFor(logging.DEBUG): + logger.error(f"Failed to create application directory: {e}") + logger.error(traceback.format_exc()) # Log full traceback try: PARENT_SEED_FILE = APP_DIR / "parent_seed.enc" # Encrypted parent seed - logging.info(f"Parent seed file path set to {PARENT_SEED_FILE}") + if logger.isEnabledFor(logging.DEBUG): + logger.info(f"Parent seed file path set to {PARENT_SEED_FILE}") except Exception as e: - logging.error(f"Error setting file paths: {e}") - logging.error(traceback.format_exc()) # Log full traceback + if logger.isEnabledFor(logging.DEBUG): + logger.error(f"Error setting file paths: {e}") + logger.error(traceback.format_exc()) # Log full traceback # ----------------------------------- # Checksum Files for Integrity @@ -40,10 +44,12 @@ try: SCRIPT_CHECKSUM_FILE = ( APP_DIR / "seedpass_script_checksum.txt" ) # Checksum for main script - logging.info(f"Checksum file path set: Script {SCRIPT_CHECKSUM_FILE}") + if logger.isEnabledFor(logging.DEBUG): + logger.info(f"Checksum file path set: Script {SCRIPT_CHECKSUM_FILE}") except Exception as e: - logging.error(f"Error setting checksum file paths: {e}") - logging.error(traceback.format_exc()) # Log full traceback + if logger.isEnabledFor(logging.DEBUG): + logger.error(f"Error setting checksum file paths: {e}") + logger.error(traceback.format_exc()) # Log full traceback # ----------------------------------- # Password Generation Constants diff --git a/src/local_bip85/__init__.py b/src/local_bip85/__init__.py index 8823d1e..3765c0b 100644 --- a/src/local_bip85/__init__.py +++ b/src/local_bip85/__init__.py @@ -3,12 +3,16 @@ import logging import traceback +logger = logging.getLogger(__name__) + try: from .bip85 import BIP85 - logging.info("BIP85 module imported successfully.") + if logger.isEnabledFor(logging.DEBUG): + logger.info("BIP85 module imported successfully.") except Exception as e: - logging.error(f"Failed to import BIP85 module: {e}") - logging.error(traceback.format_exc()) # Log full traceback + if logger.isEnabledFor(logging.DEBUG): + logger.error(f"Failed to import BIP85 module: {e}") + logger.error(traceback.format_exc()) # Log full traceback __all__ = ["BIP85"] diff --git a/src/tests/conftest.py b/src/tests/conftest.py new file mode 100644 index 0000000..8e4b874 --- /dev/null +++ b/src/tests/conftest.py @@ -0,0 +1,7 @@ +import logging +import pytest + + +@pytest.fixture(autouse=True) +def mute_logging(): + logging.getLogger().setLevel(logging.WARNING) diff --git a/src/tests/test_password_prompt.py b/src/tests/test_password_prompt.py index 32c7a8f..e9d04d4 100644 --- a/src/tests/test_password_prompt.py +++ b/src/tests/test_password_prompt.py @@ -2,6 +2,7 @@ import builtins from itertools import cycle import pytest +import logging from utils import password_prompt @@ -15,10 +16,12 @@ def test_prompt_new_password(monkeypatch): assert result == "goodpass" -def test_prompt_new_password_retry(monkeypatch): +def test_prompt_new_password_retry(monkeypatch, caplog): seq = iter(["pass1", "pass2", "passgood", "passgood"]) monkeypatch.setattr(password_prompt.getpass, "getpass", lambda prompt: next(seq)) + caplog.set_level(logging.WARNING) result = password_prompt.prompt_new_password() + assert "User entered a password shorter" in caplog.text assert result == "passgood" diff --git a/src/utils/__init__.py b/src/utils/__init__.py index dbde68e..c9bbe2f 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -3,6 +3,8 @@ import logging import traceback +logger = logging.getLogger(__name__) + try: from .file_lock import exclusive_lock, shared_lock from .key_derivation import ( @@ -15,10 +17,12 @@ try: from .checksum import calculate_checksum, verify_checksum from .password_prompt import prompt_for_password - logging.info("Modules imported successfully.") + if logger.isEnabledFor(logging.DEBUG): + logger.info("Modules imported successfully.") except Exception as e: - logging.error(f"Failed to import one or more modules: {e}") - logging.error(traceback.format_exc()) # Log full traceback + if logger.isEnabledFor(logging.DEBUG): + logger.error(f"Failed to import one or more modules: {e}") + logger.error(traceback.format_exc()) # Log full traceback __all__ = [ "derive_key_from_password",