From 1fe2bbd1db860fbec2ab9f748c83fed2f46fb17f Mon Sep 17 00:00:00 2001 From: omicron Date: Thu, 3 Sep 2026 03:10:13 +0200 Subject: [PATCH] Consolidate test site fixture into a single make_site --- tests/data/sites/thin_site/config.yml | 2 ++ tests/unit/conftest.py | 18 +++++++++++++++--- tests/unit/test_file.py | 14 ++++++++------ tests/unit/test_output.py | 26 ++++++++++++++------------ 4 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 tests/data/sites/thin_site/config.yml diff --git a/tests/data/sites/thin_site/config.yml b/tests/data/sites/thin_site/config.yml new file mode 100644 index 0000000..2c8bf06 --- /dev/null +++ b/tests/data/sites/thin_site/config.yml @@ -0,0 +1,2 @@ +name: test +template: plain diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index b3fbe3a..79c04cd 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -1,8 +1,20 @@ +import shutil +from pathlib import Path import pytest from omicron.ssg.site import Site +DATA_SITES = Path(__file__).parent.parent / "data" / "sites" + @pytest.fixture -def thin_site(tmp_path): - (tmp_path / "config.yml").write_text("name: test\ntemplate: plain\n") - return Site(tmp_path) +def make_site(tmp_path): + def _make(name, **kwargs): + site_dir = tmp_path / name + shutil.copytree( + DATA_SITES / name, + site_dir, + ignore=shutil.ignore_patterns("output", "build.log"), + ) + return Site(site_dir, **kwargs) + + return _make diff --git a/tests/unit/test_file.py b/tests/unit/test_file.py index 7874f38..7039a35 100644 --- a/tests/unit/test_file.py +++ b/tests/unit/test_file.py @@ -2,28 +2,30 @@ from pathlib import Path from omicron.ssg.output.file import File -def test_write_copies_content(thin_site, tmp_path): +def test_write_copies_content(make_site, tmp_path): + site = make_site("thin_site") source = tmp_path / "source.txt" source.write_text("hello") - dest_dir = thin_site.output_path / "assets" + dest_dir = site.output_path / "assets" dest_dir.mkdir(parents=True) - file = File(thin_site, Path("assets/copy.txt"), source) + file = File(site, Path("assets/copy.txt"), source) file.write() dest = dest_dir / "copy.txt" assert dest.read_text() == "hello" -def test_write_overwrites_existing_destination(thin_site, tmp_path): - dest = thin_site.output_path / "copy.txt" +def test_write_overwrites_existing_destination(make_site, tmp_path): + site = make_site("thin_site") + dest = site.output_path / "copy.txt" dest.parent.mkdir(parents=True, exist_ok=True) dest.write_text("old") source = tmp_path / "source.txt" source.write_text("new") - file = File(thin_site, Path("copy.txt"), source) + file = File(site, Path("copy.txt"), source) file.write() assert dest.read_text() == "new" diff --git a/tests/unit/test_output.py b/tests/unit/test_output.py index 2adf065..d2d78e1 100644 --- a/tests/unit/test_output.py +++ b/tests/unit/test_output.py @@ -2,22 +2,22 @@ from pathlib import Path import pytest from omicron.ssg.output.file import File from omicron.ssg.output.output import OutputError -from omicron.ssg.site import Site -def test_absolute_destination_raises(thin_site, tmp_path): +def test_absolute_destination_raises(make_site, tmp_path): + site = make_site("thin_site") with pytest.raises(OutputError): - File(thin_site, Path("/copy.txt"), tmp_path / "source.txt") + File(site, Path("/copy.txt"), tmp_path / "source.txt") -def test_non_normalized_destination_raises(thin_site, tmp_path): +def test_non_normalized_destination_raises(make_site, tmp_path): + site = make_site("thin_site") with pytest.raises(OutputError): - File(thin_site, Path("assets/../copy.txt"), tmp_path / "source.txt") + File(site, Path("assets/../copy.txt"), tmp_path / "source.txt") -def test_site_raises_after_garbage_collection(tmp_path): - (tmp_path / "config.yml").write_text("name: test\ntemplate: plain\n") - site = Site(tmp_path) +def test_site_raises_after_garbage_collection(make_site, tmp_path): + site = make_site("thin_site") file = File(site, Path("copy.txt"), tmp_path / "source.txt") del site @@ -26,11 +26,13 @@ def test_site_raises_after_garbage_collection(tmp_path): file.site -def test_url(thin_site, tmp_path): - file = File(thin_site, Path("assets/copy.txt"), tmp_path / "source.txt") +def test_url(make_site, tmp_path): + site = make_site("thin_site") + file = File(site, Path("assets/copy.txt"), tmp_path / "source.txt") assert file.url == "/assets/copy.txt" -def test_url_strips_index_html(thin_site, tmp_path): - file = File(thin_site, Path("posts/index.html"), tmp_path / "source.txt") +def test_url_strips_index_html(make_site, tmp_path): + site = make_site("thin_site") + file = File(site, Path("posts/index.html"), tmp_path / "source.txt") assert file.url == "/posts"