I think arguments that "Such new versions will be similar in spirit to the present version", in my own reading and readings such as in https://www.draketo.de/software/gpl-or-later, convince me for now that it is acceptable to allow the "or later" for compatibility and future problem's sake Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
101 lines
4.7 KiB
Python
101 lines
4.7 KiB
Python
"""Test the high level SSG operations.
|
|
|
|
SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
"""
|
|
import os
|
|
import tempfile
|
|
|
|
import incorporealcms.ssg as ssg
|
|
from incorporealcms import init_instance
|
|
|
|
HERE = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
instance_dir = os.path.join(HERE, 'instance')
|
|
init_instance(instance_dir)
|
|
|
|
|
|
def test_file_copy():
|
|
"""Test the ability to sync a file to the output dir."""
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
src_dir = os.path.join(HERE, 'instance')
|
|
generator = ssg.StaticSiteGenerator(src_dir, tmpdir)
|
|
os.chdir(os.path.join(instance_dir, 'pages'))
|
|
generator.build_file_in_destination(os.path.join(instance_dir, 'pages'), '', 'no-title.md', tmpdir,
|
|
True)
|
|
assert os.path.exists(os.path.join(tmpdir, 'no-title.md'))
|
|
assert os.path.exists(os.path.join(tmpdir, 'no-title.html'))
|
|
|
|
|
|
def test_file_copy_no_markdown():
|
|
"""Test the ability to sync a file to the output dir."""
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
src_dir = os.path.join(HERE, 'instance')
|
|
generator = ssg.StaticSiteGenerator(src_dir, tmpdir)
|
|
os.chdir(os.path.join(instance_dir, 'pages'))
|
|
generator.build_file_in_destination(os.path.join(instance_dir, 'pages'), '', 'no-title.md', tmpdir,
|
|
False)
|
|
assert os.path.exists(os.path.join(tmpdir, 'no-title.md'))
|
|
assert not os.path.exists(os.path.join(tmpdir, 'no-title.html'))
|
|
|
|
|
|
def test_file_copy_symlink():
|
|
"""Test the ability to sync a file to the output dir."""
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
src_dir = os.path.join(HERE, 'instance')
|
|
generator = ssg.StaticSiteGenerator(src_dir, tmpdir)
|
|
os.chdir(os.path.join(instance_dir, 'pages'))
|
|
generator.build_file_in_destination(os.path.join(instance_dir, 'pages'), '', 'symlink-to-foo.txt', tmpdir)
|
|
# need to copy the destination for os.path.exists to be happy with this
|
|
generator.build_file_in_destination(os.path.join(instance_dir, 'pages'), '', 'foo.txt', tmpdir)
|
|
assert os.path.exists(os.path.join(tmpdir, 'symlink-to-foo.txt'))
|
|
assert os.path.islink(os.path.join(tmpdir, 'symlink-to-foo.txt'))
|
|
|
|
|
|
def test_dir_copy():
|
|
"""Test the ability to sync a directory to the output dir."""
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
src_dir = os.path.join(HERE, 'instance')
|
|
generator = ssg.StaticSiteGenerator(src_dir, tmpdir)
|
|
os.chdir(os.path.join(instance_dir, 'pages'))
|
|
generator.build_subdir_in_destination(os.path.join(instance_dir, 'pages'), '', 'media', tmpdir)
|
|
assert os.path.exists(os.path.join(tmpdir, 'media'))
|
|
assert os.path.isdir(os.path.join(tmpdir, 'media'))
|
|
|
|
|
|
def test_dir_copy_symlink():
|
|
"""Test the ability to sync a directory to the output dir."""
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
src_dir = os.path.join(HERE, 'instance')
|
|
generator = ssg.StaticSiteGenerator(src_dir, tmpdir)
|
|
os.chdir(os.path.join(instance_dir, 'pages'))
|
|
generator.build_subdir_in_destination(os.path.join(instance_dir, 'pages'), '', 'symlink-to-subdir', tmpdir)
|
|
# need to copy the destination for os.path.exists to be happy with this
|
|
generator.build_subdir_in_destination(os.path.join(instance_dir, 'pages'), '', 'subdir', tmpdir)
|
|
assert os.path.exists(os.path.join(tmpdir, 'symlink-to-subdir'))
|
|
assert os.path.isdir(os.path.join(tmpdir, 'symlink-to-subdir'))
|
|
assert os.path.islink(os.path.join(tmpdir, 'symlink-to-subdir'))
|
|
|
|
|
|
def test_build_in_destination():
|
|
"""Test the ability to walk a source and populate the destination."""
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
src_dir = os.path.join(HERE, 'instance')
|
|
generator = ssg.StaticSiteGenerator(src_dir, tmpdir)
|
|
generator.build_in_destination(os.path.join(src_dir, 'pages'), tmpdir)
|
|
|
|
assert os.path.exists(os.path.join(tmpdir, 'index.md'))
|
|
assert os.path.exists(os.path.join(tmpdir, 'index.html'))
|
|
assert os.path.exists(os.path.join(tmpdir, 'subdir', 'index.md'))
|
|
assert os.path.exists(os.path.join(tmpdir, 'subdir', 'index.html'))
|
|
|
|
|
|
def test_build_in_destination_ignores_dot_files():
|
|
"""Test the ability to walk a source and populate the destination."""
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
src_dir = os.path.join(HERE, 'instance')
|
|
generator = ssg.StaticSiteGenerator(src_dir, tmpdir)
|
|
generator.build_in_destination(os.path.join(src_dir, 'pages'), tmpdir)
|
|
|
|
assert not os.path.exists(os.path.join(tmpdir, '.ignored-file.md'))
|