summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sphinx/application.py2
-rw-r--r--tests/test_application.py21
2 files changed, 22 insertions, 1 deletions
diff --git a/sphinx/application.py b/sphinx/application.py
index bfb39a70..291b2931 100644
--- a/sphinx/application.py
+++ b/sphinx/application.py
@@ -409,7 +409,7 @@ class Sphinx(object):
if domain.name not in self.domains:
raise ExtensionError('domain %s not yet registered' % domain.name)
if not issubclass(domain, self.domains[domain.name]):
- raise ExtensionError('new domain not a subclass of registered '
+ raise ExtensionError('new domain not a subclass of registered %s '
'domain' % domain.name)
self.domains[domain.name] = domain
diff --git a/tests/test_application.py b/tests/test_application.py
index 4baabcec..a6e798c2 100644
--- a/tests/test_application.py
+++ b/tests/test_application.py
@@ -12,6 +12,7 @@
from StringIO import StringIO
from sphinx.application import ExtensionError
+from sphinx.domains import Domain
from util import *
@@ -69,3 +70,23 @@ def test_extensions():
assert warnings.getvalue().startswith("WARNING: extension 'shutil'")
finally:
app.cleanup()
+
+def test_domain_override():
+ class A(Domain):
+ name = 'foo'
+ class B(A):
+ name = 'foo'
+ class C(Domain):
+ name = 'foo'
+ status, warnings = StringIO(), StringIO()
+ app = TestApp(status=status, warning=warnings)
+ try:
+ # No domain know named foo.
+ raises_msg(ExtensionError, 'domain foo not yet registered',
+ app.override_domain, A)
+ assert app.add_domain(A) is None
+ assert app.override_domain(B) is None
+ raises_msg(ExtensionError, 'new domain not a subclass of registered '
+ 'foo domain', app.override_domain, C)
+ finally:
+ app.cleanup()