feat: web.py CLI (search/scrape) with nonzero exit on failure
This commit is contained in:
@@ -133,3 +133,39 @@ def test_scrape_raises_on_empty_markdown(monkeypatch):
|
||||
lambda url, **kw: {"success": True, "data": {"markdown": ""}})
|
||||
with pytest.raises(web.WebToolsError):
|
||||
web.scrape("http://a")
|
||||
|
||||
|
||||
def test_main_search_json(monkeypatch, capsys):
|
||||
monkeypatch.setattr(web, "search",
|
||||
lambda q, max_results=12: [{"title": "T", "url": "http://u",
|
||||
"snippet": "s", "engine": "e"}])
|
||||
rc = web.main(["search", "demons", "--max", "5", "--json"])
|
||||
assert rc == 0
|
||||
out = capsys.readouterr().out
|
||||
assert json.loads(out) == [{"title": "T", "url": "http://u",
|
||||
"snippet": "s", "engine": "e"}]
|
||||
|
||||
|
||||
def test_main_scrape_to_stdout(monkeypatch, capsys):
|
||||
monkeypatch.setattr(web, "scrape", lambda url: "# Page")
|
||||
rc = web.main(["scrape", "http://a"])
|
||||
assert rc == 0
|
||||
assert "# Page" in capsys.readouterr().out
|
||||
|
||||
|
||||
def test_main_scrape_to_file(monkeypatch, tmp_path):
|
||||
monkeypatch.setattr(web, "scrape", lambda url: "# Saved")
|
||||
out = tmp_path / "p.md"
|
||||
rc = web.main(["scrape", "http://a", "--out", str(out)])
|
||||
assert rc == 0
|
||||
assert out.read_text(encoding="utf-8") == "# Saved"
|
||||
|
||||
|
||||
def test_main_returns_1_on_error(monkeypatch, capsys):
|
||||
def boom(*a, **k):
|
||||
raise web.WebToolsError("nope")
|
||||
|
||||
monkeypatch.setattr(web, "search", boom)
|
||||
rc = web.main(["search", "x"])
|
||||
assert rc == 1
|
||||
assert "error:" in capsys.readouterr().err
|
||||
|
||||
Reference in New Issue
Block a user