from django.template.defaultfilters import addslashes from django.test import SimpleTestCase from django.utils.safestring import mark_safe from ..utils import setup class AddslashesTests(SimpleTestCase): @setup( { "addslashes01": ( "{% autoescape off %}{{ a|addslashes }} {{ b|addslashes }}" "{% endautoescape %}" ) } ) def test_addslashes01(self): output = self.engine.render_to_string( "addslashes01", {"a": "'", "b": mark_safe("'")} ) self.assertEqual(output, r"\' \'") @setup({"addslashes02": "{{ a|addslashes }} {{ b|addslashes }}"}) def test_addslashes02(self): output = self.engine.render_to_string( "addslashes02", {"a": "'", "b": mark_safe("'")} ) self.assertEqual(output, r"<a>\' \'") class FunctionTests(SimpleTestCase): def test_quotes(self): self.assertEqual( addslashes("\"double quotes\" and 'single quotes'"), "\\\"double quotes\\\" and \\'single quotes\\'", ) def test_backslashes(self): self.assertEqual(addslashes(r"\ : backslashes, too"), "\\\\ : backslashes, too") def test_non_string_input(self): self.assertEqual(addslashes(123), "123")