main: add Session.startpath, make Session.startdir a property that can be deprecated
Same as in Config.
This commit is contained in:
parent
6a174afdfe
commit
ccdadb64ea
|
@ -25,6 +25,7 @@ import attr
|
||||||
import _pytest._code
|
import _pytest._code
|
||||||
from _pytest import nodes
|
from _pytest import nodes
|
||||||
from _pytest.compat import final
|
from _pytest.compat import final
|
||||||
|
from _pytest.compat import LEGACY_PATH
|
||||||
from _pytest.compat import legacy_path
|
from _pytest.compat import legacy_path
|
||||||
from _pytest.config import Config
|
from _pytest.config import Config
|
||||||
from _pytest.config import directory_arg
|
from _pytest.config import directory_arg
|
||||||
|
@ -301,7 +302,7 @@ def wrap_session(
|
||||||
finally:
|
finally:
|
||||||
# Explicitly break reference cycle.
|
# Explicitly break reference cycle.
|
||||||
excinfo = None # type: ignore
|
excinfo = None # type: ignore
|
||||||
session.startdir.chdir()
|
os.chdir(session.startpath)
|
||||||
if initstate >= 2:
|
if initstate >= 2:
|
||||||
try:
|
try:
|
||||||
config.hook.pytest_sessionfinish(
|
config.hook.pytest_sessionfinish(
|
||||||
|
@ -476,7 +477,6 @@ class Session(nodes.FSCollector):
|
||||||
self.shouldstop: Union[bool, str] = False
|
self.shouldstop: Union[bool, str] = False
|
||||||
self.shouldfail: Union[bool, str] = False
|
self.shouldfail: Union[bool, str] = False
|
||||||
self.trace = config.trace.root.get("collection")
|
self.trace = config.trace.root.get("collection")
|
||||||
self.startdir = config.invocation_dir
|
|
||||||
self._initialpaths: FrozenSet[Path] = frozenset()
|
self._initialpaths: FrozenSet[Path] = frozenset()
|
||||||
|
|
||||||
self._bestrelpathcache: Dict[Path, str] = _bestrelpath_cache(config.rootpath)
|
self._bestrelpathcache: Dict[Path, str] = _bestrelpath_cache(config.rootpath)
|
||||||
|
@ -497,6 +497,24 @@ class Session(nodes.FSCollector):
|
||||||
self.testscollected,
|
self.testscollected,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def startpath(self) -> Path:
|
||||||
|
"""The path from which pytest was invoked.
|
||||||
|
|
||||||
|
.. versionadded:: 6.3.0
|
||||||
|
"""
|
||||||
|
return self.config.invocation_params.dir
|
||||||
|
|
||||||
|
@property
|
||||||
|
def stardir(self) -> LEGACY_PATH:
|
||||||
|
"""The path from which pytest was invoked.
|
||||||
|
|
||||||
|
Prefer to use ``startpath`` which is a :class:`pathlib.Path`.
|
||||||
|
|
||||||
|
:type: LEGACY_PATH
|
||||||
|
"""
|
||||||
|
return legacy_path(self.startpath)
|
||||||
|
|
||||||
def _node_location_to_relpath(self, node_path: Path) -> str:
|
def _node_location_to_relpath(self, node_path: Path) -> str:
|
||||||
# bestrelpath is a quite slow function.
|
# bestrelpath is a quite slow function.
|
||||||
return self._bestrelpathcache[node_path]
|
return self._bestrelpathcache[node_path]
|
||||||
|
|
Loading…
Reference in New Issue