예제 #1
0
def run():  # pragma: no cover
    engine = sqlalchemy.create_engine("sqlite:///morepath_sqlalchemy.db")
    Session.configure(bind=engine)
    Base.metadata.create_all(engine)

    morepath.autoscan()
    morepath.run(App())
예제 #2
0
def run():   # pragma: no cover
    engine = sqlalchemy.create_engine('sqlite:///morepath_sqlalchemy.db')
    Session.configure(bind=engine)
    Base.metadata.create_all(engine)

    morepath.autoscan()
    morepath.run(App())
예제 #3
0
def main():
    engine = sqlalchemy.create_engine('sqlite:///morepath_sqlalchemy.db')
    Session.configure(bind=engine)
    Base.metadata.create_all(engine)
    Base.metadata.bind = engine

    morepath.autosetup()
    morepath.run(app)
예제 #4
0
파일: conftest.py 프로젝트: gotcha/morepath
    def run(self, *args, **kw):
        """Wrapper around morepath.run to catch SystemExit.

        :return: the exit code."""
        import morepath

        with pytest.raises(SystemExit) as ex:
            morepath.run(*args, **kw)

        return ex.value.code
예제 #5
0
    def run(self, *args, **kw):
        """Wrapper around morepath.run to catch SystemExit.

        :return: the exit code."""
        import morepath

        with pytest.raises(SystemExit) as ex:
            morepath.run(*args, **kw)

        return ex.value.code
def run():
    from sys import argv, exit, stderr
    if len(argv) < 2 or argv[1] != 'run':
        stderr.write(f'usage: {argv[0]} run [port]\n')
        exit(1)
    try:
        port = int(argv[2])
    except IndexError:
        port = 8080
    morepath.run(application, ignore_cli=True, port=port)
예제 #7
0
def run():
    parser = argparse.ArgumentParser()
    parser.add_argument('-s', '--settings', default='settings.yml')
    args = parser.parse_args()
    with open(args.settings) as cf:
        settings = yaml.load(cf)

    application = create_app(App, settings)

    # start app
    morepath.run(application)
예제 #8
0
파일: test_run.py 프로젝트: hugovk/morepath
def test_run_actual(capsys):
    from threading import Thread

    def query(url, completion_callback, response):
        try:
            from urllib import urlopen
        except ImportError:
            from urllib.request import urlopen
        try:
            response.append(urlopen(url).read())
        except Exception as ex:
            response.append(ex)
        finally:
            completion_callback()

    response = []

    def callback(server):
        thread = Thread(
            target=query,
            args=(
                "http://127.0.0.1:{}".format(server.server_port),
                server.shutdown,
                response,
            ),
        )
        thread.daemon = True
        thread.start()

    with pytest.raises(SystemExit) as ex:
        morepath.run(
            basic.app(),
            port=0,
            prog="script-name",
            callback=callback,
            ignore_cli=True,
        )

    assert ex.value.code == 0

    assert response == [b"The root: ROOT"]

    out, err = capsys.readouterr()

    assert re.match(
        """\
Running <morepath.tests.fixtures.basic.app object at 0x[0-9a-f]+>
Listening on http://127.0.0.1:\\d+
Press Ctrl-C to stop...
""",
        out,
    )
    assert re.match(r'127.0.0.1 - - \[.*?\] "GET / HTTP/1.[01]" 200 14', err)
예제 #9
0
def start_hub():
    if len(sys.argv) == 1:
        print "%s [config.yml]" % sys.argv[0]
        sys.exit(1)

    sys.path.append(os.getcwd())
    config = yaml.load(open(sys.argv[1]).read())
    @App.setting_section(section='config')
    def config_section():
        return config

    morepath.run(App(config), ignore_cli=True)
