Skip to content

Commit 4475dab

Browse files
authored
Merge pull request #9656 from sdhiscocks/suppress_warning_subtype_none
Fix issue with warnings without subtype being incorrectly suppressed
2 parents cda2663 + e38456d commit 4475dab

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

sphinx/util/logging.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,8 @@ def is_suppressed_warning(type: str, subtype: str, suppress_warnings: List[str])
369369
target, subtarget = warning_type, None
370370

371371
if target == type:
372-
if (subtype is None or subtarget is None or
372+
if (subtype is None and subtarget is None
373+
or subtarget is None or
373374
subtarget == subtype or subtarget == '*'):
374375
return True
375376

tests/test_util_logging.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ def test_is_suppressed_warning():
131131
assert is_suppressed_warning("ref", "option", suppress_warnings) is True
132132
assert is_suppressed_warning("files", "image", suppress_warnings) is True
133133
assert is_suppressed_warning("files", "stylesheet", suppress_warnings) is True
134+
assert is_suppressed_warning("rest", None, suppress_warnings) is False
134135
assert is_suppressed_warning("rest", "syntax", suppress_warnings) is False
135136
assert is_suppressed_warning("rest", "duplicated_labels", suppress_warnings) is True
136137

@@ -143,33 +144,39 @@ def test_suppress_warnings(app, status, warning):
143144

144145
app.config.suppress_warnings = []
145146
warning.truncate(0)
147+
logger.warning('message0', type='test')
146148
logger.warning('message1', type='test', subtype='logging')
147149
logger.warning('message2', type='test', subtype='crash')
148150
logger.warning('message3', type='actual', subtype='logging')
151+
assert 'message0' in warning.getvalue()
149152
assert 'message1' in warning.getvalue()
150153
assert 'message2' in warning.getvalue()
151154
assert 'message3' in warning.getvalue()
152-
assert app._warncount == 3
155+
assert app._warncount == 4
153156

154157
app.config.suppress_warnings = ['test']
155158
warning.truncate(0)
159+
logger.warning('message0', type='test')
156160
logger.warning('message1', type='test', subtype='logging')
157161
logger.warning('message2', type='test', subtype='crash')
158162
logger.warning('message3', type='actual', subtype='logging')
163+
assert 'message0' not in warning.getvalue()
159164
assert 'message1' not in warning.getvalue()
160165
assert 'message2' not in warning.getvalue()
161166
assert 'message3' in warning.getvalue()
162-
assert app._warncount == 4
167+
assert app._warncount == 5
163168

164169
app.config.suppress_warnings = ['test.logging']
165170
warning.truncate(0)
171+
logger.warning('message0', type='test')
166172
logger.warning('message1', type='test', subtype='logging')
167173
logger.warning('message2', type='test', subtype='crash')
168174
logger.warning('message3', type='actual', subtype='logging')
175+
assert 'message0' in warning.getvalue()
169176
assert 'message1' not in warning.getvalue()
170177
assert 'message2' in warning.getvalue()
171178
assert 'message3' in warning.getvalue()
172-
assert app._warncount == 6
179+
assert app._warncount == 8
173180

174181

175182
def test_warningiserror(app, status, warning):

0 commit comments

Comments
 (0)