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

1import os 

2import pytest 

3from sphinx.application import Sphinx 

4 

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 

11 

12 

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) 

18 

19 

20def version_of_variants_project(l1: int, l2: int, l3: int): 

21 

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") 

27 

28 l_s = str(l1) + str(l2) + str(l3) 

29 build_dir = os.path.join(build_dir, l_s) 

30 

31 ifelse_variants = { 

32 'l1': l1, 

33 'l2': l2, 

34 'l3': l3, 

35 } 

36 

37 confoverrides = { 

38 'ifelse_variants': ifelse_variants 

39 } 

40 

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 ) 

51 

52 app.build() 

53 

54 # Verify the output 

55 output_file_index = os.path.join(build_dir, "index.html") 

56 assert os.path.exists(output_file_index) 

57 

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>' 

62 

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>' 

72 

73 l_s_no = str(l1o) + str(l2o) + str(l3o) 

74 l_s_no = '<p>' + l_s_no + '</p>' 

75 

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 

80 

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 

85