1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
"""
Testing a simple project which is built ad hoc
(programmatically)
(C) Laurent Franceschetti 2025
"""
import time
import pytest
from mkdocs_test import DocProject, lorem_ipsum
from mkdocs_test.common import h1, h2, h3
def test_pages():
project = DocProject("ad_hoc", new=True)
project.clear()
time.sleep(2) # so that we can see the files disappear
project.add_source_page("index.md","""
# Main Page
Hello world!
This is to test a very simple case of an MkDocs project,
with two pages.
""")
project.add_source_page("second.md", f"""
# Second page
## This is a subtitle
This is a second page.
## Second header of level two
This is more text.
{lorem_ipsum(3, ' ')}
Hello.
""",
meta={'foo':'Hello world'})
project.make_config(site_name="Simple ad-hoc test site",
theme='mkdocs')
project.build(strict=False)
h1(f"Testing project: {project.config.site_name}")
# did not fail
return_code = project.build_result.returncode
assert not return_code, "Failed when it should not"
# ----------------
# Test log
# ----------------
print(project.log)
entry = project.find_entry(source='test')
print("---")
print("Confirming export:", entry.title)
# ----------------
# First page
# ----------------
pagename = 'index'
h2(f"Testing: {pagename}")
page = project.get_page(pagename)
assert page, f"Page '{pagename}' does not exist in {project.pages}"
print("Plain text\n:", page.plain_text)
# ----------------
# Second page
# ----------------
# there is intentionally an error (`foo` does not exist)
pagename = 'second'
h2(f"Testing: {pagename}")
page = project.get_page(pagename)
assert page, f"Page '{pagename}' does not exist in {project.pages}"
assert page.meta.foo == "Hello world"
assert "second page" in page.plain_text
assert page.find_text('second page',header="subtitle", header_level=2)
print("Plain text\n:", page.plain_text)
# test find_header() method
assert page.find_header('subtitle', 2) # by level
assert not page.find_header('subtitle', 3)
assert page.find_header('subtitle') # all levels
# test find_all; all headers of level 2:
headers = page.find_all('h2')
assert len(headers) == 2
print("Headers found:", headers)
assert "Second header" in headers[1].string
# check that find also works:
assert page.find('h2').string == headers[0].string
print("Delete:")
project.delete()
|