summaryrefslogtreecommitdiff
path: root/tests/test_ext_inheritance_diagram.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_ext_inheritance_diagram.py')
-rw-r--r--tests/test_ext_inheritance_diagram.py50
1 files changed, 48 insertions, 2 deletions
diff --git a/tests/test_ext_inheritance_diagram.py b/tests/test_ext_inheritance_diagram.py
index bf1bbbac0..968bb1473 100644
--- a/tests/test_ext_inheritance_diagram.py
+++ b/tests/test_ext_inheritance_diagram.py
@@ -9,9 +9,10 @@
:license: BSD, see LICENSE for details.
"""
-import re
-from util import with_app
+import sys
+from util import with_app, rootdir, raises
from test_ext_graphviz import skip_if_graphviz_not_found
+from sphinx.ext.inheritance_diagram import InheritanceException, import_classes
@with_app('html', testroot='ext-inheritance_diagram')
@@ -40,3 +41,48 @@ def test_inheritance_diagram_latex(app, status, warning):
'\\\\includegraphics{inheritance-\\w+.pdf}\n'
'\\\\caption{Test Foo!}\\\\label{index:id1}\\\\end{figure}')
assert re.search(pattern, content, re.M)
+
+
+def test_import_classes():
+ from sphinx.application import Sphinx, TemplateBridge
+ from sphinx.util.i18n import CatalogInfo
+
+ try:
+ sys.path.append(rootdir / 'roots/test-ext-inheritance_diagram')
+ from example.sphinx import DummyClass
+
+ # got exception for unknown class or module
+ raises(InheritanceException, import_classes, 'unknown', None)
+ raises(InheritanceException, import_classes, 'unknown.Unknown', None)
+
+ # a module having no classes
+ classes = import_classes('sphinx', None)
+ assert classes == []
+
+ classes = import_classes('sphinx', 'foo')
+ assert classes == []
+
+ # all of classes in the module
+ classes = import_classes('sphinx.application', None)
+ assert set(classes) == set([Sphinx, TemplateBridge])
+
+ # specified class in the module
+ classes = import_classes('sphinx.application.Sphinx', None)
+ assert classes == [Sphinx]
+
+ # specified class in current module
+ classes = import_classes('Sphinx', 'sphinx.application')
+ assert classes == [Sphinx]
+
+ # relative module name to current module
+ classes = import_classes('i18n.CatalogInfo', 'sphinx.util')
+ assert classes == [CatalogInfo]
+
+ # got exception for functions
+ raises(InheritanceException, import_classes, 'encode_uri', 'sphinx.util')
+
+ # import submodule on current module (refs: #3164)
+ classes = import_classes('sphinx', 'example')
+ assert classes == [DummyClass]
+ finally:
+ sys.path.pop()