crawler: --max-pages defaults to 0 (no cap); depth is the only bound
Per fox: 20 was a wrong default — typical sites have many more pages within depth 2 than that, and the cap was silently truncating real crawls. New behavior: aborist crawl --depth 2 # no page cap aborist crawl --depth 2 --max-pages 50 # opt-in cap when needed make crawl-ingest URL=... DEPTH=2 # no page cap make crawl-ingest URL=... DEPTH=2 MAX=50 # explicit cap Implementation: bridge's BFS loop treats max_pages=0 as "unbounded" (while-condition becomes `queue and (max_pages == 0 or len(...) < max_pages)`). Default flows from CLI argparse default=0 down to the bridge. Tests: pinned max_pages=0 → no cap with a 30-page chain regression test (19 passed in tests/crawler/test_bridge.py). Default suite still 273 passed, 1 skipped.
This commit is contained in:
parent
e2540eaaec
commit
552dc0def2
4 changed files with 26 additions and 8 deletions
|
|
@ -102,6 +102,18 @@ def test_crawl_seed_respects_max_pages():
|
|||
assert len(out) == 5
|
||||
|
||||
|
||||
def test_crawl_seed_max_pages_zero_means_no_cap():
|
||||
"""Default `--max-pages 0` lets depth be the only bound. Pin so a
|
||||
future "let's set a sensible default" PR can't silently re-introduce
|
||||
a cap."""
|
||||
# Linear chain of 30 pages within depth 30; max_pages=0 should
|
||||
# discover all of them.
|
||||
page_links = {f"https://x.com/p{i}": [f"/p{i+1}"] for i in range(30)}
|
||||
page_links["https://x.com/"] = ["/p0"]
|
||||
out = _run_crawl(page_links, "https://x.com/", depth=30, max_pages=0)
|
||||
assert len(out) >= 30 # seed + at least 30 chained pages
|
||||
|
||||
|
||||
def test_crawl_seed_respects_max_depth():
|
||||
page_links = {
|
||||
"https://x.com/": ["/a"],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue