Example #1
0
from mau.parsers.nodes import DocumentNode, ContainerNode
from mau.parsers.base_parser import ParserError
from mau.parsers.main_parser import MainParser
from mau.visitors.html_visitor import HTMLVisitor

from tests.helpers import (
    dedent,
    init_parser_factory,
    init_ast_factory,
    ast_test_factory,
    remove_indentation,
    visitlist_factory,
)

init_parser = init_parser_factory(MainParser)

init_ast = init_ast_factory(MainParser)

_test = ast_test_factory(MainParser, HTMLVisitor)

visitlist = visitlist_factory(HTMLVisitor)


def test_text():
    v = HTMLVisitor()

    output = v.visit(
        {
            "type": "text",
            "value": "This is text",
Example #2
0
from unittest.mock import patch

from mau.lexers.base_lexer import (
    Token,
    TokenTypes,
    EOL,
    EOF,
    Text,
    Literal,
)
from mau.lexers.base_lexer import BaseLexer
from mau.parsers.base_parser import BaseParser, ParserError, ExpectedError, TokenError

from tests.helpers import init_parser_factory

init_parser = init_parser_factory(BaseParser)


def test_initial_state():
    p = BaseParser()

    assert p.index == -1
    with pytest.raises(ValueError):
        p.current_token


def test_load():
    p = init_parser("\n")

    assert p.index == -1
    with pytest.raises(ValueError):
Example #3
0
from unittest.mock import patch

from mau.parsers.text_parser import TextParser

from tests.helpers import listasdict, init_parser_factory, parser_test_factory

init_parser = init_parser_factory(TextParser)

_test = parser_test_factory(TextParser)


def test_collect_macro_arguments_single_argument():
    source = "(value1)"

    p = init_parser(source)
    assert p._collect_macro_args() == "value1"


def test_collect_macro_arguments_multiple_arguments():
    source = "(value1,value2)"

    p = init_parser(source)
    assert p._collect_macro_args() == "value1,value2"


def test_collect_macro_arguments_single_argument_with_quotes():
    source = '("value1")'

    p = init_parser(source)
    assert p._collect_macro_args() == '"value1"'
Example #4
0
import pytest

from mau.parsers.preprocess_variables_parser import (
    PreprocessVariablesParser,
    PreprocessError,
)

from tests.helpers import listasdict, init_parser_factory, dedent

init_parser = init_parser_factory(PreprocessVariablesParser)


def test_plain_text():
    p = init_parser("This is text", {"attr": "5"})
    p.parse()

    assert listasdict(p.nodes) == [{
        "type": "text",
        "value": "This is text\n",
    }]


def test_replace_variable():
    p = init_parser("This is number {attr}", {"attr": "5"})
    p.parse()

    assert listasdict(p.nodes) == [{
        "type": "text",
        "value": "This is number 5\n",
    }]
Example #5
0
import pytest

from mau.parsers.base_parser import ParserError
from mau.parsers.arguments_parser import ArgumentsParser

from tests.helpers import init_parser_factory

init_parser = init_parser_factory(ArgumentsParser)


def test_single_unnamed_argument_no_spaces():
    p = init_parser("value")
    p.parse()

    assert p.args == ["value"]
    assert p.kwargs == {}


def test_single_unnamed_argument_with_spaces():
    p = init_parser("value with spaces")
    p.parse()

    assert p.args == ["value with spaces"]
    assert p.kwargs == {}


def test_multiple_unnamed_arguments_no_spaces():
    p = init_parser("value1,value2")
    p.parse()

    assert p.args == ["value1", "value2"]