diff options
Diffstat (limited to 'tests/wpt/web-platform-tests/tools/pytest/testing/python/integration.py')
-rw-r--r-- | tests/wpt/web-platform-tests/tools/pytest/testing/python/integration.py | 369 |
1 files changed, 0 insertions, 369 deletions
diff --git a/tests/wpt/web-platform-tests/tools/pytest/testing/python/integration.py b/tests/wpt/web-platform-tests/tools/pytest/testing/python/integration.py deleted file mode 100644 index dea86f942fd..00000000000 --- a/tests/wpt/web-platform-tests/tools/pytest/testing/python/integration.py +++ /dev/null @@ -1,369 +0,0 @@ -import pytest -from _pytest import python -from _pytest import runner - - -class TestOEJSKITSpecials: - def test_funcarg_non_pycollectobj(self, testdir): # rough jstests usage - testdir.makeconftest(""" - import pytest - def pytest_pycollect_makeitem(collector, name, obj): - if name == "MyClass": - return MyCollector(name, parent=collector) - class MyCollector(pytest.Collector): - def reportinfo(self): - return self.fspath, 3, "xyz" - """) - modcol = testdir.getmodulecol(""" - def pytest_funcarg__arg1(request): - return 42 - class MyClass: - pass - """) - # this hook finds funcarg factories - rep = runner.collect_one_node(collector=modcol) - clscol = rep.result[0] - clscol.obj = lambda arg1: None - clscol.funcargs = {} - pytest._fillfuncargs(clscol) - assert clscol.funcargs['arg1'] == 42 - - def test_autouse_fixture(self, testdir): # rough jstests usage - testdir.makeconftest(""" - import pytest - def pytest_pycollect_makeitem(collector, name, obj): - if name == "MyClass": - return MyCollector(name, parent=collector) - class MyCollector(pytest.Collector): - def reportinfo(self): - return self.fspath, 3, "xyz" - """) - modcol = testdir.getmodulecol(""" - import pytest - @pytest.fixture(autouse=True) - def hello(): - pass - def pytest_funcarg__arg1(request): - return 42 - class MyClass: - pass - """) - # this hook finds funcarg factories - rep = runner.collect_one_node(modcol) - clscol = rep.result[0] - clscol.obj = lambda: None - clscol.funcargs = {} - pytest._fillfuncargs(clscol) - assert not clscol.funcargs - - -def test_wrapped_getfslineno(): - def func(): - pass - def wrap(f): - func.__wrapped__ = f - func.patchings = ["qwe"] - return func - @wrap - def wrapped_func(x, y, z): - pass - fs, lineno = python.getfslineno(wrapped_func) - fs2, lineno2 = python.getfslineno(wrap) - assert lineno > lineno2, "getfslineno does not unwrap correctly" - -class TestMockDecoration: - def test_wrapped_getfuncargnames(self): - from _pytest.python import getfuncargnames - def wrap(f): - def func(): - pass - func.__wrapped__ = f - return func - @wrap - def f(x): - pass - l = getfuncargnames(f) - assert l == ("x",) - - def test_wrapped_getfuncargnames_patching(self): - from _pytest.python import getfuncargnames - def wrap(f): - def func(): - pass - func.__wrapped__ = f - func.patchings = ["qwe"] - return func - @wrap - def f(x, y, z): - pass - l = getfuncargnames(f) - assert l == ("y", "z") - - def test_unittest_mock(self, testdir): - pytest.importorskip("unittest.mock") - testdir.makepyfile(""" - import unittest.mock - class T(unittest.TestCase): - @unittest.mock.patch("os.path.abspath") - def test_hello(self, abspath): - import os - os.path.abspath("hello") - abspath.assert_any_call("hello") - """) - reprec = testdir.inline_run() - reprec.assertoutcome(passed=1) - - def test_unittest_mock_and_fixture(self, testdir): - pytest.importorskip("unittest.mock") - testdir.makepyfile(""" - import os.path - import unittest.mock - import pytest - - @pytest.fixture - def inject_me(): - pass - - @unittest.mock.patch.object(os.path, "abspath", - new=unittest.mock.MagicMock) - def test_hello(inject_me): - import os - os.path.abspath("hello") - """) - reprec = testdir.inline_run() - reprec.assertoutcome(passed=1) - - def test_mock(self, testdir): - pytest.importorskip("mock", "1.0.1") - testdir.makepyfile(""" - import os - import unittest - import mock - - class T(unittest.TestCase): - @mock.patch("os.path.abspath") - def test_hello(self, abspath): - os.path.abspath("hello") - abspath.assert_any_call("hello") - def mock_basename(path): - return "mock_basename" - @mock.patch("os.path.abspath") - @mock.patch("os.path.normpath") - @mock.patch("os.path.basename", new=mock_basename) - def test_someting(normpath, abspath, tmpdir): - abspath.return_value = "this" - os.path.normpath(os.path.abspath("hello")) - normpath.assert_any_call("this") - assert os.path.basename("123") == "mock_basename" - """) - reprec = testdir.inline_run() - reprec.assertoutcome(passed=2) - calls = reprec.getcalls("pytest_runtest_logreport") - funcnames = [call.report.location[2] for call in calls - if call.report.when == "call"] - assert funcnames == ["T.test_hello", "test_someting"] - - def test_mock_sorting(self, testdir): - pytest.importorskip("mock", "1.0.1") - testdir.makepyfile(""" - import os - import mock - - @mock.patch("os.path.abspath") - def test_one(abspath): - pass - @mock.patch("os.path.abspath") - def test_two(abspath): - pass - @mock.patch("os.path.abspath") - def test_three(abspath): - pass - """) - reprec = testdir.inline_run() - calls = reprec.getreports("pytest_runtest_logreport") - calls = [x for x in calls if x.when == "call"] - names = [x.nodeid.split("::")[-1] for x in calls] - assert names == ["test_one", "test_two", "test_three"] - - def test_mock_double_patch_issue473(self, testdir): - pytest.importorskip("mock", "1.0.1") - testdir.makepyfile(""" - from mock import patch - from pytest import mark - - @patch('os.getcwd') - @patch('os.path') - @mark.slow - class TestSimple: - def test_simple_thing(self, mock_path, mock_getcwd): - pass - """) - reprec = testdir.inline_run() - reprec.assertoutcome(passed=1) - - -class TestReRunTests: - def test_rerun(self, testdir): - testdir.makeconftest(""" - from _pytest.runner import runtestprotocol - def pytest_runtest_protocol(item, nextitem): - runtestprotocol(item, log=False, nextitem=nextitem) - runtestprotocol(item, log=True, nextitem=nextitem) - """) - testdir.makepyfile(""" - import pytest - count = 0 - req = None - @pytest.fixture - def fix(request): - global count, req - assert request != req - req = request - print ("fix count %s" % count) - count += 1 - def test_fix(fix): - pass - """) - result = testdir.runpytest("-s") - result.stdout.fnmatch_lines(""" - *fix count 0* - *fix count 1* - """) - result.stdout.fnmatch_lines(""" - *2 passed* - """) - -def test_pytestconfig_is_session_scoped(): - from _pytest.python import pytestconfig - assert pytestconfig._pytestfixturefunction.scope == "session" - - -class TestNoselikeTestAttribute: - def test_module_with_global_test(self, testdir): - testdir.makepyfile(""" - __test__ = False - def test_hello(): - pass - """) - reprec = testdir.inline_run() - assert not reprec.getfailedcollections() - calls = reprec.getreports("pytest_runtest_logreport") - assert not calls - - def test_class_and_method(self, testdir): - testdir.makepyfile(""" - __test__ = True - def test_func(): - pass - test_func.__test__ = False - - class TestSome: - __test__ = False - def test_method(self): - pass - """) - reprec = testdir.inline_run() - assert not reprec.getfailedcollections() - calls = reprec.getreports("pytest_runtest_logreport") - assert not calls - - def test_unittest_class(self, testdir): - testdir.makepyfile(""" - import unittest - class TC(unittest.TestCase): - def test_1(self): - pass - class TC2(unittest.TestCase): - __test__ = False - def test_2(self): - pass - """) - reprec = testdir.inline_run() - assert not reprec.getfailedcollections() - call = reprec.getcalls("pytest_collection_modifyitems")[0] - assert len(call.items) == 1 - assert call.items[0].cls.__name__ == "TC" - - def test_class_with_nasty_getattr(self, testdir): - """Make sure we handle classes with a custom nasty __getattr__ right. - - With a custom __getattr__ which e.g. returns a function (like with a - RPC wrapper), we shouldn't assume this meant "__test__ = True". - """ - # https://github.com/pytest-dev/pytest/issues/1204 - testdir.makepyfile(""" - class MetaModel(type): - - def __getattr__(cls, key): - return lambda: None - - - BaseModel = MetaModel('Model', (), {}) - - - class Model(BaseModel): - - __metaclass__ = MetaModel - - def test_blah(self): - pass - """) - reprec = testdir.inline_run() - assert not reprec.getfailedcollections() - call = reprec.getcalls("pytest_collection_modifyitems")[0] - assert not call.items - - -@pytest.mark.issue351 -class TestParameterize: - - def test_idfn_marker(self, testdir): - testdir.makepyfile(""" - import pytest - - def idfn(param): - if param == 0: - return 'spam' - elif param == 1: - return 'ham' - else: - return None - - @pytest.mark.parametrize('a,b', [(0, 2), (1, 2)], ids=idfn) - def test_params(a, b): - pass - """) - res = testdir.runpytest('--collect-only') - res.stdout.fnmatch_lines([ - "*spam-2*", - "*ham-2*", - ]) - - def test_idfn_fixture(self, testdir): - testdir.makepyfile(""" - import pytest - - def idfn(param): - if param == 0: - return 'spam' - elif param == 1: - return 'ham' - else: - return None - - @pytest.fixture(params=[0, 1], ids=idfn) - def a(request): - return request.param - - @pytest.fixture(params=[1, 2], ids=idfn) - def b(request): - return request.param - - def test_params(a, b): - pass - """) - res = testdir.runpytest('--collect-only') - res.stdout.fnmatch_lines([ - "*spam-2*", - "*ham-2*", - ]) |