diff options
| author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2021-10-31 15:51:14 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-31 15:51:14 +0900 |
| commit | 4475dab99e9eaa4677bbba464aef3dc607f9dd1b (patch) | |
| tree | 403cae71e315d42c79608724a0bc5b2f1e184493 | |
| parent | cda266333e8ec61a08b9a4b9329d089a2124cd42 (diff) | |
| parent | e38456d4e14ffa28c7444198959410a84bfcd10f (diff) | |
| download | sphinx-git-4475dab99e9eaa4677bbba464aef3dc607f9dd1b.tar.gz | |
Merge pull request #9656 from sdhiscocks/suppress_warning_subtype_none
Fix issue with warnings without subtype being incorrectly suppressed
| -rw-r--r-- | sphinx/util/logging.py | 3 | ||||
| -rw-r--r-- | tests/test_util_logging.py | 13 |
2 files changed, 12 insertions, 4 deletions
diff --git a/sphinx/util/logging.py b/sphinx/util/logging.py index d4d843e58..337c87b92 100644 --- a/sphinx/util/logging.py +++ b/sphinx/util/logging.py @@ -369,7 +369,8 @@ def is_suppressed_warning(type: str, subtype: str, suppress_warnings: List[str]) target, subtarget = warning_type, None if target == type: - if (subtype is None or subtarget is None or + if (subtype is None and subtarget is None + or subtarget is None or subtarget == subtype or subtarget == '*'): return True diff --git a/tests/test_util_logging.py b/tests/test_util_logging.py index a03f62b01..5abcd02ef 100644 --- a/tests/test_util_logging.py +++ b/tests/test_util_logging.py @@ -131,6 +131,7 @@ def test_is_suppressed_warning(): assert is_suppressed_warning("ref", "option", suppress_warnings) is True assert is_suppressed_warning("files", "image", suppress_warnings) is True assert is_suppressed_warning("files", "stylesheet", suppress_warnings) is True + assert is_suppressed_warning("rest", None, suppress_warnings) is False assert is_suppressed_warning("rest", "syntax", suppress_warnings) is False assert is_suppressed_warning("rest", "duplicated_labels", suppress_warnings) is True @@ -143,33 +144,39 @@ def test_suppress_warnings(app, status, warning): app.config.suppress_warnings = [] warning.truncate(0) + logger.warning('message0', type='test') logger.warning('message1', type='test', subtype='logging') logger.warning('message2', type='test', subtype='crash') logger.warning('message3', type='actual', subtype='logging') + assert 'message0' in warning.getvalue() assert 'message1' in warning.getvalue() assert 'message2' in warning.getvalue() assert 'message3' in warning.getvalue() - assert app._warncount == 3 + assert app._warncount == 4 app.config.suppress_warnings = ['test'] warning.truncate(0) + logger.warning('message0', type='test') logger.warning('message1', type='test', subtype='logging') logger.warning('message2', type='test', subtype='crash') logger.warning('message3', type='actual', subtype='logging') + assert 'message0' not in warning.getvalue() assert 'message1' not in warning.getvalue() assert 'message2' not in warning.getvalue() assert 'message3' in warning.getvalue() - assert app._warncount == 4 + assert app._warncount == 5 app.config.suppress_warnings = ['test.logging'] warning.truncate(0) + logger.warning('message0', type='test') logger.warning('message1', type='test', subtype='logging') logger.warning('message2', type='test', subtype='crash') logger.warning('message3', type='actual', subtype='logging') + assert 'message0' in warning.getvalue() assert 'message1' not in warning.getvalue() assert 'message2' in warning.getvalue() assert 'message3' in warning.getvalue() - assert app._warncount == 6 + assert app._warncount == 8 def test_warningiserror(app, status, warning): |
