From d8508e0fa307b4421996ad4712b16f630b016636 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Sun, 27 Sep 2026 15:01:09 +0200 Subject: [PATCH] test(python-generator): add tests for force overwriting Added tests to test new output directory deletion behavior: - output directory overwriting (not empty; force) - error (not empty; not force) - nothing (empty; force) - nothing (empty; not force) One test was adapted to output directory emptiness check because the .gitkeep file which is required for Git to track the directory makes it non-empty. --- .../test_PythonDocumentationGenerator.py | 51 ++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/tests/unit/core/python/_core/test_PythonDocumentationGenerator.py b/tests/unit/core/python/_core/test_PythonDocumentationGenerator.py index 36f095f..fb90798 100644 --- a/tests/unit/core/python/_core/test_PythonDocumentationGenerator.py +++ b/tests/unit/core/python/_core/test_PythonDocumentationGenerator.py @@ -18,6 +18,7 @@ import pytest import tempfile +from src.jcloud_docsgen.exceptions import DirectoryNotEmptyError from src.jcloud_docsgen.core.python import PythonDocumentationGenerator from src.jcloud_docsgen.core.python.namespaces import ( PythonModuleNamespace, @@ -120,7 +121,7 @@ def test_generate_documentation(dir, expectdir): pathlib.Path(str(d)), allow_tables=True, allow_html=False, - ).generate_documentation() # simplify the tests + ).generate_documentation(True) # simplify the tests def test_creates_directory(): @@ -144,3 +145,51 @@ def test_creates_directory(): ) docs_generator.generate_documentation() assert docs_dir.exists() + + +class TestForce: + def _prepare(self, directory): + directory = pathlib.Path(directory) + src_directory = directory / 'src' + src_directory.mkdir() + docs_directory = directory / 'docs' + docs_directory.mkdir() + return directory, src_directory, docs_directory + + def test_overwrites_output_directory(self): + with tempfile.TemporaryDirectory() as directory: + directory, src_directory, docs_directory = self._prepare(directory) + test_dir = docs_directory / 'test_dir' + test_dir.mkdir() + documentation_generator = PythonDocumentationGenerator( + src_directory, docs_directory + ) + documentation_generator.generate_documentation(True) + assert not test_dir.exists() + + def test_error(self): + with tempfile.TemporaryDirectory() as directory: + directory, src_directory, docs_directory = self._prepare(directory) + (docs_directory / 'test_dir').mkdir() + documentation_generator = PythonDocumentationGenerator( + src_directory, docs_directory + ) + with pytest.raises(DirectoryNotEmptyError) as exc_info: + documentation_generator.generate_documentation() + assert exc_info.value.filename == str(docs_directory) + + def test_nothing_force(self): + with tempfile.TemporaryDirectory() as directory: + directory, src_directory, docs_directory = self._prepare(directory) + documentation_generator = PythonDocumentationGenerator( + src_directory, docs_directory + ) + documentation_generator.generate_documentation(True) + + def test_nothing_not_force(self): + with tempfile.TemporaryDirectory() as directory: + directory, src_directory, docs_directory = self._prepare(directory) + documentation_generator = PythonDocumentationGenerator( + src_directory, docs_directory + ) + documentation_generator.generate_documentation(True)