When generating my own notes , it’s easy for me to fat-finger the latex
or similar. To address this, I have a few tests to ensure I
don’t have formatting errors.
sudo apt install -y python3-pip python3-venv
python3 -m venv /tmp/venv/
. /tmp/venv/bin/activate
pip install pytest
pip install requests parsel
import os
import os.path
import pytest
import requests
from parsel import Selector
def files_to_urls (d: os.PathLike = '/home/justin/quartz/content/posts' ) -> list[ str ]:
urls = []
for _root, _dirs, files in os.walk(d):
for f in files:
basename, _ext = os.path.splitext(f)
urls.append( f 'http://localhost:8080/posts/ { basename } ' )
return urls
all_urls = files_to_urls()
@pytest.mark.parametrize ( "url" , all_urls)
def test_has_latex_warnings (url):
content = requests.get(url)
print (url)
z = Selector( text = content.text)
found = [ '#cc0000' in x for x in z.css( '.katex *' ).getall()]
assert any (found) == False , f " { url } has malformed (red) content"
@pytest.mark.parametrize ( "url" , all_urls)
def test_no_unmarked_sections (url):
content = requests.get(url)
z = Selector( text = content.text)
print (url)
assert ' \\ begin' not in z.css( 'body' ).getall(), f "Missing $$ around a latex \\ begin section on { url } "
@pytest.mark.parametrize ( "url" , all_urls)
def test_no_latex_errors (url):
content = requests.get(url)
z = Selector( text = content.text)
print (url)
err = z.css( '.katex-error' )
assert len (err) == 0 , err.attrib[ 'title' ]