Browse Source

Optimize plugins testing without building the full test gallery

pull/498/head
Simon Conseil 3 years ago
parent
commit
848fcaa853
  1. 13
      tests/sample/sigal.conf.py
  2. 13
      tests/test_cli.py
  3. 84
      tests/test_plugins.py
  4. 4
      tox.ini

13
tests/sample/sigal.conf.py

@ -20,10 +20,8 @@ plugins = [
"sigal.plugins.copyright", "sigal.plugins.copyright",
"sigal.plugins.extended_caching", "sigal.plugins.extended_caching",
"sigal.plugins.feeds", "sigal.plugins.feeds",
"sigal.plugins.nomedia",
"sigal.plugins.watermark", "sigal.plugins.watermark",
"sigal.plugins.zip_gallery", "sigal.plugins.zip_gallery",
"sigal.plugins.titleregexp",
] ]
copyright = "© An example copyright message" copyright = "© An example copyright message"
adjust_options = { adjust_options = {
@ -42,17 +40,6 @@ thumb_size = (200, 150)
rss_feed = {"feed_url": "http://127.0.0.1:8000/feed.rss", "nb_items": 10} rss_feed = {"feed_url": "http://127.0.0.1:8000/feed.rss", "nb_items": 10}
atom_feed = {"feed_url": "http://127.0.0.1:8000/feed.atom", "nb_items": 10} atom_feed = {"feed_url": "http://127.0.0.1:8000/feed.atom", "nb_items": 10}
titleregexp = {
"regexp": [
{
"search": r"test ?(.*)",
"replace": r"titleregexp \1",
"substitute": [["2", "02"]],
"break": 1,
}
]
}
# theme = 'photoswipe' # theme = 'photoswipe'
# theme = 'galleria' # theme = 'galleria'
# thumb_size = (280, 210) # thumb_size = (280, 210)

13
tests/test_cli.py

@ -40,13 +40,20 @@ def test_build(tmpdir, disconnect_signals):
join(tmpdir, "pictures", "KeckObservatory20071020.jpg"), join(tmpdir, "pictures", "KeckObservatory20071020.jpg"),
) )
result = runner.invoke(build, ["-n", 1, "--debug"]) result = runner.invoke(build, ["-n", 1, "--debug", "--verbose"])
assert (
result.output
== "Only one option of debug, verbose and quiet should be used\n"
)
assert result.exit_code == 1
result = runner.invoke(build, ["-n", 1, "--verbose"])
assert result.output == "Settings file not found: sigal.conf.py\n" assert result.output == "Settings file not found: sigal.conf.py\n"
assert result.exit_code == 1 assert result.exit_code == 1
os.chdir(tmpdir) os.chdir(tmpdir)
result = runner.invoke(build, ["foo", "-n", 1, "--debug"]) result = runner.invoke(build, ["foo", "-n", 1, "--quiet"])
assert result.exit_code == 1 assert result.exit_code == 1
assert "Input directory not found" in result.output assert "Input directory not found" in result.output
@ -106,9 +113,11 @@ def test_serve(tmpdir):
result = runner.invoke(serve) result = runner.invoke(serve)
assert result.exit_code == 2 assert result.exit_code == 2
assert result.output.startswith("The _build directory doesn't exist")
result = runner.invoke(serve, ["-c", config_file]) result = runner.invoke(serve, ["-c", config_file])
assert result.exit_code == 1 assert result.exit_code == 1
assert result.output.endswith("maybe try building first?\n")
def test_set_meta(tmpdir): def test_set_meta(tmpdir):

84
tests/test_plugins.py

@ -6,54 +6,58 @@ from sigal.utils import init_plugins
CURRENT_DIR = os.path.dirname(__file__) CURRENT_DIR = os.path.dirname(__file__)
def test_plugins(settings, tmpdir, disconnect_signals): def _build_with_plugin(
settings["destination"] = str(tmpdir) settings, input_path, output_path, plugin, **additional_settings
if "sigal.plugins.nomedia" not in settings["plugins"]: ):
settings["plugins"] += ["sigal.plugins.nomedia"] settings["source"] = os.path.join(settings["source"], input_path)
if "sigal.plugins.media_page" not in settings["plugins"]: settings["destination"] = str(output_path)
settings["plugins"] += ["sigal.plugins.media_page"] settings["plugins"] = [plugin]
settings.update(additional_settings)
init_plugins(settings) init_plugins(settings)
gal = Gallery(settings) gal = Gallery(settings, ncpu=1)
gal.build() gal.build()
return gal
out_html = os.path.join(
settings["destination"], "dir2", "KeckObservatory20071020.jpg.html"
)
assert os.path.isfile(out_html)
for path, dirs, files in os.walk(os.path.join(str(tmpdir), "nomedia")):
assert "ignore" not in path
for file in files: def test_media_page(settings, tmp_path, disconnect_signals):
assert "ignore" not in file _build_with_plugin(settings, "dir2", tmp_path, "sigal.plugins.media_page")
assert (tmp_path / "KeckObservatory20071020.jpg.html").is_file()
def test_nonmedia_files(settings, tmpdir, disconnect_signals): def test_nomedia(settings, tmp_path, disconnect_signals):
settings["destination"] = str(tmpdir) _build_with_plugin(settings, "nomedia", tmp_path, "sigal.plugins.nomedia")
settings["plugins"] += ["sigal.plugins.nonmedia_files"]
settings["nonmedia_files_options"] = {"thumb_bg_color": "red"}
init_plugins(settings) for path, dirs, files in os.walk(str(tmp_path)):
assert "ignore" not in path
gal = Gallery(settings) for file in files:
gal.build() assert "ignore" not in file
outfile = os.path.join(settings["destination"], "nonmedia_files", "dummy.pdf")
assert os.path.isfile(outfile)
outthumb = os.path.join( def test_nonmedia_files(settings, tmp_path, disconnect_signals):
settings["destination"], "nonmedia_files", "thumbnails", "dummy.tn.jpg" _build_with_plugin(
settings,
"nonmedia_files",
tmp_path,
"sigal.plugins.nonmedia_files",
nonmedia_files_options={"thumb_bg_color": "red"},
) )
assert os.path.isfile(outthumb) assert (tmp_path / "dummy.pdf").is_file()
assert (tmp_path / "thumbnails" / "dummy.tn.jpg").is_file()
def test_titleregexp(settings, tmpdir, disconnect_signals):
if "sigal.plugins.titleregexp" not in settings["plugins"]: def test_titleregexp(settings, tmp_path, disconnect_signals):
settings["plugins"] += ["sigal.plugins.titleregexp"] conf = {
"regexp": [
init_plugins(settings) {
gal = Gallery(settings) "search": r"test ?(.*)",
gal.build() "replace": r"titleregexp \1",
"substitute": [["2", "02"]],
assert gal.albums.get("dir1").albums[1].title == "titleregexp 02" "break": 1,
}
]
}
gal = _build_with_plugin(
settings, "dir1", tmp_path, "sigal.plugins.titleregexp", titleregexp=conf
)
assert gal.albums["test2"].title == "titleregexp 02"

4
tox.ini

@ -19,7 +19,9 @@ deps =
extras = extras =
all all
tests tests
commands = pytest --cov sigal --cov-report term tests/ commands =
pip list
pytest --cov sigal --cov-report term --durations=10 tests/
[testenv:doc] [testenv:doc]
whitelist_externals = make whitelist_externals = make

Loading…
Cancel
Save