forked from mirrors/gecko-dev
		
	MozReview-Commit-ID: 5qfK6OygVMH --HG-- rename : third_party/python/pytest/_pytest/vendored_packages/pluggy-0.4.0.dist-info/LICENSE.txt => third_party/python/pluggy/LICENSE rename : third_party/python/pytest/doc/en/example/costlysetup/sub1/__init__.py => third_party/python/pytest/doc/en/example/costlysetup/sub_a/__init__.py rename : third_party/python/pytest/doc/en/example/costlysetup/sub1/__init__.py => third_party/python/pytest/doc/en/example/costlysetup/sub_b/__init__.py rename : third_party/python/pytest/_pytest/_code/__init__.py => third_party/python/pytest/src/_pytest/_code/__init__.py extra : rebase_source : d80873f2b1899decefbddddfc2f69ae045925b81
		
			
				
	
	
		
			212 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import absolute_import, division, print_function
 | 
						|
import sys
 | 
						|
import py
 | 
						|
import pytest
 | 
						|
 | 
						|
from _pytest.tmpdir import tmpdir
 | 
						|
 | 
						|
 | 
						|
def test_funcarg(testdir):
 | 
						|
    testdir.makepyfile(
 | 
						|
        """
 | 
						|
            def pytest_generate_tests(metafunc):
 | 
						|
                metafunc.addcall(id='a')
 | 
						|
                metafunc.addcall(id='b')
 | 
						|
            def test_func(tmpdir): pass
 | 
						|
    """
 | 
						|
    )
 | 
						|
    from _pytest.tmpdir import TempdirFactory
 | 
						|
 | 
						|
    reprec = testdir.inline_run()
 | 
						|
    calls = reprec.getcalls("pytest_runtest_setup")
 | 
						|
    item = calls[0].item
 | 
						|
    config = item.config
 | 
						|
    tmpdirhandler = TempdirFactory(config)
 | 
						|
    item._initrequest()
 | 
						|
    p = tmpdir(item._request, tmpdirhandler)
 | 
						|
    assert p.check()
 | 
						|
    bn = p.basename.strip("0123456789")
 | 
						|
    assert bn.endswith("test_func_a_")
 | 
						|
    item.name = "qwe/\\abc"
 | 
						|
    p = tmpdir(item._request, tmpdirhandler)
 | 
						|
    assert p.check()
 | 
						|
    bn = p.basename.strip("0123456789")
 | 
						|
    assert bn == "qwe__abc"
 | 
						|
 | 
						|
 | 
						|
def test_ensuretemp(recwarn):
 | 
						|
    d1 = pytest.ensuretemp("hello")
 | 
						|
    d2 = pytest.ensuretemp("hello")
 | 
						|
    assert d1 == d2
 | 
						|
    assert d1.check(dir=1)
 | 
						|
 | 
						|
 | 
						|
class TestTempdirHandler(object):
 | 
						|
 | 
						|
    def test_mktemp(self, testdir):
 | 
						|
        from _pytest.tmpdir import TempdirFactory
 | 
						|
 | 
						|
        config = testdir.parseconfig()
 | 
						|
        config.option.basetemp = testdir.mkdir("hello")
 | 
						|
        t = TempdirFactory(config)
 | 
						|
        tmp = t.mktemp("world")
 | 
						|
        assert tmp.relto(t.getbasetemp()) == "world0"
 | 
						|
        tmp = t.mktemp("this")
 | 
						|
        assert tmp.relto(t.getbasetemp()).startswith("this")
 | 
						|
        tmp2 = t.mktemp("this")
 | 
						|
        assert tmp2.relto(t.getbasetemp()).startswith("this")
 | 
						|
        assert tmp2 != tmp
 | 
						|
 | 
						|
 | 
						|
class TestConfigTmpdir(object):
 | 
						|
 | 
						|
    def test_getbasetemp_custom_removes_old(self, testdir):
 | 
						|
        mytemp = testdir.tmpdir.join("xyz")
 | 
						|
        p = testdir.makepyfile(
 | 
						|
            """
 | 
						|
            def test_1(tmpdir):
 | 
						|
                pass
 | 
						|
        """
 | 
						|
        )
 | 
						|
        testdir.runpytest(p, "--basetemp=%s" % mytemp)
 | 
						|
        mytemp.check()
 | 
						|
        mytemp.ensure("hello")
 | 
						|
 | 
						|
        testdir.runpytest(p, "--basetemp=%s" % mytemp)
 | 
						|
        mytemp.check()
 | 
						|
        assert not mytemp.join("hello").check()
 | 
						|
 | 
						|
 | 
						|
def test_basetemp(testdir):
 | 
						|
    mytemp = testdir.tmpdir.mkdir("mytemp")
 | 
						|
    p = testdir.makepyfile(
 | 
						|
        """
 | 
						|
        import pytest
 | 
						|
        def test_1():
 | 
						|
            pytest.ensuretemp("hello")
 | 
						|
    """
 | 
						|
    )
 | 
						|
    result = testdir.runpytest(p, "--basetemp=%s" % mytemp)
 | 
						|
    assert result.ret == 0
 | 
						|
    assert mytemp.join("hello").check()
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.skipif(
 | 
						|
    not hasattr(py.path.local, "mksymlinkto"),
 | 
						|
    reason="symlink not available on this platform",
 | 
						|
)
 | 
						|
def test_tmpdir_always_is_realpath(testdir):
 | 
						|
    # the reason why tmpdir should be a realpath is that
 | 
						|
    # when you cd to it and do "os.getcwd()" you will anyway
 | 
						|
    # get the realpath.  Using the symlinked path can thus
 | 
						|
    # easily result in path-inequality
 | 
						|
    # XXX if that proves to be a problem, consider using
 | 
						|
    # os.environ["PWD"]
 | 
						|
    realtemp = testdir.tmpdir.mkdir("myrealtemp")
 | 
						|
    linktemp = testdir.tmpdir.join("symlinktemp")
 | 
						|
    linktemp.mksymlinkto(realtemp)
 | 
						|
    p = testdir.makepyfile(
 | 
						|
        """
 | 
						|
        def test_1(tmpdir):
 | 
						|
            import os
 | 
						|
            assert os.path.realpath(str(tmpdir)) == str(tmpdir)
 | 
						|
    """
 | 
						|
    )
 | 
						|
    result = testdir.runpytest("-s", p, "--basetemp=%s/bt" % linktemp)
 | 
						|
    assert not result.ret
 | 
						|
 | 
						|
 | 
						|
def test_tmpdir_too_long_on_parametrization(testdir):
 | 
						|
    testdir.makepyfile(
 | 
						|
        """
 | 
						|
        import pytest
 | 
						|
        @pytest.mark.parametrize("arg", ["1"*1000])
 | 
						|
        def test_some(arg, tmpdir):
 | 
						|
            tmpdir.ensure("hello")
 | 
						|
    """
 | 
						|
    )
 | 
						|
    reprec = testdir.inline_run()
 | 
						|
    reprec.assertoutcome(passed=1)
 | 
						|
 | 
						|
 | 
						|
def test_tmpdir_factory(testdir):
 | 
						|
    testdir.makepyfile(
 | 
						|
        """
 | 
						|
        import pytest
 | 
						|
        @pytest.fixture(scope='session')
 | 
						|
        def session_dir(tmpdir_factory):
 | 
						|
            return tmpdir_factory.mktemp('data', numbered=False)
 | 
						|
        def test_some(session_dir):
 | 
						|
            session_dir.isdir()
 | 
						|
    """
 | 
						|
    )
 | 
						|
    reprec = testdir.inline_run()
 | 
						|
    reprec.assertoutcome(passed=1)
 | 
						|
 | 
						|
 | 
						|
def test_tmpdir_fallback_tox_env(testdir, monkeypatch):
 | 
						|
    """Test that tmpdir works even if environment variables required by getpass
 | 
						|
    module are missing (#1010).
 | 
						|
    """
 | 
						|
    monkeypatch.delenv("USER", raising=False)
 | 
						|
    monkeypatch.delenv("USERNAME", raising=False)
 | 
						|
    testdir.makepyfile(
 | 
						|
        """
 | 
						|
        import pytest
 | 
						|
        def test_some(tmpdir):
 | 
						|
            assert tmpdir.isdir()
 | 
						|
    """
 | 
						|
    )
 | 
						|
    reprec = testdir.inline_run()
 | 
						|
    reprec.assertoutcome(passed=1)
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture
 | 
						|
def break_getuser(monkeypatch):
 | 
						|
    monkeypatch.setattr("os.getuid", lambda: -1)
 | 
						|
    # taken from python 2.7/3.4
 | 
						|
    for envvar in ("LOGNAME", "USER", "LNAME", "USERNAME"):
 | 
						|
        monkeypatch.delenv(envvar, raising=False)
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.usefixtures("break_getuser")
 | 
						|
@pytest.mark.skipif(sys.platform.startswith("win"), reason="no os.getuid on windows")
 | 
						|
def test_tmpdir_fallback_uid_not_found(testdir):
 | 
						|
    """Test that tmpdir works even if the current process's user id does not
 | 
						|
    correspond to a valid user.
 | 
						|
    """
 | 
						|
 | 
						|
    testdir.makepyfile(
 | 
						|
        """
 | 
						|
        import pytest
 | 
						|
        def test_some(tmpdir):
 | 
						|
            assert tmpdir.isdir()
 | 
						|
    """
 | 
						|
    )
 | 
						|
    reprec = testdir.inline_run()
 | 
						|
    reprec.assertoutcome(passed=1)
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.usefixtures("break_getuser")
 | 
						|
@pytest.mark.skipif(sys.platform.startswith("win"), reason="no os.getuid on windows")
 | 
						|
def test_get_user_uid_not_found():
 | 
						|
    """Test that get_user() function works even if the current process's
 | 
						|
    user id does not correspond to a valid user (e.g. running pytest in a
 | 
						|
    Docker container with 'docker run -u'.
 | 
						|
    """
 | 
						|
    from _pytest.tmpdir import get_user
 | 
						|
 | 
						|
    assert get_user() is None
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.skipif(not sys.platform.startswith("win"), reason="win only")
 | 
						|
def test_get_user(monkeypatch):
 | 
						|
    """Test that get_user() function works even if environment variables
 | 
						|
    required by getpass module are missing from the environment on Windows
 | 
						|
    (#1010).
 | 
						|
    """
 | 
						|
    from _pytest.tmpdir import get_user
 | 
						|
 | 
						|
    monkeypatch.delenv("USER", raising=False)
 | 
						|
    monkeypatch.delenv("USERNAME", raising=False)
 | 
						|
    assert get_user() is None
 |