| 1 | #!/usr/bin/env python2
|
| 2 | from __future__ import print_function
|
| 3 |
|
| 4 | import unittest
|
| 5 |
|
| 6 | from builtin import read_osh # module under test
|
| 7 | from osh import split
|
| 8 |
|
| 9 |
|
| 10 | class BuiltinTest(unittest.TestCase):
|
| 11 |
|
| 12 | def testAppendParts(self):
|
| 13 | # allow_escape is True by default, but False when the user passes -r.
|
| 14 | CASES = [
|
| 15 | (['Aa', 'b', ' a b'], 100, 'Aa b \\ a\\ b'),
|
| 16 | (['a', 'b', 'c'], 3, 'a b c '),
|
| 17 | ]
|
| 18 |
|
| 19 | for expected_parts, max_results, line in CASES:
|
| 20 | sp = split.IfsSplitter(split.DEFAULT_IFS, '')
|
| 21 | spans = sp.Split(line, True)
|
| 22 | print('--- %r' % line)
|
| 23 | for span in spans:
|
| 24 | print(' %s %s' % span)
|
| 25 |
|
| 26 | parts = []
|
| 27 | read_osh._AppendParts(line, spans, max_results, False, parts)
|
| 28 | strs = [buf.getvalue() for buf in parts]
|
| 29 | self.assertEqual(expected_parts, strs)
|
| 30 |
|
| 31 | print('---')
|
| 32 |
|
| 33 |
|
| 34 | if __name__ == '__main__':
|
| 35 | unittest.main()
|