22
22
from .features import backslashdir_feature
24
25
class TestSplitter(tests.TestCase):
26
27
def assertAsTokens(self, expected, line, single_quotes_allowed=False):
43
44
def test_posix_quotations(self):
44
45
self.assertAsTokens([(True, u'foo bar')], u"'foo bar'",
45
single_quotes_allowed=True)
46
single_quotes_allowed=True)
46
47
self.assertAsTokens([(True, u'foo bar')], u"'fo''o b''ar'",
47
single_quotes_allowed=True)
48
single_quotes_allowed=True)
48
49
self.assertAsTokens([(True, u'foo bar')], u'"fo""o b""ar"',
49
single_quotes_allowed=True)
50
single_quotes_allowed=True)
50
51
self.assertAsTokens([(True, u'foo bar')], u'"fo"\'o b\'"ar"',
51
single_quotes_allowed=True)
52
single_quotes_allowed=True)
53
54
def test_nested_quotations(self):
54
55
self.assertAsTokens([(True, u'foo"" bar')], u"\"foo\\\"\\\" bar\"")
55
56
self.assertAsTokens([(True, u'foo\'\' bar')], u"\"foo'' bar\"")
56
57
self.assertAsTokens([(True, u'foo\'\' bar')], u"\"foo'' bar\"",
57
single_quotes_allowed=True)
58
single_quotes_allowed=True)
58
59
self.assertAsTokens([(True, u'foo"" bar')], u"'foo\"\" bar'",
59
single_quotes_allowed=True)
60
single_quotes_allowed=True)
61
62
def test_empty_result(self):
62
63
self.assertAsTokens([], u'')
74
75
def test_unicode_chars(self):
75
76
self.assertAsTokens([(False, u'f\xb5\xee'), (False, u'\u1234\u3456')],
76
u'f\xb5\xee \u1234\u3456')
77
u'f\xb5\xee \u1234\u3456')
78
79
def test_newline_in_quoted_section(self):
79
80
self.assertAsTokens([(True, u'foo\nbar\nbaz\n')], u'"foo\nbar\nbaz\n"')
80
81
self.assertAsTokens([(True, u'foo\nbar\nbaz\n')], u"'foo\nbar\nbaz\n'",
81
single_quotes_allowed=True)
82
single_quotes_allowed=True)
83
84
def test_escape_chars(self):
84
85
self.assertAsTokens([(False, u'foo\\bar')], u'foo\\bar')
95
96
def test_multiple_quoted_args(self):
96
97
self.assertAsTokens([(True, u'x x'), (True, u'y y')],
98
99
self.assertAsTokens([(True, u'x x'), (True, u'y y')],
99
u'"x x" \'y y\'', single_quotes_allowed=True)
100
u'"x x" \'y y\'', single_quotes_allowed=True)
101
102
def test_n_backslashes_handling(self):
102
103
# https://bugs.launchpad.net/bzr/+bug/528944