summaryrefslogtreecommitdiff
path: root/tests/test_ext_inheritance.py
diff options
context:
space:
mode:
authorMr. Senko <atodorov@mrsenko.com>2016-01-21 11:11:06 +0200
committerMr. Senko <atodorov@mrsenko.com>2017-06-05 21:52:21 +0300
commit9486f0d8f78c5683ed4df2015fd42b24ab147ab8 (patch)
treef5df5d8c93097e466950bc9f1f5d11aada014997 /tests/test_ext_inheritance.py
parent72e70b1b361a649f1e81ed4ed29cbb8a31024563 (diff)
downloadsphinx-git-9486f0d8f78c5683ed4df2015fd42b24ab147ab8.tar.gz
Add top-classes option to sphinx.ext.inheritance_diagram
This will limit the scope of inheritance traversal
Diffstat (limited to 'tests/test_ext_inheritance.py')
-rw-r--r--tests/test_ext_inheritance.py68
1 files changed, 67 insertions, 1 deletions
diff --git a/tests/test_ext_inheritance.py b/tests/test_ext_inheritance.py
index ce4b50a56..fcf313a30 100644
--- a/tests/test_ext_inheritance.py
+++ b/tests/test_ext_inheritance.py
@@ -13,6 +13,7 @@ import os
import pytest
from sphinx.ext.inheritance_diagram import InheritanceDiagram
+
@pytest.mark.sphinx(buildername="html", testroot="inheritance")
@pytest.mark.usefixtures('if_graphviz_found')
def test_inheritance_diagram(app, status, warning):
@@ -51,7 +52,8 @@ def test_inheritance_diagram(app, status, warning):
('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None),
('dummy.test.C', 'dummy.test.C', ['dummy.test.A'], None),
('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
- ('dummy.test.D', 'dummy.test.D', ['dummy.test.B', 'dummy.test.C'], None),
+ ('dummy.test.D', 'dummy.test.D',
+ ['dummy.test.B', 'dummy.test.C'], None),
('dummy.test.B', 'dummy.test.B', ['dummy.test.A'], None)
]
@@ -65,3 +67,67 @@ def test_inheritance_diagram(app, status, warning):
('D', 'dummy.test.D', ['B', 'C'], None),
('B', 'dummy.test.B', ['A'], None)
]
+
+ # inheritance diagram with 1 top class
+ # :top-classes: dummy.test.B
+ # rendering should be
+ # A
+ # \
+ # B C
+ # / \ / \
+ # E D F
+ #
+ for cls in graphs['diagram_w_1_top_class'].class_info:
+ assert cls in [
+ ('dummy.test.A', 'dummy.test.A', [], None),
+ ('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None),
+ ('dummy.test.C', 'dummy.test.C', ['dummy.test.A'], None),
+ ('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
+ ('dummy.test.D', 'dummy.test.D',
+ ['dummy.test.B', 'dummy.test.C'], None),
+ ('dummy.test.B', 'dummy.test.B', [], None)
+ ]
+
+
+ # inheritance diagram with 2 top classes
+ # :top-classes: dummy.test.B, dummy.test.C
+ # Note: we're specifying separate classes, not the entire module here
+ # rendering should be
+ #
+ # B C
+ # / \ / \
+ # E D F
+ #
+ for cls in graphs['diagram_w_2_top_classes'].class_info:
+ assert cls in [
+ ('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None),
+ ('dummy.test.C', 'dummy.test.C', [], None),
+ ('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
+ ('dummy.test.D', 'dummy.test.D',
+ ['dummy.test.B', 'dummy.test.C'], None),
+ ('dummy.test.B', 'dummy.test.B', [], None)
+ ]
+
+ # inheritance diagram with 2 top classes and specifiying the entire module
+ # rendering should be
+ #
+ # A
+ # B C
+ # / \ / \
+ # E D F
+ #
+ # Note: dummy.test.A is included in the graph before its descendants are even processed
+ # b/c we've specified to load the entire module. The way InheritanceGraph works it is very
+ # hard to exclude parent classes once after they have been included in the graph.
+ # If you'd like to not show class A in the graph don't specify the entire module.
+ # this is a known issue.
+ for cls in graphs['diagram_module_w_2_top_classes'].class_info:
+ assert cls in [
+ ('dummy.test.F', 'dummy.test.F', ['dummy.test.C'], None),
+ ('dummy.test.C', 'dummy.test.C', [], None),
+ ('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
+ ('dummy.test.D', 'dummy.test.D',
+ ['dummy.test.B', 'dummy.test.C'], None),
+ ('dummy.test.B', 'dummy.test.B', [], None),
+ ('dummy.test.A', 'dummy.test.A', [], None),
+ ]