66
77
88import pytest
9+ import re
910
1011from test .fixture import DocProject , find_after
1112
@@ -39,7 +40,23 @@ def test_pages():
3940 assert VARIABLE_NAME in PROJECT .config .extra
4041 price = PROJECT .config .extra .unit_price
4142
42-
43+
44+ # check the page metadata
45+ # those metadata are not in the config file
46+ metadata = page .metadata
47+ assert 'user' in metadata
48+ assert 'bottles' in metadata
49+ assert 'announcement' in metadata
50+
51+ assert metadata .user == 'Joe'
52+ assert page .find (metadata .user , header = 'Installed' , header_level = 4 )
53+ assert page .find (metadata .announcement , header = 'Accessing meta' )
54+ assert page .find (metadata .bottles .lemonade , header = 'Dot notation' )
55+ assert not page .find (metadata .user * 2 , header = 'Macro' ) # negative test
56+
57+ assert 'bottles' not in PROJECT .config .extra
58+ assert 'bottles' not in PROJECT .variables
59+
4360 # check that the `greeting` variable is rendered:
4461 assert VARIABLE_NAME in PROJECT .variables
4562 assert f"{ price } euros" in page .markdown
@@ -58,7 +75,34 @@ def test_pages():
5875 # ----------------
5976 page = PROJECT .get_page ('environment' )
6077
78+ # read a few things that are in the tables
79+ assert page .find ('unit_price = 50' , header = 'General list' )
80+ # there are two headers containing 'Macros':
81+ assert page .find ('say_hello' , header = 'Macros$' )
82+
83+
84+ # test the `include_file()` method (used for the mkdocs.yaml file)
85+ HEADER = r"^mkdocs.*portion"
86+ assert page .find ('site_name:' , header = HEADER )
87+ assert page .find ('name: material' , header = HEADER )
88+ assert not page .find ('foobar 417' , header = HEADER ) # negative control
89+
90+ # ----------------
91+ # Literal page
92+ # ----------------
93+ page = PROJECT .get_page ('literal' )
94+ # instruction not to render:
95+ assert page .metadata .render_macros == False
96+
97+ assert page .is_rendered == False , f"Target: { page .markdown } , \n Source:{ page .source_page .markdown } "
98+
99+ # Latex is not interpreted:
100+ latex = re .escape (r"\begin{tabular}{|ccc|}" )
101+ assert page .find (latex , header = 'Offending Latex' )
61102
103+ # Footer is processed (but not rendered)
104+ assert page .find (r'now()' , header = 'Pre-macro' )
105+ assert page .find ('Not interpreted' , header = 'Post-macro' )
62106
63107
64108def test_strict ():
0 commit comments