Clean up and simplify PipeReaderTestCase.
authorZac Medico <zmedico@gentoo.org>
Sun, 5 Sep 2010 11:54:48 +0000 (04:54 -0700)
committerZac Medico <zmedico@gentoo.org>
Sun, 5 Sep 2010 11:55:32 +0000 (04:55 -0700)
pym/portage/tests/process/test_poll.py

index 19cc057104ae75e1f2f0c8faaea53e009fb36a22..579acf9071c9cf4cd8782ba16ae25f113e933187 100644 (file)
@@ -1,7 +1,6 @@
-# Copyright 1998-2008 Gentoo Foundation
+# Copyright 1998-2010 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
-import sys
 from portage import os
 from portage.tests import TestCase
 from _emerge.TaskScheduler import TaskScheduler
@@ -10,12 +9,6 @@ from _emerge.SpawnProcess import SpawnProcess
 
 class PipeReaderTestCase(TestCase):
 
-       def _create_pipe(self):
-               return os.pipe()
-
-       def _assertEqual(self, test_string, consumer_value):
-               self.assertEqual(test_string, consumer_value)
-
        def testPipeReader(self):
                """
                Use a poll loop to read data from a pipe and assert that
@@ -25,32 +18,22 @@ class PipeReaderTestCase(TestCase):
 
                test_string = 2 * "blah blah blah\n"
 
-               master_fd, slave_fd = self._create_pipe()
+               task_scheduler = TaskScheduler()
+               master_fd, slave_fd = os.pipe()
                master_file = os.fdopen(master_fd, 'rb')
-
-               task_scheduler = TaskScheduler(max_jobs=2)
-               scheduler = task_scheduler.sched_iface
-
-               class Producer(SpawnProcess):
-                       def _spawn(self, args, **kwargs):
-                               rval = SpawnProcess._spawn(self, args, **kwargs)
-                               os.close(kwargs['fd_pipes'][1])
-                               return rval
-
-               producer = Producer(
+               slave_file = os.fdopen(slave_fd, 'wb')
+               producer = SpawnProcess(
                        args=["bash", "-c", "echo -n '%s'" % test_string],
-                       fd_pipes={1:slave_fd}, scheduler=scheduler)
+                       env=os.environ, fd_pipes={1:slave_fd},
+                       scheduler=task_scheduler.sched_iface)
+               producer.start()
+               slave_file.close()
 
                consumer = PipeReader(
                        input_files={"producer" : master_file},
-                       scheduler=scheduler)
+                       scheduler=task_scheduler.sched_iface)
 
-               task_scheduler.add(producer)
                task_scheduler.add(consumer)
-
                task_scheduler.run()
-
-               if sys.hexversion >= 0x3000000:
-                       test_string = test_string.encode()
-
-               self._assertEqual(test_string, consumer.getvalue())
+               output = consumer.getvalue().decode('ascii', 'replace')
+               self.assertEqual(test_string, output)