- route completions through resolve_completion_route instead of one-level command lookup - add CompletionRoute to model partial completion state - suggest namespace entries and namespace-level help/TLDR flags while routing - delegate leaf argv completion to CommandArgumentParser after command resolution - restore LCP completion behavior with deduping and flag-safe handling - add namespace completion name iteration and TLDR example support to Falyx - update completer and completion route documentation
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
|
|
from falyx.completer import FalyxCompleter
|
|
|
|
|
|
def completion_texts(completions) -> list[str]:
|
|
return [c.text for c in completions]
|
|
|
|
|
|
def test_lcp_completions():
|
|
completer = FalyxCompleter(SimpleNamespace())
|
|
suggestions = ["AETHERWARP", "AETHERZOOM"]
|
|
stub = "A"
|
|
completions = list(completer._yield_lcp_completions(suggestions, stub))
|
|
texts = completion_texts(completions)
|
|
|
|
assert "AETHER" in texts
|
|
assert "AETHERWARP" in texts
|
|
assert "AETHERZOOM" in texts
|
|
|
|
|
|
def test_lcp_completions_space():
|
|
completer = FalyxCompleter(SimpleNamespace())
|
|
suggestions = ["London", "New York", "San Francisco"]
|
|
stub = "N"
|
|
completions = list(completer._yield_lcp_completions(suggestions, stub))
|
|
texts = completion_texts(completions)
|
|
assert '"New York"' in texts
|
|
|
|
|
|
def test_lcp_completions_does_not_collapse_flags():
|
|
completer = FalyxCompleter(SimpleNamespace())
|
|
suggestions = ["--tag", "--target"]
|
|
stub = "--t"
|
|
completions = list(completer._yield_lcp_completions(suggestions, stub))
|
|
texts = completion_texts(completions)
|
|
|
|
assert "--tag" in texts
|
|
assert "--target" in texts
|
|
assert "--ta" not in texts
|