예제 #10
0
def start_server(classifier, endpoint, auth):
    if endpoint:
        post = io.create_poster(endpoint, auth)

        def forward(payload):
            post(payload)
            io.stderr('Message succesfully sent to: %s\n%s' %
                      (endpoint, payload))

    else:
        forward = io.stdout

    morepath.run(App(classifier, forward), ignore_cli=True)
예제 #11
0
def test_run_hint_on_eaddrinuse(mockserver, capsys):
    """Fail not only gracefully but also helpfully on EADDRINUSE.

    In this case having a second server (mockserver) listening on the
    same port as a first server triggers the socket error.

    """

    def with_existing(first_server):
        used_port = first_server.server_port
        # setup a second server on exactly the same port
        mockserver.set_argv(['--port', str(used_port)])
        assert mockserver.run(basic.app()) == errno.EADDRINUSE

        out, err = capsys.readouterr()

        # The wording of the error message is system-specific.
        rex = """\
script-name: .*: 127.0.0.1:{}

  Use '--port PORT' to specify a different port.

""".format(used_port)

        assert re.match(rex, err)
        assert out == ''

        # If ignore_cli is True, we don't get the helpful hint
        assert mockserver.run(
            basic.app(),
            port=used_port,
            ignore_cli=True
        ) == errno.EADDRINUSE

        out, err = capsys.readouterr()

        rex = 'script-name: .*: 127.0.0.1:{}\n'.format(used_port)
        assert re.match(rex, err)
        assert out == ''

    # setup a first server
    with pytest.raises(SystemExit) as ex:
        morepath.run(
            basic.app(),
            port=0,
            prog='first-server',
            callback=with_existing,
            ignore_cli=True)
    assert ex.value.code == 0
예제 #12
0
def run():  # pragma: no cover
    morepath.autoscan()

    index = FileApp('static/index.html')
    static = DirectoryApp('static')
    app = App()

    @webob.dec.wsgify
    def morepath_with_static_absorb(request):
        popped = request.path_info_pop()
        if popped == 'api':
            return request.get_response(app)
        elif popped == 'static':
            return request.get_response(static)
        else:
            return request.get_response(index)

    morepath.run(morepath_with_static_absorb)
예제 #13
0
def run():   # pragma: no cover
    morepath.autoscan()

    index = FileApp('static/index.html')
    static = DirectoryApp('static')
    app = App()

    @webob.dec.wsgify
    def morepath_with_static_absorb(request):
        popped = request.path_info_pop()
        if popped == 'api':
            return request.get_response(app)
        elif popped == 'static':
            return request.get_response(static)
        else:
            return request.get_response(index)

    morepath.run(morepath_with_static_absorb)
예제 #14
0
파일: test_run.py 프로젝트: gotcha/morepath
def test_run_actual(capsys):
    from threading import Thread

    def query(url, completion_callback, response):
        try:
            from urllib import urlopen
        except ImportError:
            from urllib.request import urlopen
        try:
            response.append(urlopen(url).read())
        except Exception as ex:
            response.append(ex)
        finally:
            completion_callback()

    response = []

    def callback(server):
        thread = Thread(target=query, args=(
            'http://127.0.0.1:{}'.format(server.server_port),
            server.shutdown, response))
        thread.daemon = True
        thread.start()

    with pytest.raises(SystemExit) as ex:
        morepath.run(
            basic.app(),
            port=0,
            prog='script-name',
            callback=callback,
            ignore_cli=True)

    assert ex.value.code == 0

    assert response == [b'The root: ROOT']

    out, err = capsys.readouterr()

    assert re.match("""\
Running <morepath.tests.fixtures.basic.app object at 0x[0-9a-f]+>
Listening on http://127.0.0.1:\\d+
Press Ctrl-C to stop...
""", out)
    assert re.match(r'127.0.0.1 - - \[.*?\] "GET / HTTP/1.[01]" 200 14', err)
