Skip to content

Commit 07f1012

Browse files
sderevAI-sderev
andcommitted
Fix get_language_pair default-pair message
* Point missing-default message to `pairs add` and `pairs set-default` * Align CLI tests with new guidance Co-authored-by: AI <ai@sderev.com>
1 parent e68acc0 commit 07f1012

4 files changed

Lines changed: 30 additions & 9 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Fixed
2+
-----
3+
* Pointed missing default-pair errors to `vocabmaster pairs add` and `vocabmaster pairs set-default`.

tests/test_cli.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66

77
from vocabmaster import cli, config_handler, utils
88

9+
DEFAULT_PAIR_MISSING_MESSAGE = (
10+
"No default language pair found. Run 'vocabmaster pairs add' to create a language pair, "
11+
"then 'vocabmaster pairs set-default' to choose a default.\n"
12+
"See `vocabmaster --help` for more information."
13+
)
14+
915

1016
@pytest.fixture(autouse=True)
1117
def reset_click_defaults(monkeypatch):
@@ -480,7 +486,7 @@ def record_generate(translations, anki, language, mother, custom_deck_name=None)
480486
class TestAnkiCommand:
481487
def test_anki_requires_default_pair(self, isolated_app_dir, monkeypatch):
482488
def fail_pair(option):
483-
raise ValueError("No default language pair found.")
489+
raise ValueError(DEFAULT_PAIR_MISSING_MESSAGE)
484490

485491
monkeypatch.setattr(cli.config_handler, "get_language_pair", fail_pair)
486492

@@ -489,6 +495,8 @@ def fail_pair(option):
489495
assert result.exit_code == 1
490496
assert "No default language pair found." in result.output
491497
assert "vocabmaster pairs add" in result.output
498+
assert "vocabmaster pairs set-default" in result.output
499+
assert "vocabmaster --help" in result.output
492500

493501
def test_anki_generates_deck_when_default_set(self, isolated_app_dir, monkeypatch):
494502
monkeypatch.setattr(
@@ -583,14 +591,17 @@ def record_explain():
583591
class TestTokensCommand:
584592
def test_tokens_requires_default_pair(self, isolated_app_dir, monkeypatch):
585593
def fail_pair(option):
586-
raise ValueError("No default language pair found")
594+
raise ValueError(DEFAULT_PAIR_MISSING_MESSAGE)
587595

588596
monkeypatch.setattr(cli.config_handler, "get_language_pair", fail_pair)
589597

590598
result = invoke_cli(["tokens"])
591599

592600
assert result.exit_code == 1
593-
assert "No default language pair found" in result.output
601+
assert "No default language pair found." in result.output
602+
assert "vocabmaster pairs add" in result.output
603+
assert "vocabmaster pairs set-default" in result.output
604+
assert "vocabmaster --help" in result.output
594605

595606
def test_tokens_requires_words(self, isolated_app_dir, monkeypatch):
596607
monkeypatch.setattr(
@@ -782,7 +793,7 @@ def test_recover_list_requires_language_pair(self, isolated_app_dir, monkeypatch
782793
"""recover list shows error with hint when no language pair configured."""
783794

784795
def fail_pair(_pair):
785-
raise ValueError("No default language pair found.")
796+
raise ValueError(DEFAULT_PAIR_MISSING_MESSAGE)
786797

787798
monkeypatch.setattr(cli.config_handler, "get_language_pair", fail_pair)
788799

@@ -791,6 +802,8 @@ def fail_pair(_pair):
791802
assert result.exit_code == 1
792803
assert "No default language pair found." in result.output
793804
assert "vocabmaster pairs add" in result.output
805+
assert "vocabmaster pairs set-default" in result.output
806+
assert "vocabmaster --help" in result.output
794807

795808

796809
class TestRecoverRestoreCommand:
@@ -1213,14 +1226,17 @@ def test_recover_validate_invalid_pair(self, isolated_app_dir, monkeypatch):
12131226
"""recover validate shows error for invalid language pair."""
12141227

12151228
def fail_pair(_pair):
1216-
raise ValueError("No default language pair found.")
1229+
raise ValueError(DEFAULT_PAIR_MISSING_MESSAGE)
12171230

12181231
monkeypatch.setattr(cli.config_handler, "get_language_pair", fail_pair)
12191232

12201233
result = invoke_cli(["recover", "validate"])
12211234

12221235
assert result.exit_code == 1
12231236
assert "No default language pair found." in result.output
1237+
assert "vocabmaster pairs add" in result.output
1238+
assert "vocabmaster pairs set-default" in result.output
1239+
assert "vocabmaster --help" in result.output
12241240

12251241

12261242
class TestConfigHandlerRemove:

vocabmaster/cli.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -984,7 +984,9 @@ def pairs_inspect_command(pair):
984984
default_pair = config_handler.get_default_language_pair()
985985
if default_pair is None:
986986
click.echo(
987-
f"{ERROR_PREFIX} No default language pair found. Run 'vocabmaster pairs add' to create one.",
987+
f"{ERROR_PREFIX} No default language pair found. Run 'vocabmaster pairs add' to create a"
988+
" language pair, then 'vocabmaster pairs set-default' to choose a default.\n"
989+
"See `vocabmaster --help` for more information.",
988990
err=True,
989991
)
990992
sys.exit(1)

vocabmaster/config_handler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,9 +316,9 @@ def get_language_pair(language_pair):
316316
default_pair = get_default_language_pair()
317317
if default_pair is None:
318318
raise ValueError(
319-
"No default language pair found. Please set a default language pair"
320-
" using 'vocabmaster config default'.\nSee `vocabmaster --help` for"
321-
" more information."
319+
"No default language pair found. Run 'vocabmaster pairs add' to create a"
320+
" language pair, then 'vocabmaster pairs set-default' to choose a default.\n"
321+
"See `vocabmaster --help` for more information."
322322
)
323323
language_to_learn = default_pair["language_to_learn"]
324324
mother_tongue = default_pair["mother_tongue"]

0 commit comments

Comments
 (0)