mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
This change updates the `-s/--setting` option to `datasette serve` to allow it to be used to set arbitrarily complex nested settings in a way that is compatible with the new `-c datasette.yml` work happening in: - #2143 It will enable things like this: ``` datasette data.db --setting plugins.datasette-ripgrep.path "/home/simon/code" ``` For the moment though it just affects [settings](https://docs.datasette.io/en/1.0a4/settings.html) - so you can do this: ``` datasette data.db --setting settings.sql_time_limit_ms 3500 ``` I've also implemented a backwards compatibility mechanism, so if you use it this way (the old way): ``` datasette data.db --setting sql_time_limit_ms 3500 ``` It will notice that the setting you passed is one of Datasette's core settings, and will treat that as if you said `settings.sql_time_limit_ms` instead.
This commit is contained in:
parent
527cec66b0
commit
d9aad1fd04
3 changed files with 46 additions and 47 deletions
|
|
@ -220,20 +220,27 @@ def test_serve_invalid_ports(invalid_port):
|
|||
assert "Invalid value for '-p'" in result.stderr
|
||||
|
||||
|
||||
def test_setting():
|
||||
@pytest.mark.parametrize(
|
||||
"args",
|
||||
(
|
||||
["--setting", "default_page_size", "5"],
|
||||
["--setting", "settings.default_page_size", "5"],
|
||||
["-s", "settings.default_page_size", "5"],
|
||||
),
|
||||
)
|
||||
def test_setting(args):
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(
|
||||
cli, ["--setting", "default_page_size", "5", "--get", "/-/settings.json"]
|
||||
)
|
||||
result = runner.invoke(cli, ["--get", "/-/settings.json"] + args)
|
||||
assert result.exit_code == 0, result.output
|
||||
assert json.loads(result.output)["default_page_size"] == 5
|
||||
settings = json.loads(result.output)
|
||||
assert settings["default_page_size"] == 5
|
||||
|
||||
|
||||
def test_setting_type_validation():
|
||||
runner = CliRunner(mix_stderr=False)
|
||||
result = runner.invoke(cli, ["--setting", "default_page_size", "dog"])
|
||||
assert result.exit_code == 2
|
||||
assert '"default_page_size" should be an integer' in result.stderr
|
||||
assert '"settings.default_page_size" should be an integer' in result.stderr
|
||||
|
||||
|
||||
@pytest.mark.parametrize("default_allow_sql", (True, False))
|
||||
|
|
@ -360,11 +367,3 @@ def test_help_settings():
|
|||
result = runner.invoke(cli, ["--help-settings"])
|
||||
for setting in SETTINGS:
|
||||
assert setting.name in result.output
|
||||
|
||||
|
||||
@pytest.mark.parametrize("setting", ("hash_urls", "default_cache_ttl_hashed"))
|
||||
def test_help_error_on_hash_urls_setting(setting):
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ["--setting", setting, 1])
|
||||
assert result.exit_code == 2
|
||||
assert "The hash_urls setting has been removed" in result.output
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue