def test_write_and_close(self): f = StringIO() faketime = lambda: time.gmtime(0) ps = ProcStream(f, 7, _gettime=faketime) ps.info('Whee%s', '!') ps.out.write('foo') ps.err.write('bar\n') ps.out.write('quz\n') ps.err.write('oops') ps.info('done') expected = """\ 1970-01-01T00:00:00+0000 7 * Whee! 1970-01-01T00:00:00+0000 7 ! bar 1970-01-01T00:00:00+0000 7 - fooquz 1970-01-01T00:00:00+0000 7 * done """ self.assertEqual(expected, f.getvalue()) ps.close() expected += """\ 1970-01-01T00:00:00+0000 7 ! oops """ self.assertEqual(expected, f.getvalue())
def __init__(self, outstream, args, tmpl=DefaultTemplate, params=None, _popen=subprocess.Popen, _gettime=time.gmtime, ): self._gettime = _gettime self._starttime = time.mktime(_gettime()) self._proc = _popen( args, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) self._ps = ProcStream( outstream, self._proc.pid, tmpl, params, _gettime=_gettime) self._writers = { self._proc.stdout: self._ps.out, self._proc.stderr: self._ps.err, } self._ps.info('Launched with args: %r', args)