~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/script.py

(jelmer) Add ControlDirFormat.supports_workingtrees cvar. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
    Input lines start with '<'.
57
57
    Output lines start with nothing.
58
58
    Error lines start with '2>'.
59
 
 
60
 
    :return: A sequence of ([args], input, output, errors), where the args are
61
 
        split in to words, and the input, output, and errors are just strings,
62
 
        typically containing newlines.
63
59
    """
64
60
 
65
61
    commands = []
79
75
    lineno = 0
80
76
    input, output, error = None, None, None
81
77
    text = textwrap.dedent(text)
82
 
    lines = text.split('\n')
83
 
    # to make use of triple-quoted strings easier, we ignore a blank line
84
 
    # right at the start and right at the end; the rest are meaningful
85
 
    if lines and lines[0] == '':
86
 
        del lines[0]
87
 
    if lines and lines[-1] == '':
88
 
        del lines[-1]
89
 
    for line in lines:
 
78
    for line in text.split('\n'):
90
79
        lineno += 1
91
80
        # Keep a copy for error reporting
92
81
        orig = line
93
82
        comment =  line.find('#')
94
83
        if comment >= 0:
95
84
            # Delete comments
96
 
            # NB: this syntax means comments are allowed inside output, which
97
 
            # may be confusing...
98
85
            line = line[0:comment]
99
86
            line = line.rstrip()
100
 
            if line == '':
101
 
                continue
 
87
        if line == '':
 
88
            # Ignore empty lines
 
89
            continue
102
90
        if line.startswith('$'):
103
91
            # Time to output the current command
104
92
            add_command(cmd_cur, input, output, error)
244
232
            # 'expected' parameter. So we just fallback to our good old
245
233
            # assertEqualDiff since we know there *are* differences and the
246
234
            # output should be decently readable.
247
 
            #
248
 
            # As a special case, we allow output that's missing a final
249
 
            # newline to match an expected string that does have one, so that
250
 
            # we can match a prompt printed on one line, then input given on
251
 
            # the next line.
252
 
            if expected == actual + '\n':
253
 
                pass
254
 
            else:
255
 
                test_case.assertEqualDiff(expected, actual)
 
235
            test_case.assertEqualDiff(expected, actual)
256
236
 
257
237
    def _pre_process_args(self, args):
258
238
        new_args = []