def main(): parser = argparse.ArgumentParser( description="asyncio-based source compiler and test runner") parser.add_argument('-c', '--conf', type=argparse.FileType('r'), help="custom yaml configuration file to use") parser.add_argument( '-l', '--logging', choices=[l.lower() for l in logging._nameToLevel], help="logging level (overrides root logger level from file conf)") cmd = parser.add_subparsers(dest='command') commands = dict( getattr(module, 'build')(cmd) for module in (languages, test, serve, benchmark)) args = parser.parse_args() if args.conf: # merge user defined conf conf.merge(yaml.safe_load(args.conf)) # default logging config from conf logging.config.dictConfig(conf['logging']) if args.logging: # override root logger level logging.root.setLevel(args.logging.upper()) # import built-in languages load_builtins() # import user languages from environ load_from_environ() try: func = commands[args.command] except KeyError: parser.error("missing command") else: sys.exit(func(args))
import asyncio import collections import msgpack import pytest from aiohttp.test_utils import BaseTestServer, TestServer, TestClient from aiohttp.web import Application from camisole.httpserver import make_application # load builtins once and for all from camisole.languages import load_builtins load_builtins() @pytest.yield_fixture def aio_client(event_loop): """ Copied from aiohttp/aiohttp/pytest_plugin.py """ clients = [] @asyncio.coroutine def go(__param, *args, server_kwargs={}, **kwargs): if isinstance(__param, collections.Callable) and \ not isinstance(__param, (Application, BaseTestServer)): __param = __param(event_loop, *args, **kwargs) kwargs = {} else: assert not args, "args should be empty"