(self, site_dir)
| 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') |
nothing calls this directly
no test coverage detected