def devpi(server_dir, args): from devpi_server.genconfig import genconfig from devpi_server.importexport import import_ from devpi_server.init import init from devpi_server.main import main from _pytest.monkeypatch import MonkeyPatch from _pytest.pytester import RunResult m = MonkeyPatch() m.setenv("DEVPISERVER_SERVERDIR", getattr(server_dir, 'strpath', server_dir)) cap = py.io.StdCaptureFD() cap.startall() now = time.time() if args[0] == 'devpi-gen-config': m.setattr("sys.argv", [devpigenconfig]) entry_point = genconfig elif args[0] == 'devpi-import': m.setattr("sys.argv", [devpiimport]) entry_point = import_ elif args[0] == 'devpi-init': m.setattr("sys.argv", [devpiinit]) entry_point = init elif args[0] == 'devpi-server': m.setattr("sys.argv", [devpiserver]) entry_point = main try: entry_point(argv=args) finally: m.undo() out, err = cap.reset() del cap return RunResult(0, out.split("\n"), err.split("\n"), time.time() - now)
def _run(self, *cmdargs): cmdargs = [str(x) for x in cmdargs] p1 = self.tmpdir.join("stdout") p2 = self.tmpdir.join("stderr") print_("running", cmdargs, "curdir=", py.path.local()) f1 = p1.open("wb") f2 = p2.open("wb") now = time.time() popen = Popen(cmdargs, stdout=f1, stderr=f2, close_fds=(sys.platform != "win32")) ret = popen.wait() f1.close() f2.close() out = p1.read("rb") out = getdecoded(out).splitlines() err = p2.read("rb") err = getdecoded(err).splitlines() def dump_lines(lines, fp): try: for line in lines: py.builtin.print_(line, file=fp) except UnicodeEncodeError: print("couldn't print to %s because of encoding" % (fp, )) dump_lines(out, sys.stdout) dump_lines(err, sys.stderr) return RunResult(ret, out, err, time.time() - now)
def test_runresult_repr(): from _pytest.pytester import RunResult assert ( repr( RunResult(ret="ret", outlines=[""], errlines=["some", "errors"], duration=1) ) == "<RunResult ret='ret' len(stdout.lines)=1 len(stderr.lines)=2 duration=1.00s>" )
def runprocess(tmpdir, cmdargs): cmdargs = [str(x) for x in cmdargs] p1 = tmpdir.join("stdout") print_info("running", cmdargs, "curdir=", py.path.local()) with codecs.open(str(p1), "w", encoding="utf8") as f1: now = time.time() popen = subprocess.Popen( cmdargs, stdout=f1, stderr=subprocess.STDOUT, close_fds=(sys.platform != "win32")) ret = popen.wait() with codecs.open(str(p1), "r", encoding="utf8") as f1: outerr = f1.read().splitlines() return RunResult(ret, outerr, None, time.time()-now)
def out_devpi_func(*args, **kwargs): cap = py.io.StdCaptureFD() cap.startall() now = std.time.time() try: try: devpi(*args, **kwargs) finally: out, err = cap.reset() except: print_(out) print_(err) raise print_(out) print_(err, file=sys.stderr) return RunResult(0, out.split("\n"), None, std.time.time() - now)
def devpi(server_dir, args): from devpi_server.main import main from _pytest.monkeypatch import MonkeyPatch from _pytest.pytester import RunResult m = MonkeyPatch() m.setenv("DEVPI_SERVERDIR", server_dir) m.setattr("sys.argv", [devpiserver]) cap = py.io.StdCaptureFD() cap.startall() now = py.std.time.time() try: main(args) finally: m.undo() out, err = cap.reset() del cap return RunResult( 0, out.split("\n"), err.split("\n"), py.std.time.time() - now)
def test_outcomes(self, run_result: RunResult): run_result.assert_outcomes(passed=1, failed=2)