MCPcopy
hub / github.com/sphinx-doc/sphinx / test_doc

Method test_doc

sphinx/ext/doctest.py:428–518  ·  view source on GitHub ↗
(self, docname: str, doctree: Node)

Source from the content-addressed store, hash-verified

426 return should_skip
427
428 def test_doc(self, docname: str, doctree: Node) -> bool:
429 groups: dict[str, TestGroup] = {}
430 add_to_all_groups = []
431 self.setup_runner = SphinxDocTestRunner(verbose=False, optionflags=self.opt)
432 self.test_runner = SphinxDocTestRunner(verbose=False, optionflags=self.opt)
433 self.cleanup_runner = SphinxDocTestRunner(verbose=False, optionflags=self.opt)
434
435 self.test_runner._fakeout = self.setup_runner._fakeout # type: ignore[attr-defined]
436 self.cleanup_runner._fakeout = self.setup_runner._fakeout # type: ignore[attr-defined]
437
438 if self.config.doctest_test_doctest_blocks:
439 condition = _condition_with_doctest
440 else:
441 condition = _condition_default
442 for node in doctree.findall(condition):
443 if self.skipped(node): # type: ignore[arg-type]
444 continue
445
446 source = node['test'] if 'test' in node else node.astext() # type: ignore[index, operator]
447 filename = self.get_filename_for_node(node, docname)
448 line_number = self.get_line_number(node)
449 if not source:
450 logger.warning(
451 __('no code/output in %s block at %s:%s'),
452 node.get('testnodetype', 'doctest'), # type: ignore[attr-defined]
453 filename,
454 line_number,
455 )
456 code = TestCode(
457 source,
458 type=node.get('testnodetype', 'doctest'), # type: ignore[attr-defined]
459 filename=filename,
460 lineno=line_number, # type: ignore[arg-type]
461 options=node.get('options'), # type: ignore[attr-defined]
462 )
463 node_groups = node.get('groups', [self.config.doctest_test_doctest_blocks]) # type: ignore[attr-defined]
464 if '*' in node_groups:
465 add_to_all_groups.append(code)
466 continue
467 for groupname in node_groups:
468 if groupname not in groups:
469 groups[groupname] = TestGroup(groupname)
470 groups[groupname].add_code(code)
471 for code in add_to_all_groups:
472 for group in groups.values():
473 group.add_code(code)
474 if self.config.doctest_global_setup:
475 code = TestCode(
476 self.config.doctest_global_setup,
477 'testsetup',
478 filename='<global_setup>',
479 lineno=0,
480 )
481 for group in groups.values():
482 group.add_code(code, prepend=True)
483 if self.config.doctest_global_cleanup:
484 code = TestCode(
485 self.config.doctest_global_cleanup,

Callers 1

write_documentsMethod · 0.95

Calls 15

skippedMethod · 0.95
get_filename_for_nodeMethod · 0.95
get_line_numberMethod · 0.95
_outMethod · 0.95
test_groupMethod · 0.95
SphinxDocTestRunnerClass · 0.85
TestCodeClass · 0.85
TestGroupClass · 0.85
add_codeMethod · 0.80
summarizeMethod · 0.80
findallMethod · 0.45
astextMethod · 0.45

Tested by

no test coverage detected