from tempfile import TemporaryDirectory import os import pytest from blag import blag @pytest.fixture def outdir(): with TemporaryDirectory() as dir: yield dir def test_generate_feed(outdir): articles = [] blag.generate_feed(articles, outdir, ' ', ' ', ' ', ' ') assert os.path.exists(f'{outdir}/atom.xml') def test_parse_args_build(): # test default args args = blag.parse_args(['build']) assert args.input_dir == 'content' assert args.output_dir == 'build' assert args.template_dir == 'templates' assert args.static_dir == 'static' # input dir args = blag.parse_args(['build', '-i', 'foo']) assert args.input_dir == 'foo' args = blag.parse_args(['build', '--input-dir', 'foo']) assert args.input_dir == 'foo' # output dir args = blag.parse_args(['build', '-o', 'foo']) assert args.output_dir == 'foo' args = blag.parse_args(['build', '--output-dir', 'foo']) assert args.output_dir == 'foo' # template dir args = blag.parse_args(['build', '-t', 'foo']) assert args.template_dir == 'foo' args = blag.parse_args(['build', '--template-dir', 'foo']) assert args.template_dir == 'foo' # static dir args = blag.parse_args(['build', '-s', 'foo']) assert args.static_dir == 'foo' args = blag.parse_args(['build', '--static-dir', 'foo']) assert args.static_dir == 'foo' def test_get_config(): config = """ [main] base_url = https://example.com/ title = title description = description author = a. u. thor """ # happy path with TemporaryDirectory() as dir: configfile = f'{dir}/config.ini' with open(configfile, 'w') as fh: fh.write(config) config_parsed = blag.get_config(configfile) assert config_parsed['base_url'] == 'https://example.com/' assert config_parsed['title'] == 'title' assert config_parsed['description'] == 'description' assert config_parsed['author'] == 'a. u. thor' # a missing required config causes a sys.exit for x in 'base_url', 'title', 'description', 'author': config2 = '\n'.join([line for line in config.splitlines() if not line.startswith(x)]) with TemporaryDirectory() as dir: configfile = f'{dir}/config.ini' with open(configfile, 'w') as fh: fh.write(config2) with pytest.raises(SystemExit): config_parsed = blag.get_config(configfile) # base_url gets / appended if it is missing config = """ [main] base_url = https://example.com title = title description = description author = a. u. thor """ with TemporaryDirectory() as dir: configfile = f'{dir}/config.ini' with open(configfile, 'w') as fh: fh.write(config) config_parsed = blag.get_config(configfile) assert config_parsed['base_url'] == 'https://example.com/' def test_environment_factory(): globals_ = { 'foo': 'bar', 'test': 'me' } env = blag.environment_factory(globals_=globals_) assert env.globals['foo'] == 'bar' assert env.globals['test'] == 'me'