def __init__(self, task, cmdline, stdout=None, stderr=None, expected=DEFAULT, timeout=DEFAULT, signal=None, cwd=None, env={}): self._returncode = None self.interpolator = Interpolator() self.cmdline = self.interpolator.apply(checked_type(str, cmdline)) self._set_expected(expected) super(Command, self).__init__(task) self._stdout = self.interpolator.apply(stdout) self._stderr = self.interpolator.apply(stderr) self._set_cwd(cwd) self.tinit = self.tend = None self._set_timeout(timeout) self._set_signal(signal) self._set_env(env) self.sp = None self._enable_outs_if_requested() if self.timeout is None and not self.task.detach: self.log.warning( '%s$name %sNo timeout command in a non detached task could block forever!%s', INDENTST, term().bold_red, term().normal)
def set_reason(self, status, reason): self.status = status self.reason = checked_type(Assertion, reason) reason.log_status()
def __init__(self, name): self.name = checked_type(str, name)
def _set_env(self, env): self.env = os.environ.copy() context_env = checked_type(dict, gvars.context.get('env', {})) self.env.update(context_env) self.env.update((str(k), str(v)) for k, v in env.items())
def _set_signal(self, signal): signum = signal or gvars.context.get('signal', SIGTERM) self.signal = checked_type(int, signum)
def _set_timeout(self, timeout): if timeout == DEFAULT: timeout = gvars.context.get('timeout', 5) self.timeout = checked_type((int, NoneType), timeout)
def _set_expected(self, expected): if expected == DEFAULT: expected = gvars.context.get('expected', 0) self.expected = checked_type((int, NoneType), expected)
def _set_cwd(self, cwd): cwd = cwd or gvars.context.get('cwd', '.') self.cwd = self.interpolator.apply(checked_type(str, cwd))
def _matches(self, cmd): self.cmd = checked_type(Command, cmd) return hamcrest.is_(self.expected).matches(cmd.elapsed())
def _matches(self, cmd): self.cmd = checked_type(Command, cmd) return self.cmd.returncode == self.expected
def from_fd(cls, fd): "Creates prego.File from standard python file descriptor" fd = checked_type(file_types, fd) assert not fd.closed, fd return File(fd.name, fd)
def __init__(self, path, fd=None): self.path = Interpolator().apply(checked_type(str, path)) self.fd = fd