mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
parent
ddc999ad12
commit
df851c117d
2 changed files with 22 additions and 2 deletions
|
|
@ -292,6 +292,10 @@ class Datasette:
|
||||||
raise StartupError("config.json should be renamed to settings.json")
|
raise StartupError("config.json should be renamed to settings.json")
|
||||||
if config_dir and (config_dir / "settings.json").exists() and not settings:
|
if config_dir and (config_dir / "settings.json").exists() and not settings:
|
||||||
settings = json.loads((config_dir / "settings.json").read_text())
|
settings = json.loads((config_dir / "settings.json").read_text())
|
||||||
|
# Validate those settings
|
||||||
|
for key in settings:
|
||||||
|
if key not in DEFAULT_SETTINGS:
|
||||||
|
raise StartupError("Invalid setting '{key}' in settings.json")
|
||||||
self._settings = dict(DEFAULT_SETTINGS, **(settings or {}))
|
self._settings = dict(DEFAULT_SETTINGS, **(settings or {}))
|
||||||
self.renderers = {} # File extension -> (renderer, can_render) functions
|
self.renderers = {} # File extension -> (renderer, can_render) functions
|
||||||
self.version_note = version_note
|
self.version_note = version_note
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import pytest
|
||||||
from datasette.app import Datasette
|
from datasette.app import Datasette
|
||||||
from datasette.cli import cli
|
from datasette.cli import cli
|
||||||
from datasette.utils.sqlite import sqlite3
|
from datasette.utils.sqlite import sqlite3
|
||||||
|
from datasette.utils import StartupError
|
||||||
from .fixtures import TestClient as _TestClient
|
from .fixtures import TestClient as _TestClient
|
||||||
from click.testing import CliRunner
|
from click.testing import CliRunner
|
||||||
|
|
||||||
|
|
@ -27,9 +28,8 @@ body { margin-top: 3em}
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="session")
|
@pytest.fixture(scope="session")
|
||||||
def config_dir_client(tmp_path_factory):
|
def config_dir(tmp_path_factory):
|
||||||
config_dir = tmp_path_factory.mktemp("config-dir")
|
config_dir = tmp_path_factory.mktemp("config-dir")
|
||||||
|
|
||||||
plugins_dir = config_dir / "plugins"
|
plugins_dir = config_dir / "plugins"
|
||||||
plugins_dir.mkdir()
|
plugins_dir.mkdir()
|
||||||
(plugins_dir / "hooray.py").write_text(PLUGIN, "utf-8")
|
(plugins_dir / "hooray.py").write_text(PLUGIN, "utf-8")
|
||||||
|
|
@ -77,7 +77,23 @@ def config_dir_client(tmp_path_factory):
|
||||||
),
|
),
|
||||||
"utf-8",
|
"utf-8",
|
||||||
)
|
)
|
||||||
|
return config_dir
|
||||||
|
|
||||||
|
|
||||||
|
def test_invalid_settings(config_dir):
|
||||||
|
previous = (config_dir / "settings.json").read_text("utf-8")
|
||||||
|
(config_dir / "settings.json").write_text(
|
||||||
|
json.dumps({"invalid": "invalid-setting"}), "utf-8"
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
with pytest.raises(StartupError):
|
||||||
|
ds = Datasette([], config_dir=config_dir)
|
||||||
|
finally:
|
||||||
|
(config_dir / "settings.json").write_text(previous, "utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="session")
|
||||||
|
def config_dir_client(config_dir):
|
||||||
ds = Datasette([], config_dir=config_dir)
|
ds = Datasette([], config_dir=config_dir)
|
||||||
yield _TestClient(ds)
|
yield _TestClient(ds)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue