@@ -826,6 +826,9 @@ def test_schema_output(cli_runner):
826826 catalog = next (c for c in data ["commands" ] if c ["name" ] == "catalog" )
827827 sort_by = next (p for p in catalog ["params" ] if p ["name" ] == "sort_by" )
828828 assert set (sort_by ["choices" ]) == {"path" , "title" , "created" , "updated" }
829+ search_entry = next (c for c in data ["commands" ] if c ["name" ] == "search" )
830+ max_distance = next (p for p in search_entry ["params" ] if p ["name" ] == "max_distance" )
831+ assert max_distance ["default" ] == 0.45
829832
830833
831834def test_schema_meta_covers_every_command ():
@@ -926,6 +929,44 @@ def test_search_json(cli_runner, connected):
926929 assert any (r ["filename" ] == "gamma.md" and r ["field" ] == "notes" for r in data )
927930
928931
932+ def test_search_max_distance_excludes_all (cli_runner , connected , fake_embed ):
933+ _cfg_path , _field_path = connected
934+ cli_runner .invoke (cli .cli , ["index" , "--field" , "notes" ])
935+ result = cli_runner .invoke (
936+ cli .cli , ["search" , "--field" , "notes" , "--max-distance" , "0.01" , "beta" ]
937+ )
938+ assert result .exit_code == 1
939+ assert result .stdout == ""
940+ assert "No matching results found." in result .stderr
941+
942+
943+ def test_search_max_distance_returns_all (cli_runner , connected , fake_embed ):
944+ _cfg_path , _field_path = connected
945+ cli_runner .invoke (cli .cli , ["index" , "--field" , "notes" ])
946+ result = cli_runner .invoke (
947+ cli .cli , ["search" , "--field" , "notes" , "--max-distance" , "1.0" , "beta" ]
948+ )
949+ assert result .exit_code == 0
950+ for name in ("index.md" , "alpha.md" , "beta.md" , "gamma.md" ):
951+ assert name in result .output
952+
953+
954+ def test_search_no_results_exit_code (cli_runner , connected ):
955+ _cfg_path , _field_path = connected
956+ result = cli_runner .invoke (cli .cli , ["search" , "--field" , "notes" , "zzzz-not-there" ])
957+ assert result .exit_code == 1
958+ assert result .stdout == ""
959+ assert "No matching results found." in result .stderr
960+
961+
962+ def test_search_json_no_results_exit_code (cli_runner , connected ):
963+ _cfg_path , _field_path = connected
964+ result = cli_runner .invoke (cli .cli , ["search" , "--json" , "--field" , "notes" , "zzzz-not-there" ])
965+ assert result .exit_code == 1
966+ assert json .loads (result .stdout ) == []
967+ assert "No matching results found." in result .stderr
968+
969+
929970def test_search_multi_field_prefix (cli_runner , config_env , field_dir , tmp_path ):
930971 field2 = tmp_path / "field2"
931972 field2 .mkdir ()
0 commit comments