forked from ElementsProject/lightning
-
Notifications
You must be signed in to change notification settings - Fork 1
/
conftest.py
74 lines (62 loc) · 1.96 KB
/
conftest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import pytest
import subprocess
from urllib import request
import os
import json
from time import time
server = os.environ.get("CI_SERVER", None)
github_sha = subprocess.check_output([
"git",
"rev-parse",
"HEAD"
]).decode('ASCII').strip()
github_ref_name = subprocess.check_output([
"git",
"rev-parse",
"--abbrev-ref",
"HEAD"
]).decode('ASCII').strip()
run_id = os.environ.get("GITHUB_RUN_ID", None)
run_number = os.environ.get("GITHUB_RUN_NUMBER", None)
result = {
"github_repository": os.environ.get("GITHUB_REPOSITORY", None),
"github_sha": os.environ.get("GITHUB_SHA", github_sha),
"github_ref": os.environ.get("GITHUB_REF", None),
"github_ref_name": github_ref_name,
"github_run_id": int(run_id) if run_id else None,
"github_head_ref": os.environ.get("GITHUB_HEAD_REF", None),
"github_run_number": int(run_number) if run_number else None,
"github_base_ref": os.environ.get("GITHUB_BASE_REF", None),
"github_run_attempt": os.environ.get("GITHUB_RUN_ATTEMPT", None),
}
@pytest.hookimpl(hookwrapper=True)
def pytest_pyfunc_call(pyfuncitem):
global result
result = result.copy()
result['testname'] = pyfuncitem.name
result['start_time'] = int(time())
outcome = yield
result['end_time'] = int(time())
# outcome.excinfo may be None or a (cls, val, tb) tuple
if outcome.excinfo is None:
result['outcome'] = "success"
else:
result['outcome'] = "fail"
print(result)
if not server:
return
try:
req = request.Request(
f"{server}/hook/test",
method="POST"
)
req.add_header("Content-Type", "application/json")
request.urlopen(
req,
data=json.dumps(result).encode('ASCII'),
)
except ConnectionError as e:
print(f"Could not report testrun: {e}")
except Exception as e:
import warnings
warnings.warn(f"Error reporting testrun: {e}: {e.read()}")