# HG changeset patch # User osimons # Date 1252020910 0 # Node ID 463cd827f5670eba3257277d794cffbb260232d9 # Parent 9f5e9e0f6ac90cf8764e499f0107fd2f27ac8849 0.6dev: Cleaning out some old `CommandLine` support methods and trimming tests as `execute()` is now subprocess only, and otherwise self-contained. diff --git a/bitten/build/api.py b/bitten/build/api.py --- a/bitten/build/api.py +++ b/bitten/build/api.py @@ -32,22 +32,6 @@ """Exception raised when the execution of a command times out.""" -def _combine(*iterables): - iterables = [iter(iterable) for iterable in iterables] - size = len(iterables) - while True: - to_yield = [None] * size - for idx, iterable in enumerate(iterables): - if iterable is None: - continue - try: - to_yield[idx] = iterable.next() - except StopIteration: - iterables[idx] = None - if not [iterable for iterable in iterables if iterable is not None]: - break - yield tuple(to_yield) - def _encode(text): """Encode input for call. Input must be unicode or utf-8 string.""" if not isinstance(text, unicode): @@ -167,28 +151,6 @@ log.debug('%s exited with code %s', self.executable, self.returncode) - def _extract_lines(self, data): - extracted = [] - def _endswith_linesep(string): - for linesep in ('\n', '\r\n', '\r'): - if string.endswith(linesep): - return True - buf = ''.join(data) - lines = buf.splitlines(True) - if len(lines) > 1: - extracted += lines[:-1] - if _endswith_linesep(lines[-1]): - extracted.append(lines[-1]) - buf = '' - else: - buf = lines[-1] - elif _endswith_linesep(buf): - extracted.append(buf) - buf = '' - data[:] = [buf] * bool(buf) - - return [line.rstrip() for line in extracted] - class FileSet(object): """Utility class for collecting a list of files in a directory that match diff --git a/bitten/build/tests/api.py b/bitten/build/tests/api.py --- a/bitten/build/tests/api.py +++ b/bitten/build/tests/api.py @@ -14,13 +14,7 @@ import tempfile import unittest -try: - has_subprocess = __import__('subprocess') and True -except: - has_subprocess = False - from bitten.build import CommandLine, FileSet, TimeoutError, BuildError -from bitten.build.api import _combine class CommandLineTestCase(unittest.TestCase): @@ -39,33 +33,6 @@ fd.close() return filename - def test_extract_lines(self): - cmdline = CommandLine('test', []) - data = ['foo\n', 'bar\n'] - lines = cmdline._extract_lines(data) - self.assertEqual(['foo', 'bar'], lines) - self.assertEqual([], data) - - def test_extract_lines_spanned(self): - cmdline = CommandLine('test', []) - data = ['foo ', 'bar\n'] - lines = cmdline._extract_lines(data) - self.assertEqual(['foo bar'], lines) - self.assertEqual([], data) - - def test_extract_lines_trailing(self): - cmdline = CommandLine('test', []) - data = ['foo\n', 'bar'] - lines = cmdline._extract_lines(data) - self.assertEqual(['foo'], lines) - self.assertEqual(['bar'], data) - - def test_combine(self): - list1 = ['foo', 'bar'] - list2 = ['baz'] - combined = list(_combine(list1, list2)) - self.assertEqual([('foo', 'baz'), ('bar', None)], combined) - def test_single_argument(self): cmdline = CommandLine(sys.executable, ['-V']) stdout = [] @@ -78,10 +45,6 @@ py_version = '.'.join([str(v) for (v) in sys.version_info[:3]] ).rstrip('.0') - # NT without subprocess doesn't split stderr and stdout. See #256. - if not has_subprocess and os.name == "nt": - return - self.assertEqual(['Python %s' % py_version], stderr) self.assertEqual([], stdout) self.assertEqual(0, cmdline.returncode) @@ -119,9 +82,7 @@ stdout.append(out) stderr.append(err) py_version = '.'.join([str(v) for (v) in sys.version_info[:3]]) - # nt doesn't properly split stderr and stdout. See ticket #256. - if has_subprocess or os.name != "nt": - self.assertEqual(['Hello', 'world!', None], stdout) + self.assertEqual(['Hello', 'world!', None], stdout) self.assertEqual(0, cmdline.returncode) def test_input_stream_as_fileobj(self): @@ -173,14 +134,9 @@ """) cmdline = CommandLine('python', [script_file]) iterable = iter(cmdline.execute(timeout=.5)) - if has_subprocess or os.name != "nt": - # commandline timeout not implemented on windows. See #257 - self.assertRaises(TimeoutError, iterable.next) + self.assertRaises(TimeoutError, iterable.next) def test_nonexisting_command(self): - if not has_subprocess: - # Test only valid for subprocess execute() - return cmdline = CommandLine('doesnotexist', []) iterable = iter(cmdline.execute()) try: diff --git a/bitten/build/tests/dummy.py b/bitten/build/tests/dummy.py --- a/bitten/build/tests/dummy.py +++ b/bitten/build/tests/dummy.py @@ -24,4 +24,6 @@ return self def execute(self): - return api._combine(self.stdout.readlines(), self.stderr.readlines()) + return map(lambda x,y: (x,y), + self.stdout.readlines(), + self.stderr.readlines())