Example #1
0
def test_mixed_error():
    with pytest.raises(LiquidSyntaxError):
        parse_mixed('`', LiquidCode())

    node = NodeVoid(name='void', attrs='', code=None, shared_code=LiquidCode())
    with pytest.raises(LiquidSyntaxError):
        node.try_mixed('`')
Example #2
0
def liqparser():
    precode = LiquidCode()
    code = LiquidCode()
    stream = LiquidStream.from_string("abcde")
    return LiquidParser(stream=stream,
                        shared_code=precode,
                        code=code,
                        filename='',
                        prev=None,
                        config=LiquidConfig(mode='compact',
                                            loglevel='detail',
                                            include='',
                                            extends=None))
Example #3
0
def test_empty_config():
    code = LiquidCode()
    node = NodeConfig(name='config',
                      attrs='',
                      code=code,
                      shared_code=LiquidCode())
    with pytest.raises(LiquidSyntaxError):
        node.start()

    node.attrs = 'a'
    with pytest.raises(LiquidSyntaxError):
        node.start()

    node.attrs = 'a="1'
    with pytest.raises(LiquidSyntaxError):
        node.start()
Example #4
0
def test_parser_init():
    precode = LiquidCode()
    code = LiquidCode()
    stream = LiquidStream.from_string("abcde")
    lp = LiquidParser(stream=stream,
                      shared_code=precode,
                      code=code,
                      prev=None,
                      config=None,
                      filename='')
    assert lp.stream is stream
    assert lp.config is None
    assert lp.context.stacks == []
    assert lp.shared_code is precode
    assert lp.code is code
    assert lp.endtag is None
Example #5
0
def test_empty_literal():
    code = LiquidCode()
    node = NodeLiquidLiteral(attrs='', code=code, shared_code=LiquidCode())
    assert node.parse_node() is None
    assert str(node.code) == ''
Example #6
0
def test_mixed(mixed, expected):
    assert parse_mixed(mixed, LiquidCode()) == expected
Example #7
0
def test_get_line():
    code = LiquidCode()
    shared = LiquidCode()
    code.add_code(shared)
    shared.add_line('')
    shared.add_line('###### SHARED CODE STARTED ######')
    shared.add_line('code0_shared')
    code.add_line('###### SHARED CODE ENDED ######')
    code.add_line('')
    for i in range(3):
        code.add_line(f"code0_line_{i}")

    code1 = LiquidCode()
    shared1 = LiquidCode()
    code1.add_code(shared1)
    code1.add_line('###### SHARED CODE ENDED ######')
    code1.add_line('')
    code.add_code(code1)
    for i in range(3):
        code1.add_line(f"code1_line_{i}")
    shared1.add_line('')
    shared1.add_line('###### SHARED CODE STARTED ######')
    shared1.add_line("code1_shared")

    #print(str(code))
    """
    0.                                      <- code.shared
    1.  ###### SHARED CODE STARTED ######   <- code.shared
    2.  code0_shared                        <- code.shared
    3.  ###### SHARED CODE ENDED ######     <- code
    4.                                      <- code
    5.  code0_line_0                        <- code
    6.  code0_line_1                        <- code
    7.  code0_line_2                        <- code
    8.                                      <- code1.shared
    9.  ###### SHARED CODE STARTED ######   <- code1.shared
    10. code1_shared                        <- code1.shared
    11. ###### SHARED CODE ENDED ######     <- code1
    12.                                     <- code1
    13. code1_line_0                        <- code1
    14. code1_line_1                        <- code1
    15. code1_line_2                        <- code1
    """
    assert str(code.get_line(0)) == "\n"
    assert str(code.get_line(1)) == "###### SHARED CODE STARTED ######\n"
    assert str(code.get_line(2)) == "code0_shared\n"
    assert str(code.get_line(3)) == "###### SHARED CODE ENDED ######\n"
    assert str(code.get_line(4)) == "\n"
    assert str(code.get_line(5)) == "code0_line_0\n"
    assert str(code.get_line(6)) == "code0_line_1\n"
    assert str(code.get_line(7)) == "code0_line_2\n"
    assert str(code.get_line(8)) == "\n"
    assert str(code.get_line(9)) == "###### SHARED CODE STARTED ######\n"
    assert str(code.get_line(10)) == "code1_shared\n"
    assert str(code.get_line(11)) == "###### SHARED CODE ENDED ######\n"
    assert str(code.get_line(12)) == "\n"
    assert str(code.get_line(13)) == "code1_line_0\n"
    assert str(code.get_line(14)) == "code1_line_1\n"
    assert str(code.get_line(15)) == "code1_line_2\n"
Example #8
0
def test_add_code():

    code = LiquidCode(1)
    subcode = LiquidCode()
    code.add_code(subcode)
    subcode.add_line('1')
    subcode.indent()
    subcode.add_line('2')
    subcode.dedent()
    subcode.add_line('3')
    assert '  1' in str(code).splitlines()
    assert '    2' in str(code).splitlines()
    assert '  3' in str(code).splitlines()
Example #9
0
def test_code_tag():
    code = LiquidCode(1)
    for i in range(3):
        with suppress(LiquidCodeTagExists), code.tag('unique') as tagged:
            tagged.add_line('Some unique shared codes')
    assert str(code).count('  Some unique shared codes') == 1
Example #10
0
def test_code_init():
    code = LiquidCode()
    assert code.ndent == 0
    assert code.tags == {}
Example #11
0
def test_get_line2():
    # code in code
    code1 = LiquidCode()
    code2 = LiquidCode()
    code3 = LiquidCode()
    code1.add_line("0")
    code1.add_line("1")
    code1.add_line("2")
    code1.add_code(code2)
    code2.add_line("3")
    code2.add_line("4")
    code2.add_line("5")
    code2.add_code(code3)
    code3.add_line("6")
    code3.add_line("7")
    code2.add_line("8")
    code2.add_line("9")
    code1.add_line("10")
    assert str(code1.get_line(0)) == "0\n"
    assert str(code1.get_line(1)) == "1\n"
    assert str(code1.get_line(2)) == "2\n"
    assert str(code1.get_line(3)) == "3\n"
    assert str(code1.get_line(4)) == "4\n"
    assert str(code1.get_line(5)) == "5\n"
    assert str(code1.get_line(6)) == "6\n"
    assert str(code1.get_line(7)) == "7\n"
    assert str(code1.get_line(8)) == "8\n"
    assert str(code1.get_line(9)) == "9\n"
    assert str(code1.get_line(10)) == "10\n"