Fix PipeReader and PipeReaderTestCase to work with binary strings in py3k.
authorZac Medico <zmedico@gentoo.org>
Fri, 27 Feb 2009 02:43:45 +0000 (02:43 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 27 Feb 2009 02:43:45 +0000 (02:43 -0000)
svn path=/main/trunk/; revision=12720

pym/_emerge/__init__.py
pym/portage/tests/process/test_poll.py

index 0dd1070b2a477ab12a0fd31cdf0a3021605eadb8..83186a91ed88b4d59b6cf55dc456345ec6170541 100644 (file)
@@ -1979,6 +1979,8 @@ class PipeReader(AbstractPollTask):
 
        def getvalue(self):
                """Retrieve the entire contents"""
+               if sys.hexversion >= 0x3000000:
+                       return bytes().join(self._read_data)
                return "".join(self._read_data)
 
        def close(self):
index 9049304104ea061f40012009fabcf30888f5739a..e399c479dbe52529b85966287179783e059034a3 100644 (file)
@@ -28,7 +28,7 @@ class PipeReaderTestCase(TestCase):
                test_string = 2 * "blah blah blah\n"
 
                master_fd, slave_fd = self._create_pipe()
-               master_file = os.fdopen(master_fd, 'r')
+               master_file = os.fdopen(master_fd, 'rb')
 
                task_scheduler = TaskScheduler(max_jobs=2)
                scheduler = task_scheduler.sched_iface
@@ -52,4 +52,7 @@ class PipeReaderTestCase(TestCase):
 
                task_scheduler.run()
 
+               if sys.hexversion >= 0x3000000:
+                       test_string = test_string.encode()
+
                self._assertEqual(test_string, consumer.getvalue())