add testing with Tox

This commit is contained in:
Denis-Cosmin Nutiu 2023-06-04 19:27:29 +03:00
parent 47a32569a9
commit 91b6bd9c79
7 changed files with 46 additions and 7 deletions

View file

@ -12,3 +12,6 @@ upload:
hatch publish
release:
hatch clean && hatch build && hatch publish
# Build the tox docker image, use docker run -v "$(pwd)":"/code" jekyll-to-hugo-tox -e ci to run tox
build-tox:
docker build . -f ./docker/Tox.Dockerfile -t jekyll-to-hugo-tox

View file

@ -38,7 +38,7 @@ class FileWriter(IoWriter):
fo.write(data)
class TestingWriter(IoWriter):
class MockWriter(IoWriter):
"""
Writes a post to a string.
"""

View file

@ -3,7 +3,7 @@ import pytest
from app.config import ConverterOptions
from app.converter import WordpressMarkdownConverter
from app.io.reader import StringReader
from app.io.writer import TestingWriter
from app.io.writer import MockWriter
from app.tests.utils import make_fake_configurator
@ -183,6 +183,6 @@ def test_write_hugo_post():
ConverterOptions(),
)
converter = WordpressMarkdownConverter(configurator)
writer = TestingWriter()
writer = MockWriter()
converter.write_hugo_post(writer, {"title": "Test"}, "Test\nLine 2")
assert writer.content == "---\ntitle: Test\n---\nTest\nLine 2"

View file

@ -2,11 +2,11 @@ FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt /app/requirements.txt
COPY ../requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
COPY .. /app
ENTRYPOINT [ "python" ]
CMD [ "main.py" ]

14
docker/Tox.Dockerfile Normal file
View file

@ -0,0 +1,14 @@
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y software-properties-common \
&& add-apt-repository ppa:deadsnakes/ppa \
&& apt install -y python3.10 && apt install -y python3.11 \
&& apt install -y python3-pip && pip3 install tox
VOLUME /code
WORKDIR /code
ENTRYPOINT tox
CMD ["-e", "ci"]

View file

@ -59,7 +59,7 @@ If you don't have Python installed, you can use Docker:
1. Build the image.
```bash
docker build -t jekyll-to-hugo .
docker build -t jekyll-to-hugo -f ./docker/Dockerfile .
```
2. Run the image. You will need to mount the following directories: config file, Jekyll posts directory, Hugo posts directory.

22
tox.ini Normal file
View file

@ -0,0 +1,22 @@
# content of: tox.ini , put in same dir as setup.py
[tox]
skip_missing_interpreters = True
envlist = py310,py311
[testenv]
# install pytest in the virtualenv where commands will be executed
deps =
pytest
pytest-cov
commands =
# NOTE: you can run any command line tool here not just tests
pytest -p no:warnings
[testenv:ci]
commands =
pytest —junitxml=results.xml \
—cov=your-module—cov-config=tox.ini —cov-report=xml
coverage2clover -i coverage.xml -o clover.xml
deps =
{[testenv]deps}
coverage2clover