Raise a useful error if `theme.conf` doesn't exist (#11671)

This commit is contained in:
Vinay Sajip 2023-09-14 11:49:41 +01:00 committed by GitHub
parent 655bd15749
commit f0c25a0ada
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 2 deletions

View File

@ -16,6 +16,9 @@ Features added
Bugs fixed
----------
* #11668: Raise a useful error when ``theme.conf`` is missing.
Patch by Vinay Sajip.
Testing
-------

View File

@ -69,7 +69,10 @@ class Theme:
extract_zip(theme_path, self.themedir)
self.config = configparser.RawConfigParser()
self.config.read(path.join(self.themedir, THEMECONF), encoding='utf-8')
config_file_path = path.join(self.themedir, THEMECONF)
if not os.path.isfile(config_file_path):
raise ThemeError(__('theme configuration file %r not found') % config_file_path)
self.config.read(config_file_path, encoding='utf-8')
try:
inherit = self.config.get('theme', 'inherit')

View File

@ -6,7 +6,7 @@ import alabaster
import pytest
import sphinx.builders.html
from sphinx.theming import ThemeError
from sphinx.theming import Theme, ThemeError
@pytest.mark.sphinx(
@ -62,6 +62,13 @@ def test_theme_api(app, status, warning):
assert not os.path.exists(themedir)
def test_nonexistent_theme_conf(tmp_path):
# Check that error occurs with a non-existent theme.conf
# (https://github.com/sphinx-doc/sphinx/issues/11668)
with pytest.raises(ThemeError):
Theme('dummy', str(tmp_path), None)
@pytest.mark.sphinx(testroot='double-inheriting-theme')
def test_double_inheriting_theme(app, status, warning):
assert app.builder.theme.name == 'base_theme2'