adding initial tests

This commit is contained in:
2021-10-29 00:40:14 +01:00
parent 1fccf89d60
commit 883b38c800
6 changed files with 62 additions and 12 deletions

View File

@@ -21,6 +21,9 @@ Documentation:
Use <https://github.com/pdm-project/pdm/tree/main/.github/workflows> for an example Use <https://github.com/pdm-project/pdm/tree/main/.github/workflows> for an example
☐ Build the docs using a github action. ☐ Build the docs using a github action.
☐ Document how to use pytest to read a logging message
<https://stackoverflow.com/questions/53125305/testing-logging-output-with-pytest>
Functionality: Functionality:
✔ Move any `tembo.CONFIG` calls out of `pages.py` and ensure these are passed in from the cli. @done(21-10-28 19:44) ✔ Move any `tembo.CONFIG` calls out of `pages.py` and ensure these are passed in from the cli. @done(21-10-28 19:44)
✔ Make `config scope` a dict in `cli.py`. @done(21-10-28 19:44) ✔ Make `config scope` a dict in `cli.py`. @done(21-10-28 19:44)
@@ -28,6 +31,7 @@ Functionality:
✔ Add the `--example` output to the miscounted token message so the user knows the correct command to use. @done(21-10-29 00:15) ✔ Add the `--example` output to the miscounted token message so the user knows the correct command to use. @done(21-10-29 00:15)
✔ Page options dataclass @done(21-10-28 20:09) ✔ Page options dataclass @done(21-10-28 20:09)
☐ Replace loggers with `click.echo` for command outputs. Keep logging messages for actual logging messages? ☐ Replace loggers with `click.echo` for command outputs. Keep logging messages for actual logging messages?
☐ Replace scoped page creator inputs so that the whole class uses the options dict rather than the variables passed around.
☐ Use the python runner Duty ☐ Use the python runner Duty
<https://github.com/pawamoy/duty> <https://github.com/pawamoy/duty>
☐ Run tests ☐ Run tests

33
poetry.lock generated
View File

@@ -38,7 +38,7 @@ wrapt = ">=1.11,<1.14"
name = "atomicwrites" name = "atomicwrites"
version = "1.4.0" version = "1.4.0"
description = "Atomic file writes." description = "Atomic file writes."
category = "dev" category = "main"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
@@ -46,7 +46,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
name = "attrs" name = "attrs"
version = "21.2.0" version = "21.2.0"
description = "Classes Without Boilerplate" description = "Classes Without Boilerplate"
category = "dev" category = "main"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
@@ -181,7 +181,7 @@ typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.10\"
name = "iniconfig" name = "iniconfig"
version = "1.1.1" version = "1.1.1"
description = "iniconfig: brain-dead simple config-ini parsing" description = "iniconfig: brain-dead simple config-ini parsing"
category = "dev" category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
@@ -277,7 +277,7 @@ python-versions = "*"
name = "packaging" name = "packaging"
version = "21.0" version = "21.0"
description = "Core utilities for Python packages" description = "Core utilities for Python packages"
category = "dev" category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
@@ -367,7 +367,7 @@ test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock
name = "pluggy" name = "pluggy"
version = "1.0.0" version = "1.0.0"
description = "plugin and hook calling mechanisms for python" description = "plugin and hook calling mechanisms for python"
category = "dev" category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
@@ -422,7 +422,7 @@ python-versions = "*"
name = "py" name = "py"
version = "1.10.0" version = "1.10.0"
description = "library with cross-python path, ini-parsing, io, code, log facilities" description = "library with cross-python path, ini-parsing, io, code, log facilities"
category = "dev" category = "main"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
@@ -555,7 +555,7 @@ pylint = ">=1.7"
name = "pyparsing" name = "pyparsing"
version = "3.0.1" version = "3.0.1"
description = "Python parsing module" description = "Python parsing module"
category = "dev" category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
@@ -566,7 +566,7 @@ diagrams = ["jinja2", "railroad-diagrams"]
name = "pytest" name = "pytest"
version = "6.2.5" version = "6.2.5"
description = "pytest: simple powerful testing with Python" description = "pytest: simple powerful testing with Python"
category = "dev" category = "main"
optional = false optional = false
python-versions = ">=3.6" python-versions = ">=3.6"
@@ -583,6 +583,17 @@ toml = "*"
[package.extras] [package.extras]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
[[package]]
name = "pytest-datadir"
version = "1.3.1"
description = "pytest plugin for test data directories and files"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[package.dependencies]
pytest = ">=2.7.0"
[[package]] [[package]]
name = "python-dateutil" name = "python-dateutil"
version = "2.8.2" version = "2.8.2"
@@ -702,7 +713,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
[metadata] [metadata]
lock-version = "1.1" lock-version = "1.1"
python-versions = "^3.8" python-versions = "^3.8"
content-hash = "d34e6da39ccdc2c892d1e9c263384b3b0a3ea59aaf0efb57c0b7d52d23635b56" content-hash = "21a4ccbcf449e8ef748f7fffef2b07f245e58df5dc5c119591758f907c3c1b65"
[metadata.files] [metadata.files]
altgraph = [ altgraph = [
@@ -1026,6 +1037,10 @@ pytest = [
{file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
{file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
] ]
pytest-datadir = [
{file = "pytest-datadir-1.3.1.tar.gz", hash = "sha256:d3af1e738df87515ee509d6135780f25a15959766d9c2b2dbe02bf4fb979cb18"},
{file = "pytest_datadir-1.3.1-py2.py3-none-any.whl", hash = "sha256:1847ed0efe0bc54cac40ab3fba6d651c2f03d18dd01f2a582979604d32e7621e"},
]
python-dateutil = [ python-dateutil = [
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},

View File

@@ -10,6 +10,7 @@ click = "^8.0.3"
pendulum = "^2.1.2" pendulum = "^2.1.2"
Jinja2 = "^3.0.2" Jinja2 = "^3.0.2"
panaetius = { path = "../panaetius", develop = true } panaetius = { path = "../panaetius", develop = true }
pytest-datadir = "^1.3.1"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
pytest = "^6.2.5" pytest = "^6.2.5"

View File

@@ -1,10 +1,9 @@
import sys
import click import click
import tembo import tembo
from tembo.journal import pages from tembo.journal import pages
CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"]) CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"])

View File

@@ -6,9 +6,9 @@ import pathlib
import re import re
from typing import Collection from typing import Collection
import pendulum
import jinja2 import jinja2
from jinja2.exceptions import TemplateNotFound from jinja2.exceptions import TemplateNotFound
import pendulum
import tembo import tembo

View File

@@ -0,0 +1,31 @@
import pytest
from tembo.journal.pages import PageCreator
def test_page_creator_convert_to_path_missing_base_path(caplog):
# arrange
base_path = "/some/nonexistent/path"
page_path = "some_page"
filename = "some_filename"
extension = "some_extension"
# act
with pytest.raises(SystemExit) as system_exit:
PageCreator._convert_to_path(
base_path=base_path, page_path=page_path, filename=filename, extension=extension
)
# assert
assert system_exit.value.code == 1
assert caplog.records[0].levelname == "CRITICAL"
assert caplog.records[0].message == "Tembo base path of /some/nonexistent/path does not exist - exiting"
# @pytest.mark.parametrize([])
def test_page_creator_convert_to_path(shared_datadir):
# arrange
# act
# assert
pass