def test_extract_dynamic_tag_attributes(self): source = l.enumerate_source('') attrs, tail, source = l.extract_dynamic_tag_attributes( "**test", source, self.mako_syntax, False) self.assertTrue( attrs.startswith( "\n%for __plim_key__, __plim_value__ in test.items()")) attrs, tail, source = l.extract_dynamic_tag_attributes( "**test(**values)", source, self.mako_syntax, False) self.assertTrue( attrs.startswith( "\n%for __plim_key__, __plim_value__ in test(**values).items()" )) attrs, tail, source = l.extract_dynamic_tag_attributes( "**test**test2", source, self.mako_syntax, False) self.assertTrue( attrs.startswith( "\n%for __plim_key__, __plim_value__ in test.items()")) # Test multi-line expression source = l.enumerate_source('**values\n)') attrs, tail, source = l.extract_dynamic_tag_attributes( "**test(\n", source, self.mako_syntax, False) self.assertTrue( attrs.startswith( "\n%for __plim_key__, __plim_value__ in test(**values).items()" ))
def test_case(template, result): """Use files for multiline test cases""" template = l.enumerate_source(self.get_file_contents(template)) result = l.enumerate_source(self.get_file_contents(result)) for lineno, line in template: if line.strip(): _, result_line = next(result) line, close_buf, _, tail, __ = l.extract_tag_line(line, template) self.assertEqual(line + close_buf, result_line.rstrip())
def test_explicit_literal(self): result, _, __, ___ = l.parse_explicit_literal(0, "| Test", None, l.enumerate_source("")) assert result == "Test" result, _, __, ___ = l.parse_explicit_literal(0, ", Test", None, l.enumerate_source("")) assert result == "Test " result, _, __, ___ = l.parse_explicit_literal(0, ",Test\n Test", None, l.enumerate_source("")) assert result == "Test\n Test "
def test_case(template, result): """Use files for multiline test cases""" template = l.enumerate_source(self.get_file_contents(template)) result = l.enumerate_source(self.get_file_contents(result)) for lineno, line in template: if line.strip(): _, result_line = next(result) line, close_buf, _, __ = l.extract_plim_line( line, template) self.assertEqual(line + close_buf, result_line.rstrip())
def test_explicit_literal(self): result, _, __, ___ = l.parse_explicit_literal_with_embedded_markup( 0, "| Test", None, l.enumerate_source(""), self.mako_syntax) assert result == "Test" result, _, __, ___ = l.parse_explicit_literal_with_embedded_markup( 0, ", Test", None, l.enumerate_source(""), self.mako_syntax) assert result == "Test " result, _, __, ___ = l.parse_explicit_literal_with_embedded_markup( 0, ",Test\n Test", None, l.enumerate_source(""), self.mako_syntax) assert result == "Test\n Test "
def test_explicit_literal(self): result, _, __, ___ = l.parse_explicit_literal_with_embedded_markup( 0, "| Test", None, l.enumerate_source(""), l.STANDARD_PARSERS) assert result == "Test" result, _, __, ___ = l.parse_explicit_literal_with_embedded_markup( 0, ", Test", None, l.enumerate_source(""), l.STANDARD_PARSERS) assert result == "Test " result, _, __, ___ = l.parse_explicit_literal_with_embedded_markup( 0, ",Test\n Test", None, l.enumerate_source(""), l.STANDARD_PARSERS) assert result == "Test\n Test "
def test_extract_dynamic_tag_attributes(self): source = l.enumerate_source('') attrs, tail, source = l.extract_dynamic_tag_attributes("**test", source, False) self.assertTrue(attrs.startswith("\n%for __plim_key__, __plim_value__ in test.items()")) attrs, tail, source = l.extract_dynamic_tag_attributes("**test(**values)", source, False) self.assertTrue(attrs.startswith("\n%for __plim_key__, __plim_value__ in test(**values).items()")) attrs, tail, source = l.extract_dynamic_tag_attributes("**test**test2", source, False) self.assertTrue(attrs.startswith("\n%for __plim_key__, __plim_value__ in test.items()")) # Test multi-line expression source = l.enumerate_source('**values\n)') attrs, tail, source = l.extract_dynamic_tag_attributes("**test(\n", source, False) self.assertTrue(attrs.startswith("\n%for __plim_key__, __plim_value__ in test(**values).items()"))
def test_stylus(self): source = self.get_file_contents('stylus_test.plim') source = l.enumerate_source(source) _, line = next(source) result = self.get_file_contents('stylus_result.mako') data, _, __, ___ = l.parse_markup_languages(0, '', l.PARSE_EXTENSION_LANGUAGES_RE.match(line), source) self.assertEqual(data.strip(), result.strip())
def test_extract_dynamic_attr_value(self): for terminators in (l.ATTRIBUTE_VALUE_TERMINATORS_WITH_PARENTHESES, l.ATTRIBUTE_VALUE_TERMINATORS): source = l.enumerate_source("") value, tail, _ = l.extract_dynamic_attr_value( "(value in func('test') and 'yes' or 'no')", source, terminators, self.mako_syntax ) assert value == "value in func('test') and 'yes' or 'no'" assert tail == ""
def test_stylus(self): source = self.get_file_contents('stylus_test.html') source = l.enumerate_source(source) _, line = next(source) result = self.get_file_contents('stylus_result.html') data, _, __, ___ = l.parse_markup_languages( 0, '', l.PARSE_EXTENSION_LANGUAGES_RE.match(line), source) self.assertEqual(data.strip(), result.strip())
def test_extract_dynamic_attr_value(self): for terminators in (l.ATTRIBUTE_VALUE_TERMINATORS_WITH_PARENTHESES, l.ATTRIBUTE_VALUE_TERMINATORS): source = l.enumerate_source('') value, tail, _ = l.extract_dynamic_attr_value( "(value in func('test') and 'yes' or 'no')", source, terminators) assert value == "value in func('test') and 'yes' or 'no'" assert tail == ''
def test_coffee(self): source = self.get_file_contents("coffee_test.plim") source = l.enumerate_source(source) _, line = next(source) result = self.get_file_contents("coffee_result.mako") data, _, __, ___ = l.parse_markup_languages( 0, "", self.mako_syntax.PARSE_EXTENSION_LANGUAGES_RE.match(line), source, self.mako_syntax ) self.assertEqual(data.strip(), result.strip())
def test_coffee(self): source = self.get_file_contents('coffee_test.plim') source = l.enumerate_source(source) _, line = next(source) result = self.get_file_contents('coffee_result.mako') data, _, __, ___ = l.parse_markup_languages( 0, '', self.mako_syntax.PARSE_EXTENSION_LANGUAGES_RE.match(line), source, self.mako_syntax) self.assertEqual(data.strip(), result.strip())
def test_extract_ident(self): source = l.enumerate_source('') str_ = '#test' result, _, __ = l.extract_identifier(str_, source) self.assertEqual(result, str_) str_ = '#test ' result, _, __ = l.extract_identifier(str_, source) self.assertNotEqual(result, str_) self.assertEqual(result, str_.strip()) str_ = '#test.class' result, _, __ = l.extract_identifier(str_, source) self.assertNotEqual(result, str_) self.assertEqual(str_[:len(result)], '#test') self.assertEqual(str_[len(result)], '.') str_ = '.test.class' result, _, __ = l.extract_identifier(str_, source, '.') self.assertNotEqual(result, str_) self.assertEqual(str_[:len(result)], '.test') str_ = '.${test.test}.class' result, _, __ = l.extract_identifier(str_, source, '.') self.assertNotEqual(result, str_) self.assertEqual(str_[:len(result)], '.${test.test}') str_ = '.${test.test}test.class' result, _, __ = l.extract_identifier(str_, source, '.') self.assertNotEqual(result, str_) self.assertEqual(str_[:len(result)], '.${test.test}test') str_ = '.test-${test.test}test.class' result, _, __ = l.extract_identifier(str_, source, '.') self.assertNotEqual(result, str_) self.assertEqual(str_[:len(result)], '.test-${test.test}test') str_ = '.test-${test.test + "${{\'test\':1}}"}${test}test.class' result, _, __ = l.extract_identifier(str_, source, '.') self.assertNotEqual(result, str_) self.assertEqual(str_[:len(result)], '.test-${test.test + "${{\'test\':1}}"}${test}test') str_ = u'.абв.где' result, _, __ = l.extract_identifier(str_, source, '.') self.assertNotEqual(result, str_) self.assertEqual(str_[:len(result)], u'.абв')
def test_extract_ident(self): source = l.enumerate_source("") str_ = "#test" result, _, __ = l.extract_identifier(str_, source) self.assertEqual(result, str_) str_ = "#test " result, _, __ = l.extract_identifier(str_, source) self.assertNotEqual(result, str_) self.assertEqual(result, str_.strip()) str_ = "#test.class" result, _, __ = l.extract_identifier(str_, source) self.assertNotEqual(result, str_) self.assertEqual(str_[: len(result)], "#test") self.assertEqual(str_[len(result)], ".") str_ = ".test.class" result, _, __ = l.extract_identifier(str_, source, ".") self.assertNotEqual(result, str_) self.assertEqual(str_[: len(result)], ".test") str_ = ".${test.test}.class" result, _, __ = l.extract_identifier(str_, source, ".") self.assertNotEqual(result, str_) self.assertEqual(str_[: len(result)], ".${test.test}") str_ = ".${test.test}test.class" result, _, __ = l.extract_identifier(str_, source, ".") self.assertNotEqual(result, str_) self.assertEqual(str_[: len(result)], ".${test.test}test") str_ = ".test-${test.test}test.class" result, _, __ = l.extract_identifier(str_, source, ".") self.assertNotEqual(result, str_) self.assertEqual(str_[: len(result)], ".test-${test.test}test") str_ = ".test-${test.test + \"${{'test':1}}\"}${test}test.class" result, _, __ = l.extract_identifier(str_, source, ".") self.assertNotEqual(result, str_) self.assertEqual(str_[: len(result)], ".test-${test.test + \"${{'test':1}}\"}${test}test") str_ = u".абв.где" result, _, __ = l.extract_identifier(str_, source, ".") self.assertNotEqual(result, str_) self.assertEqual(str_[: len(result)], u".абв")
def test_extract_mako_expression(self): str_ = '${x}' source = l.enumerate_source('') result, tail, _ = l.extract_mako_expression(str_, source) self.assertEqual(result, str_) self.assertEqual(str_[:len(result)], str_) str_ = """${{"test\\"":'test}}}'}}""" result, tail, _ = l.extract_mako_expression(str_, source) self.assertEqual(result, str_) self.assertEqual(str_[:len(result)], str_) str_ = """${{"test\\"":{'ddd': 'test}}}', 'eee':{}}}}""" result, tail, _ = l.extract_mako_expression(str_, source) self.assertEqual(result, str_) self.assertEqual(str_[:len(result)], str_) str_ = """{{"test\\"":'test}}}'}}""" result = l.extract_mako_expression(str_, source) self.assertIsNone(result) str_ = """{{"test\\"":'test}}}'}""" result = l.extract_mako_expression(str_, source) self.assertIsNone(result)
def test_parse_tag_attribute(self): def assert_this(str_, parentheses, attr_, tail): source = l.enumerate_source('') result = l.extract_tag_attribute(str_, source, parentheses) self.assertEqual(result[0], attr_) self.assertEqual(tail, result[1]) source = l.enumerate_source('') self.assertEqual(l.extract_tag_attribute("", source), None) self.assertEqual(l.extract_tag_attribute(" ", source), None) self.assertEqual(l.extract_tag_attribute("=", source), None) self.assertEqual(l.extract_tag_attribute(" = ", source), None) self.assertEqual(l.extract_tag_attribute("|", source), None) self.assertEqual(l.extract_tag_attribute("'", source), None) self.assertEqual(l.extract_tag_attribute("()", source, True), None) self.assertEqual(l.extract_tag_attribute(")", source, True), None) assert_this('attr="value"', False, 'attr="value"', '') assert_this('attr=${val}', False, 'attr="${val}"', '') assert_this('attr=(val)', False, 'attr="${val}"', '') # Test digital values assert_this('attr=7 attr2=val', False, 'attr="7"', ' attr2=val') assert_this('attr=.7 attr2=val', False, 'attr=".7"', ' attr2=val') assert_this('attr=-7 attr2=val', False, 'attr="-7"', ' attr2=val') assert_this('attr=+7 attr2=val', False, 'attr="+7"', ' attr2=val') assert_this('attr=-.7 attr2=val', False, 'attr="-.7"', ' attr2=val') assert_this('attr=+.7 attr2=val', False, 'attr="+.7"', ' attr2=val') assert_this('attr=7% attr2=val', False, 'attr="7%"', ' attr2=val') assert_this('attr=10.7 attr2=val', False, 'attr="10.7"', ' attr2=val') assert_this('attr=-10.7 attr2=val', False, 'attr="-10.7"', ' attr2=val') assert_this('attr=+10.7 attr2=val', False, 'attr="+10.7"', ' attr2=val') assert_this('attr=10.107 attr2=val', False, 'attr="10.107"', ' attr2=val') assert_this('attr=107 attr2=val', False, 'attr="107"', ' attr2=val') assert_this('style=c.selected_cover', False, 'style="${c.selected_cover}"', '') assert_this('href=item[\'url\']', False, 'href="${item[\'url\']}"', '') assert_this('value=extra_title[0]', False, 'value="${extra_title[0]}"', '') assert_this('attr=obj.url(request, func("test([\'") + "{test}".format(test="123"), cover[\'image\'])', False, 'attr="${obj.url(request, func("test([\'") + "{test}".format(test="123"), cover[\'image\'])}"', '') assert_this('attr=${val} selected', False, 'attr="${val}"', ' selected') assert_this('attr=(val) selected', False, 'attr="${val}"', ' selected') assert_this('attr=val selected', False, 'attr="${val}"', ' selected') assert_this('attr=_(\'i18n message\') selected', False, 'attr="${_(\'i18n message\')}"', ' selected') assert_this('attr=${val}? selected', False, """${(val) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr=(val)? selected', False, """${(val) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr=val? selected', False, """${(val) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr=${val + 1}? selected', False, """${(val + 1) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr=(val + 1)? selected', False, """${(val + 1) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr="${val}"? selected', False, 'attr="${val}"', '? selected') assert_this('attr="${\\"val\\"}"? selected', False, 'attr="${"val"}"', '? selected') assert_this('attr="value")', True, 'attr="value"', ')') assert_this('attr=${val})', True, 'attr="${val}"', ')') assert_this('attr=(val))', True, 'attr="${val}"', ')') assert_this('attr=${val}?)', True, """${(val) and 'attr="attr"' or ''|n}""", ')') assert_this('attr=(val)?)', True, """${(val) and 'attr="attr"' or ''|n}""", ')') assert_this('attr=(val("test() is a function"))?)', True, """${(val("test() is a function")) and 'attr="attr"' or ''|n}""", ')') assert_this('attr=${val} selected)', True, 'attr="${val}"', ' selected)') assert_this('attr=(val) selected)', True, 'attr="${val}"', ' selected)') assert_this('attr=val) selected', True, 'attr="${val}"', ') selected') assert_this('attr="${\\"val\\"}"?) selected', True, 'attr="${"val"}"', '?) selected') assert_this('attr${attr}attr="${\\"val\\"}"?) selected', True, 'attr${attr}attr="${"val"}"', '?) selected')
def assert_this(str_, parentheses, attr_, tail): source = l.enumerate_source('') result = l.extract_tag_attribute(str_, source, parentheses) self.assertEqual(result[0], attr_) self.assertEqual(tail, result[1])
def test_parse_tag_attribute(self): def assert_this(str_, parentheses, attr_, tail): source = l.enumerate_source('') result = l.extract_tag_attribute(str_, source, parentheses) self.assertEqual(result[0], attr_) self.assertEqual(tail, result[1]) source = l.enumerate_source('') self.assertEqual(l.extract_tag_attribute("", source), None) self.assertEqual(l.extract_tag_attribute(" ", source), None) self.assertEqual(l.extract_tag_attribute("=", source), None) self.assertEqual(l.extract_tag_attribute(" = ", source), None) self.assertEqual(l.extract_tag_attribute("|", source), None) self.assertEqual(l.extract_tag_attribute("'", source), None) self.assertEqual(l.extract_tag_attribute("()", source, True), None) self.assertEqual(l.extract_tag_attribute(")", source, True), None) assert_this('attr="value"', False, 'attr="value"', '') assert_this('attr=${val}', False, 'attr="${val}"', '') assert_this('attr=(val)', False, 'attr="${val}"', '') # Test digital values assert_this('attr=7 attr2=val', False, 'attr="7"', ' attr2=val') assert_this('attr=.7 attr2=val', False, 'attr=".7"', ' attr2=val') assert_this('attr=-7 attr2=val', False, 'attr="-7"', ' attr2=val') assert_this('attr=+7 attr2=val', False, 'attr="+7"', ' attr2=val') assert_this('attr=-.7 attr2=val', False, 'attr="-.7"', ' attr2=val') assert_this('attr=+.7 attr2=val', False, 'attr="+.7"', ' attr2=val') assert_this('attr=7% attr2=val', False, 'attr="7%"', ' attr2=val') assert_this('attr=10.7 attr2=val', False, 'attr="10.7"', ' attr2=val') assert_this('attr=-10.7 attr2=val', False, 'attr="-10.7"', ' attr2=val') assert_this('attr=+10.7 attr2=val', False, 'attr="+10.7"', ' attr2=val') assert_this('attr=10.107 attr2=val', False, 'attr="10.107"', ' attr2=val') assert_this('attr=107 attr2=val', False, 'attr="107"', ' attr2=val') assert_this('style=c.selected_cover', False, 'style="${c.selected_cover}"', '') assert_this('href=item[\'url\']', False, 'href="${item[\'url\']}"', '') assert_this('value=extra_title[0]', False, 'value="${extra_title[0]}"', '') assert_this( 'attr=obj.url(request, func("test([\'") + "{test}".format(test="123"), cover[\'image\'])', False, 'attr="${obj.url(request, func("test([\'") + "{test}".format(test="123"), cover[\'image\'])}"', '') assert_this('attr=${val} selected', False, 'attr="${val}"', ' selected') assert_this('attr=(val) selected', False, 'attr="${val}"', ' selected') assert_this('attr=val selected', False, 'attr="${val}"', ' selected') assert_this('attr=_(\'i18n message\') selected', False, 'attr="${_(\'i18n message\')}"', ' selected') assert_this('attr=${val}? selected', False, """${(val) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr=(val)? selected', False, """${(val) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr=val? selected', False, """${(val) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr=${val + 1}? selected', False, """${(val + 1) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr=(val + 1)? selected', False, """${(val + 1) and 'attr="attr"' or ''|n}""", ' selected') assert_this('attr="${val}"? selected', False, 'attr="${val}"', '? selected') assert_this('attr="${\\"val\\"}"? selected', False, 'attr="${"val"}"', '? selected') assert_this('attr="value")', True, 'attr="value"', ')') assert_this('attr=${val})', True, 'attr="${val}"', ')') assert_this('attr=(val))', True, 'attr="${val}"', ')') assert_this('attr=${val}?)', True, """${(val) and 'attr="attr"' or ''|n}""", ')') assert_this('attr=(val)?)', True, """${(val) and 'attr="attr"' or ''|n}""", ')') assert_this( 'attr=(val("test() is a function"))?)', True, """${(val("test() is a function")) and 'attr="attr"' or ''|n}""", ')') assert_this('attr=${val} selected)', True, 'attr="${val}"', ' selected)') assert_this('attr=(val) selected)', True, 'attr="${val}"', ' selected)') assert_this('attr=val) selected', True, 'attr="${val}"', ') selected') assert_this('attr="${\\"val\\"}"?) selected', True, 'attr="${"val"}"', '?) selected') assert_this('attr${attr}attr="${\\"val\\"}"?) selected', True, 'attr${attr}attr="${"val"}"', '?) selected')