예제 #15
0
def run():  # pragma: no cover
    # This is super-hacky, but whatever - this was always intended to be a
    # temporary solution anyway
    if len(argv) > 1:
        # We clean the config filename off so as not to confuse morepath
        config_settings(argv.pop())
    else:
        print('Need a list name (should be in form-data/)')
        exit(1)

    engine = sqlalchemy.create_engine('sqlite:///sf_app.db')
    Session.configure(bind=engine)
    Base.metadata.create_all(engine)

    morepath.autoscan()

    # Not entirely clear if I need this
    morepath.commit(App)
    morepath.run(App())
예제 #16
0
def run():
    from sys import argv, exit, stderr
    usage = f'usage: {argv[0]} run|routes [port]\n'
    if len(argv) < 2:
        stderr.write(usage)
        exit(1)
    if argv[1] == 'run':
        try:
            port=int(argv[2])
        except IndexError:
            port=8080
        morepath.run(application, ignore_cli=True, port=port)
    elif argv[1] == 'routes':
        import dectate
        for app in application.commit():
            for view in dectate.query_app(app, 'view'):
                print(view[0].key_dict())
    else:
        stderr.write(usage)
        exit(1)
예제 #17
0
def run():   # pragma: no cover
    morepath.autoscan()

    index = FileApp('static/index.html')
    static = DirectoryApp('static')
    app = App()

    @webob.dec.wsgify
    def morepath_with_static(request):
        if request.path_info_peek() == '':
            return request.get_response(index)

        popped = request.path_info_pop()
        if popped == 'api':
            return request.get_response(app)
        elif popped == 'static':
            return request.get_response(static)

        raise HTTPNotFound()

    morepath.run(morepath_with_static)
예제 #18
0
파일: __main__.py 프로젝트: JimRowan/rassle
def run():
    directive_logger = logging.getLogger('morepath.directive')
    directive_logger.addHandler(logging.StreamHandler())
    directive_logger.setLevel(logging.DEBUG)

    with open('settings.yml') as config:
        settings_dict = yaml.load(config)

    App.init_settings(settings_dict)

    morepath.autoscan()
    morepath.commit(App)
    app = App()

    setup_db(app)

    if os.getenv('RUN_ENV') == 'dev':
        morepath.run(app, host='0.0.0.0', port='80')
    else:
        waitress_logger = logging.getLogger('waitress')
        waitress_logger.setLevel(logging.INFO)
        waitress.serve(app, listen="*:80")
예제 #19
0
def run():
    morepath.run(App())
예제 #20
0
def run():  # pragma: no cover
    App.setting("storage", "path")(default_storage_directory)
    morepath.autoscan()
    morepath.run(App())
예제 #21
0
def run():
    morepath.run(App())
예제 #22
0
def run():
    morepath.autoscan()
    morepath.run(App())
예제 #23
0
def run():  # pragma: no cover
    App.setting('storage', 'path')(default_storage_directory)
    morepath.autoscan()
    morepath.run(App())
예제 #24
0
def run():   # pragma: no cover
    App.setting('storage', 'path')(default_storage_directory)
    morepath.autoscan()
    morepath.run(App())
예제 #25
0
def main():
    morepath.autosetup()
    morepath.run(App())
def run():
    from ekklesia_portal.app import make_wsgi_app
    wsgi_app = make_wsgi_app()
    morepath.run(wsgi_app)
예제 #27
0
def run():   # pragma: no cover
    morepath.autoscan()
    morepath.run(App())
예제 #28
0
def main():
    morepath.autosetup()
    morepath.run(app())
예제 #29
0
import morepath

class App(morepath.App):
    pass

@App.path(path='')
class Root(object):
    pass

@App.view(model=Root)
def hello_world(self, request):
    return "Hello world!"

if __name__ == '__main__':
    config = morepath.setup()
    config.scan()
    config.commit()
    morepath.run(App())
예제 #30
0
def run(app, settings, host='127.0.0.1', port=5000, ignore_cli=True):
    application = create_app(app, settings)
    morepath.run(application, host=host, port=port, ignore_cli=ignore_cli)