def testExitCode(self): nopen = self.numOpenFiles() pl = Popen(("false",)) with self.assertRaisesRegex(ProcessException, "^process exited 1: false$"): pl.wait() for p in pl.procs: self.assertTrue(p.returncode == 1) self.commonChecks(nopen, pl, "^false >.+$", isRe=True)
def testRead(self): nopen = self.numOpenFiles() inf = self.getInputFile("simple1.txt") infGz = self.getOutputFile(".txt.gz") Pipeline(("gzip", "-c", inf), stdout=infGz).wait() pl = Popen(("gzip", "-dc"), "r", stdin=infGz) self.cpPlToFile(pl, ".out") pl.wait() self.diffExpected(".out") self.commonChecks(nopen, pl, "^gzip -dc <.*output/test_pipettor.PopenTests.testRead.txt.gz >.+$", isRe=True)
def testWrite(self): nopen = self.numOpenFiles() outf = self.getOutputFile(".out") outfGz = self.getOutputFile(".out.gz") pl = Popen(("gzip", "-1"), "w", stdout=outfGz) self.cpFileToPl("simple1.txt", pl) pl.close() self.commonChecks(nopen, pl, "gzip -1 <.+ >.*output/test_pipettor.PopenTests.testWrite.out.gz", isRe=True) Pipeline(("zcat", outfGz), stdout=outf).wait() self.diffExpected(".out")
def testReadMult(self): nopen = self.numOpenFiles() inf = self.getInputFile("simple1.txt") pl = Popen((("gzip", "-1c"), ("gzip", "-dc"), ("wc",), ("sed", "-e", "s/ */\t/g")), "r", stdin=inf) self.cpPlToFile(pl, ".wc") pl.wait() self.diffExpected(".wc") self.commonChecks(nopen, pl, "^gzip -1c <.*tests/input/simple1.txt | gzip -dc | wc | sed -e 's/ \\*/ /g' >.+$", isRe=True)
def testWriteMult(self): nopen = self.numOpenFiles() outf = self.getOutputFile(".wc") # grr, BSD wc adds an extract space, so just convert to tabs pl = Popen((("gzip", "-1"), ("gzip", "-dc"), ("wc",), ("sed", "-e", "s/ */\t/g")), "w", stdout=outf) self.cpFileToPl("simple1.txt", pl) pl.wait() self.diffExpected(".wc") self.commonChecks(nopen, pl, "^gzip -1 <.+ | gzip -dc | wc | sed -e 's/ \\*/ /g' >.*output/test_pipettor.PopenTests.testWriteMult.wc$", isRe=True)
def testReadAsAsciiReplace(self): # file contains unicode character outside of the ASCII range nopen = self.numOpenFiles() inf = self.getInputFile("nonAscii.txt") with Popen(["cat", inf], encoding='latin-1', errors="replace") as fh: lines = [l[:-1] for l in fh] self.assertEqual(['Microtubules are assembled from dimers of a- and \xc3\x9f-tubulin.'], lines) self.orphanChecks(nopen)
def testSigPipe(self): # test not reading all of pipe output nopen = self.numOpenFiles() pl = Popen([("yes",), ("true",)], "r") pl.wait() self.commonChecks(nopen, pl, "^yes | true >.+ 2>\\[DataReader\\]$", isRe=True)
def testReadMac(self): with Popen(("cat", self.getInputFile("simple1.mac.txt")), mode="r") as fh: lines = [l for l in fh] self.assertEqual(lines, self.simpleOneLines)