Esempio n. 1
0
    def make_function(pytester: Pytester, **kwargs: Any) -> Any:
        from _pytest.fixtures import FixtureManager

        config = pytester.parseconfigure()
        session = Session.from_config(config)
        session._fixturemanager = FixtureManager(session)

        return pytest.Function.from_parent(parent=session, **kwargs)
Esempio n. 2
0
 def session_start(self):
     """Start a pytest session."""
     if self.config is None:
         self.start()
     self.config._do_configure()
     if hasattr(Session, "from_config"):
         self.session = Session.from_config(self.config)
     else:  # TODO remove with pytest >= 5.4
         self.session = Session(self.config)
     self.config.hook.pytest_sessionstart(session=self.session)
     # TODO remove this when it's fixed in IPython
     warnings.filterwarnings('ignore', module=r'^jedi\.cache')
Esempio n. 3
0
 def test_collect_topdir(self, testdir):
     p = testdir.makepyfile("def test_func(): pass")
     id = "::".join([p.basename, "test_func"])
     # XXX migrate to collectonly? (see below)
     config = testdir.parseconfig(id)
     topdir = testdir.tmpdir
     rcol = Session.from_config(config)
     assert topdir == rcol.fspath
     # rootid = rcol.nodeid
     # root2 = rcol.perform_collect([rcol.nodeid], genitems=False)[0]
     # assert root2 == rcol, rootid
     colitems = rcol.perform_collect([rcol.nodeid], genitems=False)
     assert len(colitems) == 1
     assert colitems[0].fspath == p
Esempio n. 4
0
    def test_hook_proxy(self, pytester: Pytester) -> None:
        """Test the gethookproxy function(#2016)"""
        config = pytester.parseconfig()
        session = Session.from_config(config)
        pytester.makepyfile(**{"tests/conftest.py": "", "tests/subdir/conftest.py": ""})

        conftest1 = pytester.path.joinpath("tests/conftest.py")
        conftest2 = pytester.path.joinpath("tests/subdir/conftest.py")

        config.pluginmanager._importconftest(conftest1, importmode="prepend")
        ihook_a = session.gethookproxy(pytester.path / "tests")
        assert ihook_a is not None
        config.pluginmanager._importconftest(conftest2, importmode="prepend")
        ihook_b = session.gethookproxy(pytester.path / "tests")
        assert ihook_a is not ihook_b
Esempio n. 5
0
    def getpathnode(self, path):
        """Return the collection node of a file.

        This is like :py:meth:`getnode` but uses :py:meth:`parseconfigure` to
        create the (configured) pytest Config instance.

        :param path: a :py:class:`py.path.local` instance of the file

        """
        config = self.parseconfigure(path)
        session = Session.from_config(config)
        x = session.fspath.bestrelpath(path)
        config.hook.pytest_sessionstart(session=session)
        res = session.perform_collect([x], genitems=False)[0]
        config.hook.pytest_sessionfinish(session=session,
                                         exitstatus=ExitCode.OK)
        return res
Esempio n. 6
0
    def test_parsearg(self, testdir):
        p = testdir.makepyfile("def test_func(): pass")
        subdir = testdir.mkdir("sub")
        subdir.ensure("__init__.py")
        target = subdir.join(p.basename)
        p.move(target)
        subdir.chdir()
        config = testdir.parseconfig(p.basename)
        rcol = Session.from_config(config)
        assert rcol.fspath == subdir
        parts = rcol._parsearg(p.basename)

        assert parts[0] == target
        assert len(parts) == 1
        parts = rcol._parsearg(p.basename + "::test_func")
        assert parts[0] == target
        assert parts[1] == "test_func"
        assert len(parts) == 2
Esempio n. 7
0
    def test_hook_proxy(self, testdir):
        """Test the gethookproxy function(#2016)"""
        config = testdir.parseconfig()
        session = Session.from_config(config)
        testdir.makepyfile(**{
            "tests/conftest.py": "",
            "tests/subdir/conftest.py": ""
        })

        conftest1 = testdir.tmpdir.join("tests/conftest.py")
        conftest2 = testdir.tmpdir.join("tests/subdir/conftest.py")

        config.pluginmanager._importconftest(conftest1, importmode="prepend")
        ihook_a = session.gethookproxy(testdir.tmpdir.join("tests"))
        assert ihook_a is not None
        config.pluginmanager._importconftest(conftest2, importmode="prepend")
        ihook_b = session.gethookproxy(testdir.tmpdir.join("tests"))
        assert ihook_a is not ihook_b
Esempio n. 8
0
    def getnode(self, config, arg):
        """Return the collection node of a file.

        :param config: :py:class:`_pytest.config.Config` instance, see
           :py:meth:`parseconfig` and :py:meth:`parseconfigure` to create the
           configuration

        :param arg: a :py:class:`py.path.local` instance of the file

        """
        session = Session.from_config(config)
        assert "::" not in str(arg)
        p = py.path.local(arg)
        config.hook.pytest_sessionstart(session=session)
        res = session.perform_collect([str(p)], genitems=False)[0]
        config.hook.pytest_sessionfinish(session=session,
                                         exitstatus=ExitCode.OK)
        return res