def test_parser_parse(patch, parser): """ Ensures the build method can build the grammar """ patch.many(Parser, ['lark', 'transformer']) result = parser.parse('source') Parser.lark().parse.assert_called_with('source\n') Parser.transformer().transform.assert_called_with(Parser.lark().parse()) assert result == Parser.transformer().transform()
def parser(magic, patch): patch.init(Parser) parser = Parser() parser.algo = "lalr" parser.ebnf = None parser.lark = magic() return parser
def test_parser_parser_unexpected_token(capsys, patch, magic, parser): patch.init(StoryError) patch.object(StoryError, 'message') patch.many(Parser, ['lark', 'transformer']) Parser.lark().parse.side_effect = UnexpectedToken(magic(), 'exp', 0, 1) with raises(SystemExit): parser.parse('source', debug=False) out, err = capsys.readouterr() assert out == '{}\n'.format(StoryError.message())
def test_parser_parser_unexpected_token_debug(patch, magic, parser): patch.many(Parser, ['lark', 'transformer']) Parser.lark().parse.side_effect = UnexpectedToken(magic(), 'exp', 0, 1) with raises(UnexpectedToken): parser.parse('source', debug=True)
def test_parser_lex(patch, parser): patch.many(Parser, ['lark', 'indenter']) result = parser.lex('source') Parser.lark().lex.assert_called_with('source') assert result == Parser.lark().lex()
def test_parser_parser_unexpected_input_debug(patch, magic, parser): patch.many(Parser, ['lark', 'transformer']) Parser.lark().parse.side_effect = UnexpectedInput(magic(), 0, 0, 0) with raises(UnexpectedInput): parser.parse('source', debug=True)