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)
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