106 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
import py
 | 
						|
from py.plugin.pytest_default import pytest_report_iteminfo
 | 
						|
 | 
						|
def test_implied_different_sessions(testdir, tmpdir):
 | 
						|
    def x(*args):
 | 
						|
        config = testdir.reparseconfig([tmpdir] + list(args))
 | 
						|
        try:
 | 
						|
            config.pluginmanager.do_configure(config)
 | 
						|
        except ValueError:
 | 
						|
            return Exception
 | 
						|
        return getattr(config._sessionclass, '__name__', None)
 | 
						|
    assert x() == None
 | 
						|
    py.test.importorskip("execnet")
 | 
						|
    assert x('-d') == 'DSession'
 | 
						|
    assert x('--dist=each') == 'DSession'
 | 
						|
    assert x('-n3') == 'DSession'
 | 
						|
    assert x('-f') == 'LooponfailingSession'
 | 
						|
 | 
						|
def test_plugin_specify(testdir):
 | 
						|
    testdir.chdir()
 | 
						|
    config = py.test.raises(ImportError, """
 | 
						|
            testdir.parseconfig("-p", "nqweotexistent")
 | 
						|
    """)
 | 
						|
    #py.test.raises(ImportError, 
 | 
						|
    #    "config.pluginmanager.do_configure(config)"
 | 
						|
    #)
 | 
						|
 | 
						|
def test_plugin_already_exists(testdir):
 | 
						|
    config = testdir.parseconfig("-p", "default")
 | 
						|
    assert config.option.plugins == ['default']
 | 
						|
    config.pluginmanager.do_configure(config)
 | 
						|
 | 
						|
def test_exclude(testdir):
 | 
						|
    hellodir = testdir.mkdir("hello")
 | 
						|
    hellodir.join("test_hello.py").write("x y syntaxerror")
 | 
						|
    hello2dir = testdir.mkdir("hello2")
 | 
						|
    hello2dir.join("test_hello2.py").write("x y syntaxerror")
 | 
						|
    testdir.makepyfile(test_ok="def test_pass(): pass")
 | 
						|
    result = testdir.runpytest("--ignore=hello", "--ignore=hello2")
 | 
						|
    assert result.ret == 0
 | 
						|
    assert result.stdout.fnmatch_lines(["*1 passed*"])
 | 
						|
 | 
						|
class TestDistOptions:
 | 
						|
    def setup_method(self, method):
 | 
						|
        py.test.importorskip("execnet")
 | 
						|
    def test_getxspecs(self, testdir):
 | 
						|
        config = testdir.parseconfigure("--tx=popen", "--tx", "ssh=xyz")
 | 
						|
        xspecs = config.getxspecs()
 | 
						|
        assert len(xspecs) == 2
 | 
						|
        print(xspecs)
 | 
						|
        assert xspecs[0].popen 
 | 
						|
        assert xspecs[1].ssh == "xyz"
 | 
						|
 | 
						|
    def test_xspecs_multiplied(self, testdir):
 | 
						|
        xspecs = testdir.parseconfigure("--tx=3*popen",).getxspecs()
 | 
						|
        assert len(xspecs) == 3
 | 
						|
        assert xspecs[1].popen 
 | 
						|
 | 
						|
    def test_getrsyncdirs(self, testdir):
 | 
						|
        config = testdir.parseconfigure('--rsyncdir=' + str(testdir.tmpdir))
 | 
						|
        roots = config.getrsyncdirs()
 | 
						|
        assert len(roots) == 1 + len(py._pydirs)
 | 
						|
        assert testdir.tmpdir in roots
 | 
						|
 | 
						|
    def test_getrsyncdirs_with_conftest(self, testdir):
 | 
						|
        p = py.path.local()
 | 
						|
        for bn in 'x y z'.split():
 | 
						|
            p.mkdir(bn)
 | 
						|
        testdir.makeconftest("""
 | 
						|
            rsyncdirs= 'x', 
 | 
						|
        """)
 | 
						|
        config = testdir.parseconfigure(testdir.tmpdir, '--rsyncdir=y', '--rsyncdir=z')
 | 
						|
        roots = config.getrsyncdirs()
 | 
						|
        assert len(roots) == 3 + len(py._pydirs)
 | 
						|
        assert py.path.local('y') in roots 
 | 
						|
        assert py.path.local('z') in roots 
 | 
						|
        assert testdir.tmpdir.join('x') in roots 
 | 
						|
 | 
						|
    def test_dist_options(self, testdir):
 | 
						|
        config = testdir.parseconfigure("-n 2")
 | 
						|
        assert config.option.dist == "load"
 | 
						|
        assert config.option.tx == ['popen'] * 2
 | 
						|
        
 | 
						|
        config = testdir.parseconfigure("-d")
 | 
						|
        assert config.option.dist == "load"
 | 
						|
 | 
						|
def test_pytest_report_iteminfo():
 | 
						|
    class FakeItem(object):
 | 
						|
 | 
						|
        def reportinfo(self):
 | 
						|
            return "-reportinfo-"
 | 
						|
 | 
						|
    res = pytest_report_iteminfo(FakeItem())
 | 
						|
    assert res == "-reportinfo-"
 | 
						|
 | 
						|
 | 
						|
def test_conftest_confcutdir(testdir):
 | 
						|
    testdir.makeconftest("assert 0")
 | 
						|
    x = testdir.mkdir("x")
 | 
						|
    x.join("conftest.py").write(py.code.Source("""
 | 
						|
        def pytest_addoption(parser):
 | 
						|
            parser.addoption("--xyz", action="store_true")
 | 
						|
    """))
 | 
						|
    result = testdir.runpytest("-h", "--confcutdir=%s" % x, x)
 | 
						|
    assert result.stdout.fnmatch_lines(["*--xyz*"])
 |