Skip to content

Commit 4652bbb

Browse files
committed
fix sorting bug
1 parent b0427ef commit 4652bbb

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

rsconnect/main.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,9 @@ def add(
666666
set_verbosity(verbose)
667667
output_params(ctx, locals().items())
668668

669+
if not name:
670+
ctx.fail('--name is required')
671+
669672
validation.validate_connection_options(
670673
ctx=ctx,
671674
url=server,

rsconnect/metadata.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,16 @@
1515
from io import BufferedWriter
1616
from os.path import abspath, basename, dirname, exists, join
1717
from threading import Lock
18-
from typing import TYPE_CHECKING, Callable, Dict, Generic, Mapping, Optional, TypeVar, Union
18+
from typing import (
19+
TYPE_CHECKING,
20+
Callable,
21+
Dict,
22+
Generic,
23+
Mapping,
24+
Optional,
25+
TypeVar,
26+
Union,
27+
)
1928
from urllib.parse import urlparse
2029

2130
# Even though TypedDict is available in Python 3.8, because it's used with NotRequired,
@@ -316,7 +325,7 @@ def get_all_servers(self):
316325
317326
:return: the sorted list of known servers.
318327
"""
319-
return self._get_sorted_values(lambda s: s["name"])
328+
return self._get_sorted_values(lambda s: s["name"] or "")
320329

321330
def set(
322331
self,

tests/test_main.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,6 +1117,30 @@ def test_add_shinyapps_missing_options(self):
11171117
if original_server_value:
11181118
os.environ["CONNECT_SERVER"] = original_server_value
11191119

1120+
def test_add_missing_name(self):
1121+
"""Test that the add command requires --name parameter."""
1122+
original_api_key_value = os.environ.pop("CONNECT_API_KEY", None)
1123+
original_server_value = os.environ.pop("CONNECT_SERVER", None)
1124+
try:
1125+
runner = CliRunner()
1126+
result = runner.invoke(
1127+
cli,
1128+
[
1129+
"add",
1130+
"--server",
1131+
"https://connect.example.com",
1132+
"--api-key",
1133+
"test-key",
1134+
],
1135+
)
1136+
assert result.exit_code != 0, result.output
1137+
assert "--name is required" in result.output
1138+
finally:
1139+
if original_api_key_value:
1140+
os.environ["CONNECT_API_KEY"] = original_api_key_value
1141+
if original_server_value:
1142+
os.environ["CONNECT_SERVER"] = original_server_value
1143+
11201144
def test_env_management_callback(self):
11211145
ctx = click.Context(cli)
11221146

0 commit comments

Comments
 (0)