/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_cmdline.py

  • Committer: Jelmer Vernooij
  • Date: 2020-04-05 19:11:34 UTC
  • mto: (7490.7.16 work)
  • mto: This revision was merged to the branch mainline in revision 7501.
  • Revision ID: jelmer@jelmer.uk-20200405191134-0aebh8ikiwygxma5
Populate the .gitignore file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
 
18
 
from bzrlib import (
 
18
from .. import (
19
19
    cmdline,
20
 
    tests)
 
20
    tests,
 
21
    )
 
22
from .features import backslashdir_feature
 
23
 
21
24
 
22
25
class TestSplitter(tests.TestCase):
23
26
 
40
43
 
41
44
    def test_posix_quotations(self):
42
45
        self.assertAsTokens([(True, u'foo bar')], u"'foo bar'",
43
 
            single_quotes_allowed=True)
 
46
                            single_quotes_allowed=True)
44
47
        self.assertAsTokens([(True, u'foo bar')], u"'fo''o b''ar'",
45
 
            single_quotes_allowed=True)
 
48
                            single_quotes_allowed=True)
46
49
        self.assertAsTokens([(True, u'foo bar')], u'"fo""o b""ar"',
47
 
            single_quotes_allowed=True)
 
50
                            single_quotes_allowed=True)
48
51
        self.assertAsTokens([(True, u'foo bar')], u'"fo"\'o b\'"ar"',
49
 
            single_quotes_allowed=True)
 
52
                            single_quotes_allowed=True)
50
53
 
51
54
    def test_nested_quotations(self):
52
55
        self.assertAsTokens([(True, u'foo"" bar')], u"\"foo\\\"\\\" bar\"")
53
56
        self.assertAsTokens([(True, u'foo\'\' bar')], u"\"foo'' bar\"")
54
57
        self.assertAsTokens([(True, u'foo\'\' bar')], u"\"foo'' bar\"",
55
 
            single_quotes_allowed=True)
 
58
                            single_quotes_allowed=True)
56
59
        self.assertAsTokens([(True, u'foo"" bar')], u"'foo\"\" bar'",
57
 
            single_quotes_allowed=True)
 
60
                            single_quotes_allowed=True)
58
61
 
59
62
    def test_empty_result(self):
60
63
        self.assertAsTokens([], u'')
64
67
        self.assertAsTokens([(True, '')], u'""')
65
68
        self.assertAsTokens([(False, u"''")], u"''")
66
69
        self.assertAsTokens([(True, '')], u"''", single_quotes_allowed=True)
 
70
        self.assertAsTokens([(False, u'a'), (True, u''), (False, u'c')],
 
71
                            u'a "" c')
 
72
        self.assertAsTokens([(False, u'a'), (True, u''), (False, u'c')],
 
73
                            u"a '' c", single_quotes_allowed=True)
67
74
 
68
75
    def test_unicode_chars(self):
69
76
        self.assertAsTokens([(False, u'f\xb5\xee'), (False, u'\u1234\u3456')],
70
 
                             u'f\xb5\xee \u1234\u3456')
 
77
                            u'f\xb5\xee \u1234\u3456')
71
78
 
72
79
    def test_newline_in_quoted_section(self):
73
80
        self.assertAsTokens([(True, u'foo\nbar\nbaz\n')], u'"foo\nbar\nbaz\n"')
74
81
        self.assertAsTokens([(True, u'foo\nbar\nbaz\n')], u"'foo\nbar\nbaz\n'",
75
 
            single_quotes_allowed=True)
 
82
                            single_quotes_allowed=True)
76
83
 
77
84
    def test_escape_chars(self):
78
85
        self.assertAsTokens([(False, u'foo\\bar')], u'foo\\bar')
88
95
 
89
96
    def test_multiple_quoted_args(self):
90
97
        self.assertAsTokens([(True, u'x x'), (True, u'y y')],
91
 
            u'"x x" "y y"')
 
98
                            u'"x x" "y y"')
92
99
        self.assertAsTokens([(True, u'x x'), (True, u'y y')],
93
 
            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):
 
103
        # https://bugs.launchpad.net/bzr/+bug/528944
 
104
        # actually we care about the doubled backslashes when they're
 
105
        # represents UNC paths.
 
106
        # But in fact there is too much weird corner cases
 
107
        # (see https://bugs.launchpad.net/tortoisebzr/+bug/569050)
 
108
        # so to reproduce every bit of windows command-line handling
 
109
        # could be not worth of efforts?
 
110
        self.requireFeature(backslashdir_feature)
 
111
        self.assertAsTokens([(True, r'\\host\path')], r'"\\host\path"')
 
112
        self.assertAsTokens([(False, r'\\host\path')], r'\\host\path')
 
113
        # handling of " after the 2n and 2n+1 backslashes
 
114
        # inside and outside the quoted string
 
115
        self.assertAsTokens([(True, r'\\'), (False, r'*.py')], r'"\\\\" *.py')
 
116
        self.assertAsTokens([(True, r'\\" *.py')], r'"\\\\\" *.py"')
 
117
        self.assertAsTokens([(True, r'\\ *.py')], r'\\\\" *.py"')
 
118
        self.assertAsTokens([(False, r'\\"'), (False, r'*.py')],
 
119
                            r'\\\\\" *.py')
 
120
        self.assertAsTokens([(True, u'\\\\')], u'"\\\\')