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