Add global session uuid (fixes #524)
This commit is contained in:
@@ -1066,6 +1066,29 @@ def test_worker_id_fixture(testdir, n):
|
||||
assert worker_ids == {"gw0", "gw1"}
|
||||
|
||||
|
||||
@pytest.mark.parametrize("n", [0, 2])
|
||||
def test_testrun_uid_fixture(testdir, n):
|
||||
import glob
|
||||
|
||||
f = testdir.makepyfile(
|
||||
"""
|
||||
import pytest
|
||||
@pytest.mark.parametrize("run_num", range(2))
|
||||
def test_testrun_uid1(testrun_uid, run_num):
|
||||
with open("testrun_uid%s.txt" % run_num, "w") as f:
|
||||
f.write(testrun_uid)
|
||||
"""
|
||||
)
|
||||
result = testdir.runpytest(f, "-n%d" % n)
|
||||
result.stdout.fnmatch_lines("* 2 passed in *")
|
||||
testrun_uids = set()
|
||||
for fname in glob.glob(str(testdir.tmpdir.join("*.txt"))):
|
||||
with open(fname) as f:
|
||||
testrun_uids.add(f.read().strip())
|
||||
assert len(testrun_uids) == 1
|
||||
assert len(testrun_uids.pop()) == 32
|
||||
|
||||
|
||||
@pytest.mark.parametrize("tb", ["auto", "long", "short", "no", "line", "native"])
|
||||
def test_error_report_styles(testdir, tb):
|
||||
testdir.makepyfile(
|
||||
|
||||
@@ -15,7 +15,7 @@ class TestHooks:
|
||||
|
||||
def test_runtest_logreport(self, testdir):
|
||||
"""Test that log reports from pytest_runtest_logreport when running
|
||||
with xdist contain "node", "nodeid" and "worker_id" attributes. (#8)
|
||||
with xdist contain "node", "nodeid", "worker_id", and "testrun_uid" attributes. (#8)
|
||||
"""
|
||||
testdir.makeconftest(
|
||||
"""
|
||||
@@ -23,20 +23,24 @@ class TestHooks:
|
||||
if hasattr(report, 'node'):
|
||||
if report.when == "call":
|
||||
workerid = report.node.workerinput['workerid']
|
||||
testrunuid = report.node.workerinput['testrunuid']
|
||||
if workerid != report.worker_id:
|
||||
print("HOOK: Worker id mismatch: %s %s"
|
||||
% (workerid, report.worker_id))
|
||||
elif testrunuid != report.testrun_uid:
|
||||
print("HOOK: Testrun uid mismatch: %s %s"
|
||||
% (testrunuid, report.testrun_uid))
|
||||
else:
|
||||
print("HOOK: %s %s"
|
||||
% (report.nodeid, report.worker_id))
|
||||
print("HOOK: %s %s %s"
|
||||
% (report.nodeid, report.worker_id, report.testrun_uid))
|
||||
"""
|
||||
)
|
||||
res = testdir.runpytest("-n1", "-s")
|
||||
res.stdout.fnmatch_lines(
|
||||
[
|
||||
"*HOOK: test_runtest_logreport.py::test_a gw0*",
|
||||
"*HOOK: test_runtest_logreport.py::test_b gw0*",
|
||||
"*HOOK: test_runtest_logreport.py::test_c gw0*",
|
||||
"*HOOK: test_runtest_logreport.py::test_a gw0 *",
|
||||
"*HOOK: test_runtest_logreport.py::test_b gw0 *",
|
||||
"*HOOK: test_runtest_logreport.py::test_c gw0 *",
|
||||
"*3 passed*",
|
||||
]
|
||||
)
|
||||
|
||||
@@ -95,6 +95,18 @@ def test_dsession_with_collect_only(testdir):
|
||||
assert not config.pluginmanager.hasplugin("dsession")
|
||||
|
||||
|
||||
def test_testrunuid_provided(testdir):
|
||||
config = testdir.parseconfigure("--testrunuid", "test123", "--tx=popen")
|
||||
nm = NodeManager(config)
|
||||
assert nm.testrunuid == "test123"
|
||||
|
||||
|
||||
def test_testrunuid_generated(testdir):
|
||||
config = testdir.parseconfigure("--tx=popen")
|
||||
nm = NodeManager(config)
|
||||
assert len(nm.testrunuid) == 32
|
||||
|
||||
|
||||
class TestDistOptions:
|
||||
def test_getxspecs(self, testdir):
|
||||
config = testdir.parseconfigure("--tx=popen", "--tx", "ssh=xyz")
|
||||
|
||||
@@ -2,6 +2,7 @@ import py
|
||||
import pprint
|
||||
import pytest
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
from xdist.workermanage import WorkerController
|
||||
import execnet
|
||||
@@ -44,6 +45,7 @@ class WorkerSetup:
|
||||
putevent = self.use_callback and self.events.put or None
|
||||
|
||||
class DummyMananger:
|
||||
testrunuid = uuid.uuid4().hex
|
||||
specs = [0, 1]
|
||||
|
||||
self.slp = WorkerController(DummyMananger, self.gateway, config, putevent)
|
||||
@@ -220,6 +222,7 @@ def test_remote_env_vars(testdir):
|
||||
"""
|
||||
import os
|
||||
def test():
|
||||
assert len(os.environ['PYTEST_XDIST_TESTRUNUID']) == 32
|
||||
assert os.environ['PYTEST_XDIST_WORKER'] in ('gw0', 'gw1')
|
||||
assert os.environ['PYTEST_XDIST_WORKER_COUNT'] == '2'
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user