83 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
""" default hooks and general py.test options. """
 | 
						|
 | 
						|
import sys
 | 
						|
import py
 | 
						|
 | 
						|
def pytest_cmdline_main(config):
 | 
						|
    from py._test.session import Session
 | 
						|
    return Session(config).main()
 | 
						|
 | 
						|
def pytest_perform_collection(session):
 | 
						|
    collection = session.collection
 | 
						|
    assert not hasattr(collection, 'items')
 | 
						|
    hook = session.config.hook
 | 
						|
    collection.items = items = collection.perform_collect()
 | 
						|
    hook.pytest_collection_modifyitems(config=session.config, items=items)
 | 
						|
    hook.pytest_log_finishcollection(collection=collection)
 | 
						|
    return True
 | 
						|
 | 
						|
def pytest_runtest_mainloop(session):
 | 
						|
    if session.config.option.collectonly:
 | 
						|
        return True
 | 
						|
    for item in session.collection.items:
 | 
						|
        item.config.hook.pytest_runtest_protocol(item=item)
 | 
						|
        if session.shouldstop:
 | 
						|
            raise session.Interrupted(session.shouldstop)
 | 
						|
    return True
 | 
						|
 | 
						|
def pytest_ignore_collect(path, config):
 | 
						|
    ignore_paths = config.getconftest_pathlist("collect_ignore", path=path)
 | 
						|
    ignore_paths = ignore_paths or []
 | 
						|
    excludeopt = config.getvalue("ignore")
 | 
						|
    if excludeopt:
 | 
						|
        ignore_paths.extend([py.path.local(x) for x in excludeopt])
 | 
						|
    return path in ignore_paths
 | 
						|
 | 
						|
def pytest_collect_directory(path, parent):
 | 
						|
    # XXX reconsider the following comment
 | 
						|
    # not use parent.Directory here as we generally
 | 
						|
    # want dir/conftest.py to be able to
 | 
						|
    # define Directory(dir) already
 | 
						|
    if not parent.recfilter(path): # by default special ".cvs", ...
 | 
						|
        # check if cmdline specified this dir or a subdir directly
 | 
						|
        for arg in parent.collection._argfspaths:
 | 
						|
            if path == arg or arg.relto(path):
 | 
						|
                break
 | 
						|
        else:
 | 
						|
            return
 | 
						|
    Directory = parent.config._getcollectclass('Directory', path)
 | 
						|
    return Directory(path, parent=parent)
 | 
						|
 | 
						|
def pytest_report_iteminfo(item):
 | 
						|
    return item.reportinfo()
 | 
						|
 | 
						|
def pytest_addoption(parser):
 | 
						|
    group = parser.getgroup("general", "running and selection options")
 | 
						|
    group._addoption('-x', '--exitfirst', action="store_true", default=False,
 | 
						|
               dest="exitfirst",
 | 
						|
               help="exit instantly on first error or failed test."),
 | 
						|
    group._addoption('--maxfail', metavar="num",
 | 
						|
               action="store", type="int", dest="maxfail", default=0,
 | 
						|
               help="exit after first num failures or errors.")
 | 
						|
 | 
						|
    group = parser.getgroup("collect", "collection")
 | 
						|
    group.addoption('--collectonly',
 | 
						|
        action="store_true", dest="collectonly",
 | 
						|
        help="only collect tests, don't execute them."),
 | 
						|
    group.addoption("--ignore", action="append", metavar="path",
 | 
						|
        help="ignore path during collection (multi-allowed).")
 | 
						|
    group.addoption('--confcutdir', dest="confcutdir", default=None,
 | 
						|
        metavar="dir",
 | 
						|
        help="only load conftest.py's relative to specified dir.")
 | 
						|
 | 
						|
    group = parser.getgroup("debugconfig",
 | 
						|
        "test process debugging and configuration")
 | 
						|
    group.addoption('--basetemp', dest="basetemp", default=None, metavar="dir",
 | 
						|
               help="base temporary directory for this test run.")
 | 
						|
 | 
						|
def pytest_configure(config):
 | 
						|
    # compat
 | 
						|
    if config.getvalue("exitfirst"):
 | 
						|
        config.option.maxfail = 1
 | 
						|
 |