def testCmdErr(self): "handling of pipes when process has error" er = ExRun(verbFlags=set()) ifp = er.getFile(self.getInputFile("numbers.txt")) ofp1 = er.getFile(self.getOutputFile(".txt.gz")) ofp2 = er.getFile(self.getOutputFile(".txt")) r1 = er.addCmd((["sort", "-r", FileIn(ifp)], ["tee", FileOut(ofp1)]), stdout="/dev/null") r2 = er.addCmd((["zcat", FileIn(ofp1, autoDecompress=False)], ["false"]), stdout=FileOut(ofp2)) ex = None try: er.run() except ExRunException as ex: self.failUnlessEqual("Experiment failed: 1 error(s) encountered", str(ex)) ex1 = er.errors[0] self.failUnless(isinstance(ex1, ExRunException)) ex2 = ex1.cause self.failUnless(isinstance(ex2, ExRunException)) ex3 = ex2.cause self.failUnless(isinstance(ex3, ProcException)) exre = "process exited 1: false" self.failUnless(str(ex3),exre) if ex == None: self.fail("expected ProcException") self.checkGraphStates(er, ((ofp1, ProdState.current), (ofp2, ProdState.failed), (r1, RuleState.ok), (r2, RuleState.failed)))
def testCmdErr(self): "handling of pipes when process has error" er = ExRun(verbFlags=set()) ifp = er.getFile(self.getInputFile("numbers.txt")) ofp1 = er.getFile(self.getOutputFile(".txt.gz")) ofp2 = er.getFile(self.getOutputFile(".txt")) r1 = er.addCmd( (["sort", "-r", FileIn(ifp)], ["tee", FileOut(ofp1)]), stdout="/dev/null") r2 = er.addCmd( (["zcat", FileIn(ofp1, autoDecompress=False)], ["false"]), stdout=FileOut(ofp2)) ex = None try: er.run() except ExRunException as ex: self.failUnlessEqual("Experiment failed: 1 error(s) encountered", str(ex)) ex1 = er.errors[0] self.failUnless(isinstance(ex1, ExRunException)) ex2 = ex1.cause self.failUnless(isinstance(ex2, ExRunException)) ex3 = ex2.cause self.failUnless(isinstance(ex3, ProcException)) exre = "process exited 1: false" self.failUnless(str(ex3), exre) if ex == None: self.fail("expected ProcException") self.checkGraphStates(er, ((ofp1, ProdState.current), (ofp2, ProdState.failed), (r1, RuleState.ok), (r2, RuleState.failed)))
def __mkDependOnNoDepend(self, priFile, secFile, secContents): ex = ExRun(verbFlags=verbFlags) priFp = ex.getFile(priFile) secFp = ex.getFile(secFile) ex.addCmd(["touch", FileOut(priFp)]) ex.addCmd(["echo", secContents], requires=priFp, stdout=secFp) ex.run() return ex
def testCmdSigPipe(self): "test command recieving SIGPIPE with no error" er = ExRun(verbFlags=verbFlags) ofp = er.getFile(self.getOutputFile(".txt")) er.addCmd((["yes"], ["true"]), stdout=FileOut(ofp)) ex = None try: er.run() except Exception as ex: prExceptions(er, ex) raise self.checkGraphStates(er)
def testArgs(self): er = ExRun(verbFlags=verbFlags) ifp = er.getFile(self.getInputFile("numbers.txt")) ofp1 = er.getFile(self.getOutputFile(".txt.gz")) ofp2 = er.getFile(self.getOutputFile(".txt")) er.addCmd((["sort", "-r", FileIn(ifp)], ["tee", FileOut(ofp1)]), stdout="/dev/null") er.addCmd(["sed", "-e", "s/^/= /", FileIn(ofp1)], stdout=FileOut(ofp2)) try: er.run() except Exception as ex: prExceptions(er, ex) raise self.diffExpected(".txt") self.checkGraphStates(er)
def testStdio(self): er = ExRun(verbFlags=verbFlags) ifp = er.getFile(self.getInputFile("numbers.txt")) ofp1 = er.getFile(self.getOutputFile(".txt.gz")) ofp2 = er.getFile(self.getOutputFile(".txt")) er.addCmd(["sort", "-r"], stdin=ifp, stdout=ofp1) er.addCmd((["zcat", FileIn(ofp1, autoDecompress=False)], ["sed", "-e", "s/^/= /"]), stdout=ofp2) try: er.run() except Exception as ex: prExceptions(er, ex) raise self.diffExpected(".txt") self.checkGraphStates(er)
def testStdio(self): er = ExRun(verbFlags=verbFlags) ifp = er.getFile(self.getInputFile("numbers.txt")) ofp1 = er.getFile(self.getOutputFile(".txt.gz")) ofp2 = er.getFile(self.getOutputFile(".txt")) er.addCmd(["sort", "-r"], stdin=ifp, stdout=ofp1) er.addCmd((["zcat", FileIn(ofp1, autoDecompress=False) ], ["sed", "-e", "s/^/= /"]), stdout=ofp2) try: er.run() except Exception as ex: prExceptions(er, ex) raise self.diffExpected(".txt") self.checkGraphStates(er)