Merge pull request #6839 from blueyed/typing-get_dirs_from_args-parseconfig
typing: get_dirs_from_args, parseconfig
This commit is contained in:
commit
46d768503e
|
@ -86,14 +86,14 @@ def get_common_ancestor(paths: Iterable[py.path.local]) -> py.path.local:
|
|||
return common_ancestor
|
||||
|
||||
|
||||
def get_dirs_from_args(args):
|
||||
def is_option(x):
|
||||
return str(x).startswith("-")
|
||||
def get_dirs_from_args(args: Iterable[str]) -> List[py.path.local]:
|
||||
def is_option(x: str) -> bool:
|
||||
return x.startswith("-")
|
||||
|
||||
def get_file_part_from_node_id(x):
|
||||
return str(x).split("::")[0]
|
||||
def get_file_part_from_node_id(x: str) -> str:
|
||||
return x.split("::")[0]
|
||||
|
||||
def get_dir_from_path(path):
|
||||
def get_dir_from_path(path: py.path.local) -> py.path.local:
|
||||
if path.isdir():
|
||||
return path
|
||||
return py.path.local(path.dirname)
|
||||
|
|
|
@ -29,6 +29,7 @@ from _pytest.capture import MultiCapture
|
|||
from _pytest.capture import SysCapture
|
||||
from _pytest.compat import TYPE_CHECKING
|
||||
from _pytest.config import _PluggyPlugin
|
||||
from _pytest.config import Config
|
||||
from _pytest.config import ExitCode
|
||||
from _pytest.fixtures import FixtureRequest
|
||||
from _pytest.main import Session
|
||||
|
@ -995,7 +996,7 @@ class Testdir:
|
|||
args.append("--basetemp=%s" % self.tmpdir.dirpath("basetemp"))
|
||||
return args
|
||||
|
||||
def parseconfig(self, *args):
|
||||
def parseconfig(self, *args: Union[str, py.path.local]) -> Config:
|
||||
"""Return a new pytest Config instance from given commandline args.
|
||||
|
||||
This invokes the pytest bootstrapping code in _pytest.config to create
|
||||
|
@ -1011,7 +1012,7 @@ class Testdir:
|
|||
|
||||
import _pytest.config
|
||||
|
||||
config = _pytest.config._prepareconfig(args, self.plugins)
|
||||
config = _pytest.config._prepareconfig(args, self.plugins) # type: Config
|
||||
# we don't know what the test will do with this half-setup config
|
||||
# object and thus we make sure it gets unconfigured properly in any
|
||||
# case (otherwise capturing could still be active, for example)
|
||||
|
|
|
@ -22,6 +22,7 @@ from _pytest.assertion.rewrite import rewrite_asserts
|
|||
from _pytest.config import ExitCode
|
||||
from _pytest.pathlib import make_numbered_dir
|
||||
from _pytest.pathlib import Path
|
||||
from _pytest.pytester import Testdir
|
||||
|
||||
|
||||
def rewrite(src):
|
||||
|
@ -943,11 +944,11 @@ class TestAssertionRewriteHookDetails:
|
|||
)
|
||||
assert testdir.runpytest().ret == 0
|
||||
|
||||
def test_write_pyc(self, testdir, tmpdir, monkeypatch):
|
||||
def test_write_pyc(self, testdir: Testdir, tmpdir, monkeypatch) -> None:
|
||||
from _pytest.assertion.rewrite import _write_pyc
|
||||
from _pytest.assertion import AssertionState
|
||||
|
||||
config = testdir.parseconfig([])
|
||||
config = testdir.parseconfig()
|
||||
state = AssertionState(config, "rewrite")
|
||||
source_path = str(tmpdir.ensure("source.py"))
|
||||
pycpath = tmpdir.join("pyc").strpath
|
||||
|
|
|
@ -3,6 +3,8 @@ import re
|
|||
import sys
|
||||
import textwrap
|
||||
|
||||
import py.path
|
||||
|
||||
import _pytest._code
|
||||
import pytest
|
||||
from _pytest.compat import importlib_metadata
|
||||
|
@ -900,55 +902,55 @@ class TestRootdir:
|
|||
assert get_common_ancestor([no_path.join("a")]) == tmpdir
|
||||
|
||||
@pytest.mark.parametrize("name", "setup.cfg tox.ini pytest.ini".split())
|
||||
def test_with_ini(self, tmpdir, name) -> None:
|
||||
def test_with_ini(self, tmpdir: py.path.local, name: str) -> None:
|
||||
inifile = tmpdir.join(name)
|
||||
inifile.write("[pytest]\n" if name != "setup.cfg" else "[tool:pytest]\n")
|
||||
|
||||
a = tmpdir.mkdir("a")
|
||||
b = a.mkdir("b")
|
||||
for args in ([tmpdir], [a], [b]):
|
||||
for args in ([str(tmpdir)], [str(a)], [str(b)]):
|
||||
rootdir, parsed_inifile, _ = determine_setup(None, args)
|
||||
assert rootdir == tmpdir
|
||||
assert parsed_inifile == inifile
|
||||
rootdir, parsed_inifile, _ = determine_setup(None, [b, a])
|
||||
rootdir, parsed_inifile, _ = determine_setup(None, [str(b), str(a)])
|
||||
assert rootdir == tmpdir
|
||||
assert parsed_inifile == inifile
|
||||
|
||||
@pytest.mark.parametrize("name", "setup.cfg tox.ini".split())
|
||||
def test_pytestini_overrides_empty_other(self, tmpdir, name) -> None:
|
||||
def test_pytestini_overrides_empty_other(self, tmpdir: py.path.local, name) -> None:
|
||||
inifile = tmpdir.ensure("pytest.ini")
|
||||
a = tmpdir.mkdir("a")
|
||||
a.ensure(name)
|
||||
rootdir, parsed_inifile, _ = determine_setup(None, [a])
|
||||
rootdir, parsed_inifile, _ = determine_setup(None, [str(a)])
|
||||
assert rootdir == tmpdir
|
||||
assert parsed_inifile == inifile
|
||||
|
||||
def test_setuppy_fallback(self, tmpdir) -> None:
|
||||
def test_setuppy_fallback(self, tmpdir: py.path.local) -> None:
|
||||
a = tmpdir.mkdir("a")
|
||||
a.ensure("setup.cfg")
|
||||
tmpdir.ensure("setup.py")
|
||||
rootdir, inifile, inicfg = determine_setup(None, [a])
|
||||
rootdir, inifile, inicfg = determine_setup(None, [str(a)])
|
||||
assert rootdir == tmpdir
|
||||
assert inifile is None
|
||||
assert inicfg == {}
|
||||
|
||||
def test_nothing(self, tmpdir, monkeypatch) -> None:
|
||||
def test_nothing(self, tmpdir: py.path.local, monkeypatch) -> None:
|
||||
monkeypatch.chdir(str(tmpdir))
|
||||
rootdir, inifile, inicfg = determine_setup(None, [tmpdir])
|
||||
rootdir, inifile, inicfg = determine_setup(None, [str(tmpdir)])
|
||||
assert rootdir == tmpdir
|
||||
assert inifile is None
|
||||
assert inicfg == {}
|
||||
|
||||
def test_with_specific_inifile(self, tmpdir) -> None:
|
||||
def test_with_specific_inifile(self, tmpdir: py.path.local) -> None:
|
||||
inifile = tmpdir.ensure("pytest.ini")
|
||||
rootdir, _, _ = determine_setup(inifile, [tmpdir])
|
||||
rootdir, _, _ = determine_setup(str(inifile), [str(tmpdir)])
|
||||
assert rootdir == tmpdir
|
||||
|
||||
def test_with_arg_outside_cwd_without_inifile(self, tmpdir, monkeypatch) -> None:
|
||||
monkeypatch.chdir(str(tmpdir))
|
||||
a = tmpdir.mkdir("a")
|
||||
b = tmpdir.mkdir("b")
|
||||
rootdir, inifile, _ = determine_setup(None, [a, b])
|
||||
rootdir, inifile, _ = determine_setup(None, [str(a), str(b)])
|
||||
assert rootdir == tmpdir
|
||||
assert inifile is None
|
||||
|
||||
|
@ -956,7 +958,7 @@ class TestRootdir:
|
|||
a = tmpdir.mkdir("a")
|
||||
b = tmpdir.mkdir("b")
|
||||
inifile = a.ensure("pytest.ini")
|
||||
rootdir, parsed_inifile, _ = determine_setup(None, [a, b])
|
||||
rootdir, parsed_inifile, _ = determine_setup(None, [str(a), str(b)])
|
||||
assert rootdir == a
|
||||
assert inifile == parsed_inifile
|
||||
|
||||
|
|
Loading…
Reference in New Issue