|
1 | 1 | import logging
|
| 2 | +import os |
2 | 3 | import unittest
|
3 | 4 | from contextlib import redirect_stdout
|
4 | 5 | from io import StringIO
|
5 | 6 | from pathlib import Path
|
6 | 7 | from tempfile import TemporaryDirectory
|
| 8 | +from unittest import mock |
7 | 9 |
|
8 | 10 | from kagglehub.logger import (
|
9 | 11 | _CONSOLE_BLOCK_KEY,
|
10 | 12 | EXTRA_CONSOLE_BLOCK,
|
11 | 13 | EXTRA_FILE_BLOCK,
|
| 14 | + KAGGLE_LOGGING_ENABLED_ENV_VAR_NAME, |
| 15 | + KAGGLE_LOGGING_ROOT_DIR_ENV_VAR_NAME, |
12 | 16 | _block_logrecord_factory,
|
13 | 17 | _configure_logger,
|
14 | 18 | )
|
@@ -64,14 +68,54 @@ def test_kagglehub_child_console_filter_discards_logrecord(self) -> None:
|
64 | 68 |
|
65 | 69 | def test_kagglehub_file_filter(self) -> None:
|
66 | 70 | with TemporaryDirectory() as f:
|
67 |
| - log_path = Path(f) / "testasdfasf-log" |
68 |
| - _configure_logger(log_path) |
69 |
| - logger = logging.getLogger("kagglehub") |
70 |
| - logger.info("HIDE", extra={**EXTRA_FILE_BLOCK}) |
71 |
| - logger.info("SHOW") |
72 |
| - text = (log_path / "kagglehub.log").read_text() |
73 |
| - self.assertRegex(text, "^.*SHOW.*$") |
74 |
| - self.assertRegex(text, "^(?!.*HIDE).*$") |
| 71 | + with mock.patch.dict(os.environ, {KAGGLE_LOGGING_ENABLED_ENV_VAR_NAME: str(True)}): |
| 72 | + log_path = Path(f) / "testasdfasf-log" |
| 73 | + _configure_logger(log_path) |
| 74 | + logger = logging.getLogger("kagglehub") |
| 75 | + logger.info("HIDE", extra={**EXTRA_FILE_BLOCK}) |
| 76 | + logger.info("SHOW") |
| 77 | + text = (log_path / "kagglehub.log").read_text() |
| 78 | + self.assertRegex(text, "^.*SHOW.*$") |
| 79 | + self.assertRegex(text, "^(?!.*HIDE).*$") |
| 80 | + |
| 81 | + def test_log_env_variable_and_enabled(self) -> None: |
| 82 | + with TemporaryDirectory() as d: |
| 83 | + root_log_dir = Path(d) / "log" |
| 84 | + with mock.patch.dict( |
| 85 | + os.environ, |
| 86 | + { |
| 87 | + KAGGLE_LOGGING_ROOT_DIR_ENV_VAR_NAME: str(root_log_dir), |
| 88 | + KAGGLE_LOGGING_ENABLED_ENV_VAR_NAME: str(True), |
| 89 | + }, |
| 90 | + ): |
| 91 | + _configure_logger() |
| 92 | + logger = logging.getLogger("kagglehub") |
| 93 | + logger.info("goose") |
| 94 | + self.assertTrue((Path(root_log_dir) / ".kaggle/logs/kagglehub.log").exists(), "log file expected") |
| 95 | + |
| 96 | + def test_log_disabled(self) -> None: |
| 97 | + with TemporaryDirectory() as d: |
| 98 | + log_dir = Path(d) / "log" |
| 99 | + with mock.patch.dict( |
| 100 | + os.environ, |
| 101 | + {KAGGLE_LOGGING_ENABLED_ENV_VAR_NAME: str(False)}, |
| 102 | + ): |
| 103 | + _configure_logger(log_dir) |
| 104 | + logger = logging.getLogger("kagglehub") |
| 105 | + logger.info("goose") |
| 106 | + self.assertFalse((log_dir / "kagglehub.log").exists(), "no log file expected") |
| 107 | + |
| 108 | + def test_log_enabled(self) -> None: |
| 109 | + with TemporaryDirectory() as d: |
| 110 | + log_dir = Path(d) / "log" |
| 111 | + with mock.patch.dict( |
| 112 | + os.environ, |
| 113 | + {KAGGLE_LOGGING_ENABLED_ENV_VAR_NAME: str(True)}, |
| 114 | + ): |
| 115 | + _configure_logger(log_dir) |
| 116 | + logger = logging.getLogger("kagglehub") |
| 117 | + logger.info("goose") |
| 118 | + self.assertTrue((log_dir / "kagglehub.log").exists(), "log file expected") |
75 | 119 |
|
76 | 120 |
|
77 | 121 | if __name__ == "__main__":
|
|
0 commit comments