Add file URL RSS feed coverage
This commit is contained in:
parent
20b9759193
commit
fc102d9445
3 changed files with 69 additions and 0 deletions
|
|
@ -15,3 +15,20 @@ Because `out_dir` in [`demo/repub.toml`](/home/abel/src/guardianproject/anynews/
|
||||||
## Files
|
## Files
|
||||||
|
|
||||||
- `repub.toml`: example runtime config with feed definitions and Scrapy overrides
|
- `repub.toml`: example runtime config with feed definitions and Scrapy overrides
|
||||||
|
- `fixtures/local-feed.rss`: simple local RSS fixture for `file://` feed testing
|
||||||
|
|
||||||
|
## Local File Feed
|
||||||
|
|
||||||
|
`repub` already accepts absolute `file://` feed URIs. To point it at the demo fixture, generate an absolute URI like this from the repo root:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
python3 -c 'from pathlib import Path; print(Path("demo/fixtures/local-feed.rss").resolve().as_uri())'
|
||||||
|
```
|
||||||
|
|
||||||
|
Then use that value in a config entry:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[feeds]]
|
||||||
|
name = "local-demo"
|
||||||
|
url = "file:///absolute/path/to/demo/fixtures/local-feed.rss"
|
||||||
|
```
|
||||||
|
|
|
||||||
16
demo/fixtures/local-feed.rss
Normal file
16
demo/fixtures/local-feed.rss
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rss version="2.0">
|
||||||
|
<channel>
|
||||||
|
<title>Local Demo Feed</title>
|
||||||
|
<link>https://example.com/</link>
|
||||||
|
<description>Simple local RSS fixture for file:// testing</description>
|
||||||
|
<language>en</language>
|
||||||
|
<item>
|
||||||
|
<title>Local Demo Entry</title>
|
||||||
|
<link>https://example.com/local-demo-entry</link>
|
||||||
|
<description>Hello from a local file feed.</description>
|
||||||
|
<guid isPermaLink="true">https://example.com/local-demo-entry</guid>
|
||||||
|
<pubDate>Sat, 29 Mar 2026 12:00:00 GMT</pubDate>
|
||||||
|
</item>
|
||||||
|
</channel>
|
||||||
|
</rss>
|
||||||
36
tests/test_file_feeds.py
Normal file
36
tests/test_file_feeds.py
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from repub import entrypoint as entrypoint_module
|
||||||
|
|
||||||
|
|
||||||
|
def test_entrypoint_supports_file_feed_urls(tmp_path: Path, monkeypatch) -> None:
|
||||||
|
fixture_path = (
|
||||||
|
Path(__file__).resolve().parents[1] / "demo" / "fixtures" / "local-feed.rss"
|
||||||
|
).resolve()
|
||||||
|
config_path = tmp_path / "repub.toml"
|
||||||
|
config_path.write_text(
|
||||||
|
f"""
|
||||||
|
out_dir = "out"
|
||||||
|
|
||||||
|
[[feeds]]
|
||||||
|
name = "local-file"
|
||||||
|
url = "{fixture_path.as_uri()}"
|
||||||
|
|
||||||
|
[scrapy.settings]
|
||||||
|
LOG_LEVEL = "ERROR"
|
||||||
|
DOWNLOAD_TIMEOUT = 5
|
||||||
|
""".strip()
|
||||||
|
+ "\n",
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
|
monkeypatch.setattr(entrypoint_module, "check_runtime", lambda *_: True)
|
||||||
|
|
||||||
|
exit_code = entrypoint_module.entrypoint(["--config", str(config_path)])
|
||||||
|
|
||||||
|
output_path = tmp_path / "out" / "local-file.rss"
|
||||||
|
assert exit_code == 0
|
||||||
|
assert output_path.exists()
|
||||||
|
output = output_path.read_text(encoding="utf-8")
|
||||||
|
assert "<title>Local Demo Feed</title>" in output
|
||||||
|
assert "<title>Local Demo Entry</title>" in output
|
||||||
Loading…
Add table
Add a link
Reference in a new issue