band-aider-pub/tests/band_aider/test_parser_factory.py
2026-10-17 11:57:37 -07:00

37 lines
1.5 KiB
Python

from pathlib import Path
from band_aider.strategies.python.python_source_discovery import PythonSourceDiscovery
from band_aider.judgement.file_parser import FileParser
from band_aider.judgement.model2vec_code_parser import NarrowParser
from band_aider.judgement.parser_factory import ParserFactory
from band_aider.judgement.prompt_formatter import MarkdownPromptFormatterBuilder
from band_aider.judgement.strict_parser import StrictParser
from tests.support.completion_clients import StaticOpenAICompatibleClient
from tests.support.memory_repo_exec import MemoryRepoExec
def test_strict_factory_passes_explicit_semi_related_threshold_to_inner_parser() -> None:
"""Strict parser construction retains the configured narrow semantic threshold."""
repo_root = Path("/testbed")
repo_exec = MemoryRepoExec(repo_root)
factory = ParserFactory(
client=StaticOpenAICompatibleClient('{"summary": "fixture"}'),
prompt_formatter_builder=MarkdownPromptFormatterBuilder(),
repo_exec=repo_exec,
source_discovery_strategy=PythonSourceDiscovery(
repo_root,
repo_root / "tests",
repo_exec=repo_exec,
),
scope="strict",
policy_anchors=("Symbol",),
semi_related_threshold=0.33,
)
parser = factory()
assert isinstance(parser, StrictParser)
assert isinstance(parser.inner, NarrowParser)
assert isinstance(parser.inner.inner, FileParser)
assert parser.inner.semantic_threshold == 0.33