def test_fd_tee_output(capsys): expected_lines = { "captured stdout", "captured stderr", "stdout from C", "and this is from echo" } capture_mode, capture_stdout = get_stdcapturer("fd") output = "" with capsys.disabled(): print('before (stdout)') print('before (stderr)') with capture_stdout() as out: print("captured stdout") print("captured stderr") output += out.get() libc.puts(b'stdout from C') libc.fflush(None) os.system('echo and this is from echo') output += out.get() output += out.get() print('after (stdout)') print('after (stderr)') assert set(output.strip().split("\n")) == expected_lines
def test_fd_tee_output(capsys): expected_lines = { "captured stdout", "captured stderr", "stdout from C", "and this is from echo"} capture_mode, capture_stdout = get_stdcapturer("fd") output = "" with capsys.disabled(): print('before (stdout)') print('before (stderr)') with capture_stdout() as out: print("captured stdout") print("captured stderr", file=sys.stderr) output += out.get() libc.puts(b'stdout from C') libc.fflush(None) os.system('echo and this is from echo') output += out.get() output += out.get() print('after (stdout)') print('after (stderr)') assert set(output.strip().split("\n")) == expected_lines
def test_fd_tee_output(capsys): expected_lines = { "captured stdout", "captured stderr", "stdout from C", "and this is from echo", "keep\rcarriage\rreturns", } capture_mode, capture_stdout = get_stdcapturer("fd") output = "" with capsys.disabled(): print("before (stdout)") print("before (stderr)") with capture_stdout() as out: print("captured stdout") print("captured stderr", file=sys.stderr) print("keep\rcarriage\rreturns") output += out.get() libc.puts(b"stdout from C") libc.fflush(None) os.system("echo and this is from echo") output += out.get() output += out.get() print("after (stdout)") print("after (stderr)") assert set(output.strip().split("\n")) == expected_lines
def test_python_tee_output(capsys): expected_lines = {"captured stdout", "captured stderr"} capture_mode, capture_stdout = get_stdcapturer("sys") with capsys.disabled(): print('before (stdout)') print('before (stderr)') with capture_stdout() as out: print("captured stdout") print("captured stderr") output = out.get() print('after (stdout)') print('after (stderr)') assert set(output.strip().split("\n")) == expected_lines
def test_python_tee_output(capsys): expected_lines = { "captured stdout", "captured stderr"} capture_mode, capture_stdout = get_stdcapturer("sys") with capsys.disabled(): print('before (stdout)') print('before (stderr)') with capture_stdout() as out: print("captured stdout") print("captured stderr") output = out.get() print('after (stdout)') print('after (stderr)') assert set(output.strip().split("\n")) == expected_lines
def __call__(self, *args): r"""Start this run. Parameters ---------- \*args parameters passed to the main function Returns ------- the return value of the main function """ if self.start_time is not None: raise RuntimeError('A run can only be started once. ' '(Last start was {})'.format(self.start_time)) if self.unobserved: self.observers = [] else: self.observers = sorted(self.observers, key=lambda x: -x.priority) self.warn_if_unobserved() set_global_seed(self.config['seed']) if self.capture_mode is None and not self.observers: capture_mode = "no" else: capture_mode = self.capture_mode capture_mode, capture_stdout = get_stdcapturer(capture_mode) self.run_logger.debug('Using capture mode "%s"', capture_mode) if self.queue_only: self._emit_queued() return try: with capture_stdout() as self._output_file: self._emit_started() self._start_heartbeat() self._execute_pre_run_hooks() self.result = self.main_function(*args) self._execute_post_run_hooks() if self.result is not None: self.run_logger.info('Result: {}'.format(self.result)) elapsed_time = self._stop_time() self.run_logger.info('Completed after %s', elapsed_time) self._get_captured_output() self._stop_heartbeat() self._emit_completed(self.result) except (SacredInterrupt, KeyboardInterrupt) as e: self._stop_heartbeat() status = getattr(e, 'STATUS', 'INTERRUPTED') self._emit_interrupted(status) raise except Exception: exc_type, exc_value, trace = sys.exc_info() self._stop_heartbeat() self._emit_failed(exc_type, exc_value, trace.tb_next) raise finally: self._warn_about_failed_observers() return self.result
def __call__(self, *args): r"""Start this run. Parameters ---------- \*args parameters passed to the main function Returns ------- the return value of the main function """ if self.start_time is not None: raise RuntimeError('A run can only be started once. ' '(Last start was {})'.format(self.start_time)) if self.unobserved: self.observers = [] else: self.observers = sorted(self.observers, key=lambda x: -x.priority) self.warn_if_unobserved() set_global_seed(self.config['seed']) if self.capture_mode is None and not self.observers: capture_mode = "no" else: capture_mode = self.capture_mode capture_mode, capture_stdout = get_stdcapturer(capture_mode) self.run_logger.debug('Using capture mode "%s"', capture_mode) if self.queue_only: self._emit_queued() return try: try: with capture_stdout() as out: self._output_file = out self._emit_started() self._start_heartbeat() self._execute_pre_run_hooks() self.result = self.main_function(*args) self._execute_post_run_hooks() if self.result is not None: self.run_logger.info('Result: {}'.format(self.result)) elapsed_time = self._stop_time() self.run_logger.info('Completed after %s', elapsed_time) self._get_captured_output() finally: self._get_captured_output() self._stop_heartbeat() self._emit_completed(self.result) except (SacredInterrupt, KeyboardInterrupt) as e: self._stop_heartbeat() status = getattr(e, 'STATUS', 'INTERRUPTED') self._emit_interrupted(status) raise except: exc_type, exc_value, trace = sys.exc_info() self._stop_heartbeat() self._emit_failed(exc_type, exc_value, trace.tb_next) raise finally: self._warn_about_failed_observers() return self.result