def test_parse_interpolation(inter: Any, key: Any, expected: Any) -> None: cfg = OmegaConf.create({ "dict": { "bar": 20 }, "list": [1, 2], }, ) root = OmegaConf.select(cfg, key) tree = grammar_parser.parse( parser_rule="singleElement", value=inter, lexer_mode="VALUE_MODE", ) def callback(inter_key: Any, memo: Optional[Set[int]]) -> Any: assert isinstance(root, Container) ret = root._resolve_node_interpolation(inter_key=inter_key, memo=memo) return ret visitor = grammar_visitor.GrammarVisitor( node_interpolation_callback=callback, resolver_interpolation_callback=None, # type: ignore memo=None, ) ret = visitor.visit(tree) assert ret == expected
def test_single_element_no_interpolation(self, definition: str, expected: Any) -> None: parse_tree, expected_visit = self._parse("singleElement", definition, expected) if parse_tree is None: return # Since there are no interpolations here, we do not need to provide # callbacks to resolve them, and the quoted string callback can simply # be the identity. visitor = grammar_visitor.GrammarVisitor( node_interpolation_callback=None, # type: ignore resolver_interpolation_callback=None, # type: ignore memo=None, ) self._visit(lambda: visitor.visit(parse_tree), expected_visit)