golden hour
/opt/cloudlinux/venv/lib/python3.11/site-packages/_pytest
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
356 B
Del
OK
__pycache__
-
Del
OK
_argcomplete.py
3.71 KB
Del
OK
_code
-
Del
OK
_io
-
Del
OK
_py
-
Del
OK
_version.py
160 B
Del
OK
assertion
-
Del
OK
cacheprovider.py
20.89 KB
Del
OK
capture.py
33.92 KB
Del
OK
compat.py
12.89 KB
Del
OK
config
-
Del
OK
debugging.py
13.18 KB
Del
OK
deprecated.py
5.36 KB
Del
OK
doctest.py
25.35 KB
Del
OK
faulthandler.py
3.04 KB
Del
OK
fixtures.py
65.51 KB
Del
OK
freeze_support.py
1.31 KB
Del
OK
helpconfig.py
8.34 KB
Del
OK
hookspec.py
31.79 KB
Del
OK
junitxml.py
25.11 KB
Del
OK
legacypath.py
16.53 KB
Del
OK
logging.py
33.23 KB
Del
OK
main.py
31.73 KB
Del
OK
mark
-
Del
OK
monkeypatch.py
14.51 KB
Del
OK
nodes.py
25.94 KB
Del
OK
nose.py
1.65 KB
Del
OK
outcomes.py
10.02 KB
Del
OK
pastebin.py
3.86 KB
Del
OK
pathlib.py
25.22 KB
Del
OK
py.typed
0 B
Del
OK
pytester.py
60.52 KB
Del
OK
pytester_assertions.py
2.27 KB
Del
OK
python.py
69.49 KB
Del
OK
python_api.py
37.5 KB
Del
OK
python_path.py
709 B
Del
OK
recwarn.py
10.67 KB
Del
OK
reports.py
20.35 KB
Del
OK
runner.py
18.01 KB
Del
OK
scope.py
2.81 KB
Del
OK
setuponly.py
3.18 KB
Del
OK
setupplan.py
1.19 KB
Del
OK
skipping.py
9.96 KB
Del
OK
stash.py
2.98 KB
Del
OK
stepwise.py
4.6 KB
Del
OK
terminal.py
52.25 KB
Del
OK
threadexception.py
2.85 KB
Del
OK
timing.py
375 B
Del
OK
tmpdir.py
11.43 KB
Del
OK
unittest.py
14.46 KB
Del
OK
unraisableexception.py
3.12 KB
Del
OK
warning_types.py
4.37 KB
Del
OK
warnings.py
4.95 KB
Del
OK
Edit: pastebin.py
"""Submit failure or test session information to a pastebin service.""" import tempfile from io import StringIO from typing import IO from typing import Union import pytest from _pytest.config import Config from _pytest.config import create_terminal_writer from _pytest.config.argparsing import Parser from _pytest.stash import StashKey from _pytest.terminal import TerminalReporter pastebinfile_key = StashKey[IO[bytes]]() def pytest_addoption(parser: Parser) -> None: group = parser.getgroup("terminal reporting") group._addoption( "--pastebin", metavar="mode", action="store", dest="pastebin", default=None, choices=["failed", "all"], help="Send failed|all info to bpaste.net pastebin service", ) @pytest.hookimpl(trylast=True) def pytest_configure(config: Config) -> None: if config.option.pastebin == "all": tr = config.pluginmanager.getplugin("terminalreporter") # If no terminal reporter plugin is present, nothing we can do here; # this can happen when this function executes in a worker node # when using pytest-xdist, for example. if tr is not None: # pastebin file will be UTF-8 encoded binary file. config.stash[pastebinfile_key] = tempfile.TemporaryFile("w+b") oldwrite = tr._tw.write def tee_write(s, **kwargs): oldwrite(s, **kwargs) if isinstance(s, str): s = s.encode("utf-8") config.stash[pastebinfile_key].write(s) tr._tw.write = tee_write def pytest_unconfigure(config: Config) -> None: if pastebinfile_key in config.stash: pastebinfile = config.stash[pastebinfile_key] # Get terminal contents and delete file. pastebinfile.seek(0) sessionlog = pastebinfile.read() pastebinfile.close() del config.stash[pastebinfile_key] # Undo our patching in the terminal reporter. tr = config.pluginmanager.getplugin("terminalreporter") del tr._tw.__dict__["write"] # Write summary. tr.write_sep("=", "Sending information to Paste Service") pastebinurl = create_new_paste(sessionlog) tr.write_line("pastebin session-log: %s\n" % pastebinurl) def create_new_paste(contents: Union[str, bytes]) -> str: """Create a new paste using the bpaste.net service. :contents: Paste contents string. :returns: URL to the pasted contents, or an error message. """ import re from urllib.request import urlopen from urllib.parse import urlencode params = {"code": contents, "lexer": "text", "expiry": "1week"} url = "https://bpa.st" try: response: str = ( urlopen(url, data=urlencode(params).encode("ascii")).read().decode("utf-8") ) except OSError as exc_info: # urllib errors return "bad response: %s" % exc_info m = re.search(r'href="/raw/(\w+)"', response) if m: return f"{url}/show/{m.group(1)}" else: return "bad response: invalid format ('" + response + "')" def pytest_terminal_summary(terminalreporter: TerminalReporter) -> None: if terminalreporter.config.option.pastebin != "failed": return if "failed" in terminalreporter.stats: terminalreporter.write_sep("=", "Sending information to Paste Service") for rep in terminalreporter.stats["failed"]: try: msg = rep.longrepr.reprtraceback.reprentries[-1].reprfileloc except AttributeError: msg = terminalreporter._getfailureheadline(rep) file = StringIO() tw = create_terminal_writer(terminalreporter.config, file) rep.toterminal(tw) s = file.getvalue() assert len(s) pastebinurl = create_new_paste(s) terminalreporter.write_line(f"{msg} --> {pastebinurl}")
Save