Coverage for tests/test_directives_variants.py: 100%
43 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-03-26 16:18 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-03-26 16:18 +0000
1import os
2import pytest
3from sphinx.application import Sphinx
5def transform_number_in_range(number: int)->int:
6 if 1 <= number and number <= 3:
7 out_number = number
8 else:
9 out_number = 4
10 return out_number
13def test_variants_project():
14 for l1 in range(0, 5, 1):
15 for l2 in range(0, 5, 1):
16 for l3 in range(0, 5, 1):
17 version_of_variants_project(l1, l2, l3)
20def version_of_variants_project(l1: int, l2: int, l3: int):
22 # Get test project dir
23 current_dir = os.path.dirname(os.path.abspath(__file__))
24 project_dir = os.path.join(current_dir, "variants_project")
25 src_dir = os.path.join(project_dir, "source")
26 build_dir = os.path.join(project_dir, "build")
28 l_s = str(l1) + str(l2) + str(l3)
29 build_dir = os.path.join(build_dir, l_s)
31 ifelse_variants = {
32 'l1': l1,
33 'l2': l2,
34 'l3': l3,
35 }
37 confoverrides = {
38 'ifelse_variants': ifelse_variants
39 }
41 # Run Sphinx build
42 app = Sphinx(
43 srcdir = src_dir,
44 confdir = src_dir,
45 outdir = build_dir,
46 doctreedir = build_dir,
47 buildername = "html",
48 freshenv = True,
49 confoverrides = confoverrides,
50 )
52 app.build()
54 # Verify the output
55 output_file_index = os.path.join(build_dir, "index.html")
56 assert os.path.exists(output_file_index)
58 l_s_expected = str(transform_number_in_range(l1)) + \
59 str(transform_number_in_range(l2)) + \
60 str(transform_number_in_range(l3))
61 l_s_expected = '<p>' + l_s_expected + '</p>'
63 with open(output_file_index, "r") as f:
64 output_content = f.read()
65 for l1o in range(0, 5, 1):
66 for l2o in range(0, 5, 1):
67 for l3o in range(0, 5, 1):
68 l_s_o = str(transform_number_in_range(l1o)) + \
69 str(transform_number_in_range(l2o)) + \
70 str(transform_number_in_range(l3o))
71 l_s_o = '<p>' + l_s_o + '</p>'
73 l_s_no = str(l1o) + str(l2o) + str(l3o)
74 l_s_no = '<p>' + l_s_no + '</p>'
76 if l_s_o == l_s_expected:
77 assert l_s_o in output_content
78 else:
79 assert l_s_o not in output_content
81 if l_s_no == l_s_expected:
82 assert l_s_no in output_content
83 else:
84 assert l_s_no not in output_content