def METHOD_NAME(self, arg):
    """ Run tests:
            * full - run all tests
            * unit - run tests (also for each backend)
            * any backend name (e.g. pyside2, pyside, pyqt4, etc.) -
              run tests for the given backend
            * nobackend - run tests that do not require a backend
            * extra - run extra tests (line endings and style)
            * lineendings - test line ending consistency
            * flake - flake style testing (PEP8 and more)
            * docs - test docstring parameters for correctness
            * examples - run all examples
            * examples [examples paths] - run given examples
    """
    # Note: By default, "python make full" *will* produce coverage data,
    # whereas vispy.test('full') will not. This is because users won't
    # really care about coveraged, but developers will.
    if not arg:
        return self.help('test')
    from vispy import METHOD_NAME
    try:
        args = arg.split(' ')
        METHOD_NAME(args[0], ' '.join(args[1:]), coverage=True)
    except Exception as err:
        print(err)
        if not isinstance(err, RuntimeError):
            type_, value, tb = sys.exc_info()
            traceback.print_exception(type, value, tb)
        raise SystemExit(1)