Example #1
0
 def testInvalidUTF8(self):
     b = FakeWorkerForBuilder(self.basedir)
     b.unicode_encoding = "utf-8"
     s = runprocess.RunProcess(
         b, stderrCommand("hello"), self.basedir, sendStderr=True)
     pp = runprocess.RunProcessPP(s)
     INVALID_UTF8 = b"\xff"
     with self.assertRaises(UnicodeDecodeError):
         INVALID_UTF8.decode('utf-8')
     pp.outReceived(INVALID_UTF8)
     yield s.start()
     stdout = [up['stdout'] for up in b.updates if 'stdout' in up][0]
     # On Python < 2.7 bytes is used, on Python >= 2.7 unicode
     self.assertIn(stdout, (b'\xef\xbf\xbd', u'\ufffd'))
     self.assertTrue({'rc': 0} in b.updates, b.show())
Example #2
0
    def test_incrementalDecoder(self):
        b = FakeWorkerForBuilder(self.basedir)
        b.unicode_encoding = "utf-8"
        s = runprocess.RunProcess(
            b, stderrCommand("hello"), self.basedir, sendStderr=True)
        pp = runprocess.RunProcessPP(s)
        # u"\N{SNOWMAN} when encoded to utf-8 bytes is b"\xe2\x98\x83"
        pp.outReceived(b"\xe2")
        pp.outReceived(b"\x98\x83")
        pp.errReceived(b"\xe2")
        pp.errReceived(b"\x98\x83")
        yield s.start()

        self.assertTrue({'stderr': u"\N{SNOWMAN}"} in b.updates)
        self.assertTrue({'stdout': u"\N{SNOWMAN}"} in b.updates)
        self.assertTrue({'rc': 0} in b.updates, b.show())