Skip to content

Commit cfd0d5e

Browse files
🎨 Palette: Improve greeting name input handling and feedback
- Trim leading/trailing whitespace from name input - Fallback to "World" for empty or whitespace-only names - Show actual character count in name length validation error - Add tests for new trimming and fallback behavior - Document UX learnings in .Jules/palette.md
1 parent f6883ef commit cfd0d5e

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

project/app.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ def main(name: str = "World"):
2323
Args:
2424
name: the name to be greeted
2525
"""
26+
name = name.strip() or "World"
27+
2628
if len(name) > 100:
27-
raise UsageError("Invalid name: maximum length is 100 characters.")
29+
raise UsageError(f"Invalid name: {len(name)} characters (maximum is 100).")
2830
if any(c < " " for c in name):
2931
raise UsageError("Invalid name: control characters are not allowed.")
3032

tests/test_app.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,25 @@ def test_greet():
2626
assert "Hello Jules! 👋" in result.output
2727

2828

29+
def test_greet_trimming():
30+
runner = CliRunner()
31+
result = runner.invoke(main, ["--name", " Jules "])
32+
assert result.exit_code == 0
33+
assert "Hello Jules! 👋" in result.output
34+
35+
36+
def test_greet_empty_fallback():
37+
runner = CliRunner()
38+
result = runner.invoke(main, ["--name", " "])
39+
assert result.exit_code == 0
40+
assert "Hello World! 👋" in result.output
41+
42+
2943
def test_name_too_long():
3044
runner = CliRunner()
3145
result = runner.invoke(main, ["--name", "A" * 101])
3246
assert result.exit_code != 0
33-
assert "maximum length is 100 characters" in result.output
47+
assert "101 characters (maximum is 100)" in result.output
3448

3549

3650
def test_name_control_characters():

0 commit comments

Comments
 (0)