Skip to content

Commit

Permalink
Improve test coverage, docs, and .gitignore
Browse files Browse the repository at this point in the history
  • Loading branch information
boxydog committed Jun 1, 2024
1 parent 8fd94ea commit 8f1830d
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 3 deletions.
4 changes: 3 additions & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
[report]
omit = pelican/tests/*
omit =
pelican/tests/*
pelican/signals.py
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,9 @@ samples/output
*.lock
.pdm-python
.venv

# direnv
.envrc

# pycharm
.idea
28 changes: 28 additions & 0 deletions docs/contribute.rst
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,20 @@ your bug fix or feature::
Now you can make changes to Pelican, its documentation, and/or other aspects of
the project.

Setting up git blame
--------------------

``git blame`` annotates lines from a file with information about the pull request
that last modified it. Sweeping shallow changes (like formatting) can make that
information less useful, so we keep a list of such changes to be ignored. To set
that up in your repository::

git config blame.ignoreRevsFile .git-blame-ignore-revs

For more information, see here_.

.. _here: https://www.michaelheap.com/git-ignore-rev/

Running the test suite
----------------------

Expand Down Expand Up @@ -108,6 +122,20 @@ environments.

.. _Tox: https://tox.readthedocs.io/en/latest/

Running a code coverage report
------------------------------

The code is more likely to stay robust if it is tested.
coverage_ is a library that measures how much of the code is tested.
To run it::

invoke coverage
open htmlcov/index.html

The HTML will show overall coverage, coverage per file, and even line-by-line coverage.

.. _coverage: https://github.com/nedbat/coveragepy

Building the docs
-----------------

Expand Down
1 change: 1 addition & 0 deletions pelican/tests/simple_content/article_with_md_extension.md
37 changes: 35 additions & 2 deletions pelican/tests/test_pelican.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import contextlib
import io
import locale
import logging
import os
Expand All @@ -6,9 +8,12 @@
import unittest
from collections.abc import Sequence
from shutil import rmtree
from tempfile import mkdtemp
from tempfile import TemporaryDirectory, mkdtemp
from unittest.mock import patch

from pelican import Pelican
from rich.console import Console

from pelican import Pelican, __version__, main
from pelican.generators import StaticGenerator
from pelican.settings import read_settings
from pelican.tests.support import (
Expand Down Expand Up @@ -271,3 +276,31 @@ def test_module_load(self):
[sys.executable, "-m", "pelican", "--help"]
).decode("ascii", "replace")
assert "usage:" in output

def test_main_version(self):
"""Run main --version."""
out = io.StringIO()
with contextlib.redirect_stdout(out):
with self.assertRaises(SystemExit):
main(["--version"])
self.assertEqual(f"{__version__}\n", out.getvalue())

def test_main_help(self):
"""Run main --help."""
out = io.StringIO()
with contextlib.redirect_stdout(out):
with self.assertRaises(SystemExit):
main(["--help"])
self.assertIn("A tool to generate a static blog", out.getvalue())

def test_main_on_content(self):
"""Invoke main on simple_content directory."""
out, err = io.StringIO(), io.StringIO()
with contextlib.redirect_stdout(out), contextlib.redirect_stderr(err):
with TemporaryDirectory() as temp_dir:
# Don't highlight anything.
# See https://rich.readthedocs.io/en/stable/highlighting.html
with patch("pelican.log.console", new=Console(highlight=False)):
main(["-o", temp_dir, "pelican/tests/simple_content"])
self.assertIn("Processed 1 article", out.getvalue())
self.assertEqual("", err.getvalue())

0 comments on commit 8f1830d

Please sign in to comment.