changeset 669:463cd827f567

0.6dev: Cleaning out some old `CommandLine` support methods and trimming tests as `execute()` is now subprocess only, and otherwise self-contained.
author osimons
date Thu, 03 Sep 2009 23:35:10 +0000
parents 9f5e9e0f6ac9
children a9d8359f4dc9
files bitten/build/api.py bitten/build/tests/api.py bitten/build/tests/dummy.py
diffstat 3 files changed, 5 insertions(+), 85 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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:
--- 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())
Copyright (C) 2012-2017 Edgewall Software