Ejemplo n.º 1
0
    def _test_spawnAsBatch(self, cmd, comspec):
        def spawnProcess(processProtocol,
                         executable,
                         args=(),
                         env=None,
                         path=None,
                         uid=None,
                         gid=None,
                         usePTY=False,
                         childFDs=None):
            self.assertTrue(args[0].lower().endswith("cmd.exe"),
                            "{0} is not cmd.exe".format(args[0]))

        self.patch(runprocess.reactor, "spawnProcess", spawnProcess)
        tempEnviron = os.environ.copy()
        if 'COMSPEC' not in tempEnviron:
            tempEnviron['COMSPEC'] = comspec
        self.patch(os, "environ", tempEnviron)
        b = FakeWorkerForBuilder(self.basedir)
        s = runprocess.RunProcess(b, cmd, self.basedir)
        s.pp = runprocess.RunProcessPP(s)
        s.deferred = defer.Deferred()
        d = s._spawnAsBatch(s.pp, s.command, "args", tempEnviron, "path",
                            False)
        return d
Ejemplo n.º 2
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())
Ejemplo n.º 3
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())
Ejemplo n.º 4
0
    def test_incrementalDecoder(self):
        s = runprocess.RunProcess(stderrCommand("hello"),
                                  self.basedir,
                                  'utf-8',
                                  self.send_update,
                                  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 self.updates)
        self.assertTrue({'stdout': u"\N{SNOWMAN}"} in self.updates)
        self.assertTrue({'rc': 0} in self.updates, self.show())