mirror of
https://github.com/simonw/dclient.git
synced 2026-09-27 12:24:13 +02:00
Add instances command, improve error messages with actionable hints
Add "dclient instances" command to list known instances from config, with --json support. Improve "No instance specified" and "No database specified" error messages to show the exact commands needed to fix the problem. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
3f3221fdd3
commit
7b3a15027e
2 changed files with 86 additions and 2 deletions
|
|
@ -536,3 +536,57 @@ def test_get_command(httpx_mock, mocker, tmpdir):
|
|||
assert data == {"hello": "world"}
|
||||
request = httpx_mock.get_request()
|
||||
assert request.url.path == "/-/plugins.json"
|
||||
|
||||
|
||||
# -- instances command --
|
||||
|
||||
|
||||
def test_instances_plain(mocker, tmpdir):
|
||||
config_dir = pathlib.Path(tmpdir)
|
||||
mocker.patch("dclient.cli.get_config_dir", return_value=config_dir)
|
||||
(config_dir / "config.json").write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"default_instance": "prod",
|
||||
"instances": {
|
||||
"prod": {"url": "https://prod.example.com", "default_database": "main"},
|
||||
"staging": {"url": "https://staging.example.com", "default_database": None},
|
||||
},
|
||||
}
|
||||
)
|
||||
)
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ["instances"])
|
||||
assert result.exit_code == 0
|
||||
assert "* prod = https://prod.example.com (db: main)" in result.output
|
||||
assert " staging = https://staging.example.com" in result.output
|
||||
|
||||
|
||||
def test_instances_json(mocker, tmpdir):
|
||||
config_dir = pathlib.Path(tmpdir)
|
||||
mocker.patch("dclient.cli.get_config_dir", return_value=config_dir)
|
||||
(config_dir / "config.json").write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"default_instance": "prod",
|
||||
"instances": {
|
||||
"prod": {"url": "https://prod.example.com", "default_database": "main"},
|
||||
},
|
||||
}
|
||||
)
|
||||
)
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ["instances", "--json"])
|
||||
assert result.exit_code == 0
|
||||
data = json.loads(result.output)
|
||||
assert "prod" in data["instances"]
|
||||
assert data["default_instance"] == "prod"
|
||||
|
||||
|
||||
def test_instances_empty(mocker, tmpdir):
|
||||
config_dir = pathlib.Path(tmpdir)
|
||||
mocker.patch("dclient.cli.get_config_dir", return_value=config_dir)
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ["instances"])
|
||||
assert result.exit_code == 0
|
||||
assert result.output.strip() == ""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue