Don't use internal templates anymore.

Blag will throw an error if a template is not found locally. The error
message contains an explanation for the user on where to get the missing
templates.

Quickstart will generate templates for the user in the working
directory.

Updated tests appropriately.
This commit is contained in:
Bastian Venthur
2023-06-01 13:35:33 +02:00
parent a3572d414f
commit c952c574b7
6 changed files with 88 additions and 33 deletions

View File

@@ -8,18 +8,18 @@ import os
import pytest
from jinja2 import Environment, Template
from blag import blag
from blag import blag, quickstart
@pytest.fixture
def environment() -> Iterator[Environment]:
def environment(cleandir: str) -> Iterator[Environment]:
site = {
'base_url': 'site base_url',
'title': 'site title',
'description': 'site description',
'author': 'site author',
}
env = blag.environment_factory(globals_=dict(site=site))
env = blag.environment_factory('templates', globals_=dict(site=site))
yield env
@@ -50,7 +50,7 @@ def tag_template(environment: Environment) -> Iterator[Template]:
@pytest.fixture
def cleandir() -> Iterator[str]:
"""Create a temporary workind directory and cwd."""
"""Create a temporary working directory and cwd."""
config = """
[main]
base_url = https://example.com/
@@ -60,13 +60,14 @@ author = a. u. thor
"""
with TemporaryDirectory() as dir:
for d in 'content', 'build', 'static', 'templates':
for d in 'content', 'build', 'static':
os.mkdir(f'{dir}/{d}')
with open(f'{dir}/config.ini', 'w') as fh:
fh.write(config)
# change directory
old_cwd = os.getcwd()
os.chdir(dir)
quickstart.copy_templates()
yield dir
# and change back afterwards
os.chdir(old_cwd)

View File

@@ -179,9 +179,9 @@ author = a. u. thor
assert config_parsed['base_url'] == 'https://example.com/'
def test_environment_factory() -> None:
def test_environment_factory(cleandir: str) -> None:
globals_: dict[str, object] = {'foo': 'bar', 'test': 'me'}
env = blag.environment_factory(globals_=globals_)
env = blag.environment_factory("templates", globals_=globals_)
assert env.globals['foo'] == 'bar'
assert env.globals['test'] == 'me'
@@ -299,6 +299,22 @@ foo bar
assert os.path.exists(f'{args.output_dir}/tags/bar.html')
@pytest.mark.parametrize(
'template',
[
'page.html',
'article.html',
'archive.html',
'tags.html',
'tag.html',
]
)
def test_missing_template_raises(template: str, args: Namespace) -> None:
os.remove(f'templates/{template}')
with pytest.raises(SystemExit):
blag.build(args)
def test_main(cleandir: str) -> None:
blag.main(['build'])