def test_cli(self):
"""Test out the tune finder."""
path = make_fixture_path('basic')
@cli.cli.command()
@click.pass_obj
def clitest(obj): # pylint: disable=unused-variable
"""Command to test base context."""
self.assertEqual(obj['path'], path)
self.assertTrue('hi' in obj['tune'].dancers)
result = self.runner.invoke(cli.cli, ['--path', path, 'clitest'])
self.assertEqual(0, result.exit_code)
result = self.runner.invoke(
cli.cli,
['--path', make_fixture_path('nodancers', None), 'clitest']
)
self.assertEqual(1, result.exit_code)
self.assertIn(
'Unable to find Lambada class declaration',
result.output
)
python类pass_obj()的实例源码
def packargs(func):
import click
return click.pass_obj(_packargs(func))
def use_prefix(f):
@click.option('-p', '--prefix', help='Set prefix used to install packages')
@click.option('-v', '--verbose', is_flag=True, help="Enable verbose mode")
@click.option('-B', '--build-path', help='Set the path for the build directory to use when building the package')
@click.pass_obj
@functools.wraps(f)
def w(obj, prefix, verbose, build_path, *args, **kwargs):
p = CGetPrefix(prefix or obj.get('PREFIX'), verbose or obj.get('VERBOSE'), build_path or obj.get('BUILD_PATH'))
f(p, *args, **kwargs)
return w
def __repr__(self):
return "Options: %s".format(self.__dict__)
#: You're going to want to read the docs for `Complex Applications`_
#: to understand ``@click.pass_context`` and ``@click.pass_obj`` and
#: how/why we're using them to propagate options from the top-level
#: command (the one tagged with ``@click.group()``) down to subcommands
#: (the ones tagged with ``@cwmon.command()``).
#:
#: .. _Complex Applications: http://click.pocoo.org/6/complex/
def ls( env ):
'''Lists all available project areas
'''
lProjects = _getprojects(env)
print ( 'Main work area:', env.workPath )
print ( 'Projects areas:', ', '.join( [
lProject + ('*' if lProject == env.project else '') for lProject in lProjects
] ) )
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# @proj.command()
# @click.argument( 'projname' )
# @click.pass_obj
# def printpath( env, projname ):
# lProjects = _getprojects(env)
# if projname not in lProjects:
# raise click.ClickException('Requested work area not found. Available areas: %s' % ', '.join(lProjects))
# print ( os.path.join( env.proj, projname ))
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------