MCPcopy
hub / github.com/mkdocs/mkdocs / test_run_build_error_event

Method test_run_build_error_event

mkdocs/tests/plugin_tests.py:267–328  ·  view source on GitHub ↗
(self, site_dir)

Source from the content-addressed store, hash-verified

265
266 @tempdir()
267 def test_run_build_error_event(self, site_dir):
268 build_errors = []
269
270 class PluginRaisingError(plugins.BasePlugin):
271 def __init__(self, error_on):
272 self.error_on = error_on
273
274 def on_pre_page(self, page, **kwargs):
275 if self.error_on == 'pre_page':
276 raise BuildError('pre page error')
277 return page
278
279 def on_page_markdown(self, markdown, **kwargs):
280 if self.error_on == 'page_markdown':
281 raise BuildError('page markdown error')
282 return markdown
283
284 def on_page_content(self, html, **kwargs):
285 if self.error_on == 'page_content':
286 raise PluginError('page content error')
287 return html
288
289 def on_post_page(self, html, **kwargs):
290 if self.error_on == 'post_page':
291 raise ValueError('post page error')
292
293 def on_build_error(self, error, **kwargs):
294 build_errors.append(error)
295
296 cfg = load_config(site_dir=site_dir)
297 cfg.plugins['errorplugin'] = PluginRaisingError(error_on='pre_page')
298 with self.assertLogs('mkdocs', level='ERROR'):
299 self.assertRaises(Abort, build.build, cfg)
300
301 cfg = load_config(site_dir=site_dir)
302 cfg.plugins['errorplugin'] = PluginRaisingError(error_on='page_markdown')
303 with self.assertLogs('mkdocs', level='ERROR'):
304 self.assertRaises(Abort, build.build, cfg)
305
306 cfg = load_config(site_dir=site_dir)
307 cfg.plugins['errorplugin'] = PluginRaisingError(error_on='page_content')
308 with self.assertLogs('mkdocs', level='ERROR'):
309 self.assertRaises(Abort, build.build, cfg)
310
311 cfg = load_config(site_dir=site_dir)
312 cfg.plugins['errorplugin'] = PluginRaisingError(error_on='post_page')
313 with self.assertLogs('mkdocs', level='ERROR'):
314 self.assertRaises(ValueError, build.build, cfg)
315
316 cfg = load_config(site_dir=site_dir)
317 cfg.plugins['errorplugin'] = PluginRaisingError(error_on='')
318 build.build(cfg)
319
320 self.assertEqual(len(build_errors), 4)
321 self.assertIs(build_errors[0].__class__, BuildError)
322 self.assertEqual(str(build_errors[0]), 'pre page error')
323 self.assertIs(build_errors[1].__class__, BuildError)
324 self.assertEqual(str(build_errors[1]), 'page markdown error')

Callers

nothing calls this directly

Calls 2

load_configFunction · 0.90
PluginRaisingErrorClass · 0.85

Tested by

no test coverage detected