Skip to content

Commit

Permalink
Merge pull request #5094 from blueyed/merge-master
Browse files Browse the repository at this point in the history
Merge master into festures
  • Loading branch information
blueyed committed Apr 11, 2019
2 parents b375937 + 8b2fcf5 commit 97cd5f0
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 21 deletions.
9 changes: 9 additions & 0 deletions src/_pytest/pytester.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,15 @@ def testdir(request, tmpdir_factory):
return Testdir(request, tmpdir_factory)


@pytest.fixture
def _sys_snapshot():
snappaths = SysPathsSnapshot()
snapmods = SysModulesSnapshot()
yield
snapmods.restore()
snappaths.restore()


@pytest.fixture
def _config_for_test():
from _pytest.config import get_config
Expand Down
2 changes: 1 addition & 1 deletion testing/acceptance_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,7 @@ def test_foo(invalid_fixture):
["*source code not available*", "E*fixture 'invalid_fixture' not found"]
)

def test_plugins_given_as_strings(self, tmpdir, monkeypatch):
def test_plugins_given_as_strings(self, tmpdir, monkeypatch, _sys_snapshot):
"""test that str values passed to main() as `plugins` arg
are interpreted as module names to be imported and registered.
#855.
Expand Down
2 changes: 1 addition & 1 deletion testing/code/test_excinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ def test_division_zero():

class TestFormattedExcinfo(object):
@pytest.fixture
def importasmod(self, request):
def importasmod(self, request, _sys_snapshot):
def importasmod(source):
source = textwrap.dedent(source)
tmpdir = request.getfixturevalue("tmpdir")
Expand Down
2 changes: 1 addition & 1 deletion testing/code/test_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ def g():
assert lines == ["def f():", " def g():", " pass"]


def test_source_of_class_at_eof_without_newline(tmpdir):
def test_source_of_class_at_eof_without_newline(tmpdir, _sys_snapshot):
# this test fails because the implicit inspect.getsource(A) below
# does not return the "x = 1" last line.
source = _pytest._code.Source(
Expand Down
8 changes: 4 additions & 4 deletions testing/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ def test_iter_rewritable_modules(self, names, expected):


class TestConfigFromdictargs(object):
def test_basic_behavior(self):
def test_basic_behavior(self, _sys_snapshot):
from _pytest.config import Config

option_dict = {"verbose": 444, "foo": "bar", "capture": "no"}
Expand All @@ -450,7 +450,7 @@ def test_basic_behavior(self):
assert config.option.capture == "no"
assert config.args == args

def test_origargs(self):
def test_origargs(self, _sys_snapshot):
"""Show that fromdictargs can handle args in their "orig" format"""
from _pytest.config import Config

Expand Down Expand Up @@ -1057,7 +1057,7 @@ def test_with_existing_file_in_subdir(self, tmpdir):
assert rootdir == tmpdir
assert inifile is None

def test_addopts_before_initini(self, monkeypatch, _config_for_test):
def test_addopts_before_initini(self, monkeypatch, _config_for_test, _sys_snapshot):
cache_dir = ".custom_cache"
monkeypatch.setenv("PYTEST_ADDOPTS", "-o cache_dir=%s" % cache_dir)
config = _config_for_test
Expand Down Expand Up @@ -1092,7 +1092,7 @@ def test_addopts_from_ini_not_concatenated(self, testdir):
)
assert result.ret == _pytest.main.EXIT_USAGEERROR

def test_override_ini_does_not_contain_paths(self, _config_for_test):
def test_override_ini_does_not_contain_paths(self, _config_for_test, _sys_snapshot):
"""Check that -o no longer swallows all options after it (#3103)"""
config = _config_for_test
config._preparse(["-o", "cache_dir=/cache", "/some/test/path"])
Expand Down
29 changes: 15 additions & 14 deletions testing/test_conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,6 @@
from _pytest.main import EXIT_USAGEERROR


@pytest.fixture(scope="module", params=["global", "inpackage"])
def basedir(request, tmpdir_factory):
tmpdir = tmpdir_factory.mktemp("basedir", numbered=True)
tmpdir.ensure("adir/conftest.py").write("a=1 ; Directory = 3")
tmpdir.ensure("adir/b/conftest.py").write("b=2 ; a = 1.5")
if request.param == "inpackage":
tmpdir.ensure("adir/__init__.py")
tmpdir.ensure("adir/b/__init__.py")
return tmpdir


def ConftestWithSetinitial(path):
conftest = PytestPluginManager()
conftest_setinitial(conftest, [path])
Expand All @@ -41,18 +30,30 @@ def __init__(self):
conftest._set_initial_conftests(Namespace())


@pytest.mark.usefixtures("_sys_snapshot")
class TestConftestValueAccessGlobal(object):
@pytest.fixture(scope="module", params=["global", "inpackage"])
def basedir(self, request, tmpdir_factory):
tmpdir = tmpdir_factory.mktemp("basedir", numbered=True)
tmpdir.ensure("adir/conftest.py").write("a=1 ; Directory = 3")
tmpdir.ensure("adir/b/conftest.py").write("b=2 ; a = 1.5")
if request.param == "inpackage":
tmpdir.ensure("adir/__init__.py")
tmpdir.ensure("adir/b/__init__.py")

yield tmpdir

def test_basic_init(self, basedir):
conftest = PytestPluginManager()
p = basedir.join("adir")
assert conftest._rget_with_confmod("a", p)[1] == 1

def test_immediate_initialiation_and_incremental_are_the_same(self, basedir):
conftest = PytestPluginManager()
len(conftest._dirpath2confmods)
assert not len(conftest._dirpath2confmods)
conftest._getconftestmodules(basedir)
snap1 = len(conftest._dirpath2confmods)
# assert len(conftest._dirpath2confmods) == snap1 + 1
assert snap1 == 1
conftest._getconftestmodules(basedir.join("adir"))
assert len(conftest._dirpath2confmods) == snap1 + 1
conftest._getconftestmodules(basedir.join("b"))
Expand Down Expand Up @@ -80,7 +81,7 @@ def test_value_access_with_confmod(self, basedir):
assert path.purebasename.startswith("conftest")


def test_conftest_in_nonpkg_with_init(tmpdir):
def test_conftest_in_nonpkg_with_init(tmpdir, _sys_snapshot):
tmpdir.ensure("adir-1.0/conftest.py").write("a=1 ; Directory = 3")
tmpdir.ensure("adir-1.0/b/conftest.py").write("b=2 ; a = 1.5")
tmpdir.ensure("adir-1.0/b/__init__.py")
Expand Down

0 comments on commit 97cd5f0

Please sign in to comment.