示例#1
0
def wserver(
    db: Optional[PathIsh] = None
):  # TODO err not sure what type should it be... -> ContextManager[Helper]:
    port = str(next_port())
    cmd = [
        'serve',
        '--quiet',
        '--port',
        port,
        *([] if db is None else ['--db', str(db)]),
    ]
    with tmp_popen(promnesia_bin(*cmd)) as server:
        # wait till ready
        st = f'http://localhost:{port}/status'
        for a in range(50):
            try:
                requests.get(st).json()
                break
            except:
                time.sleep(0.1)
        else:
            raise RuntimeError("Cooldn't connect to '{st}' after 50 attempts")
        print("Started server up, db: {db}".format(db=db), file=sys.stderr)

        yield Helper(port=port)

        print("Done with the server", file=sys.stderr)
示例#2
0
def test_demo() -> None:
    import requests
    with tmp_popen(promnesia_bin('demo', '--port', '16789', ox_hugo_data())):
        # FIXME why does it want post??
        time.sleep(2)  # meh.. need a generic helper to wait till ready...
        res = {}
        for attempt in range(30):
            time.sleep(1)
            try:
                res = requests.post(
                    "http://localhost:16789/search",
                    data=dict(
                        url="https://github.com/kaushalmodi/ox-hugo/issues")
                ).json()
                break
            except:
                continue
        else:
            raise RuntimeError("Couldn't connect to the server")
        vis = res['visits']
        assert len(vis) > 50, vis
        mds = [
            x for x in vis if x['locator']['title'] ==
            'content/posts/citations-example-toml.md'.replace('/', os.sep)
        ]
        orgs = [
            x for x in vis if x['locator']['title'].startswith(
                'content-org/single-posts/empty_tag.org'.replace('/', os.sep))
        ]
        assert len(mds) == 1
        assert len(orgs) == 1