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