Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_as_html(temporary_dir, project_dir, chdir):
with chdir(temporary_dir):
# Directory with no project
with pytest.raises(exceptions.NoProjectFound):
api.as_html()
# Rendering should succeed as soon as a project is within the directory
temp_project_dir = os.path.join(temporary_dir, "portray")
shutil.copytree(project_dir, temp_project_dir)
with chdir(temp_project_dir):
api.as_html()
# Rendering a second time should fail
with pytest.raises(exceptions.DocumentationAlreadyExists):
api.as_html()
# Unless we enable overwritting destination
api.as_html(overwrite=True)
# Or, we output to a different location
with tempfile.TemporaryDirectory() as new_temp_directory:
api.as_html(output_dir=os.path.join(new_temp_directory, "site"))
Behind the scenes:
- A temporary directory is created and your code is copy and pasted there
- pdoc is ran over your code with the output sent into the temporary directory
as Markdown documents
- MkDocs is ran over all of your projects Markdown documents including those
generated py pdoc. MkDocs outputs an HTML representation to a new temporary
directory.
- The html temporary directory is copied into your specified output location
- Both temporary directories are deleted.
"""
if os.path.exists(config["output_dir"]):
if overwrite:
shutil.rmtree(config["output_dir"])
else:
raise DocumentationAlreadyExists(config["output_dir"])
with documentation_in_temp_folder(config) as documentation_output: # type: str
shutil.copytree(documentation_output, config["output_dir"])