this removes Flask, reworks a number of library methods accordingly, and adds generators and build commands to process the instance directory (largely unchanged, except config.py is now config.json) and spit out files suitable to be served by a web server such as Nginx. there are probably some rough edges here, but overall this works. also note, as this is no longer server software on a network, the license has changed from AGPLv3 to GPLv3, and the "or any later version" allowance has been removed Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
91 lines
4.2 KiB
Python
91 lines
4.2 KiB
Python
"""Test the high level SSG operations.
|
|
|
|
SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
|
|
SPDX-License-Identifier: GPL-3.0-only
|
|
"""
|
|
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'))
|