@@ -72,6 +72,101 @@ def test_all_false_conditions_in_matching_path(self):
7272
7373 self .assertFalse (matches )
7474
75+ # Test case 4: The condition in the longest matching entry is empty
76+ def test_empty_conditions (self ):
77+ conditions , session_mock = load_test_conditions ()
78+
79+ nodeid = "test_conditional_mark.py::test_mark_2"
80+
81+ marks_found = []
82+ matches = find_all_matches (nodeid , conditions , session_mock , DYNAMIC_UPDATE_SKIP_REASON , CUSTOM_BASIC_FACTS )
83+
84+ for match in matches :
85+ for mark_name , mark_details in list (list (match .values ())[0 ].items ()):
86+ marks_found .append (mark_name )
87+
88+ if mark_name == "skip" :
89+ self .assertEqual (mark_details .get ("reason" ), "Skip test_conditional_mark.py::test_mark_2" )
90+
91+ self .assertEqual (len (marks_found ), 1 )
92+ self .assertIn ('skip' , marks_found )
93+
94+ # Test case 5: Test logic operation `or`
95+ def test_logic_operation_or (self ):
96+ conditions , session_mock = load_test_conditions ()
97+
98+ nodeid = "test_conditional_mark.py::test_mark_3"
99+
100+ marks_found = []
101+ matches = find_all_matches (nodeid , conditions , session_mock , DYNAMIC_UPDATE_SKIP_REASON , CUSTOM_BASIC_FACTS )
102+
103+ for match in matches :
104+ for mark_name , mark_details in list (list (match .values ())[0 ].items ()):
105+ marks_found .append (mark_name )
106+
107+ if mark_name == "skip" :
108+ self .assertEqual (mark_details .get ("reason" ), "Skip test_conditional_mark.py::test_mark_3" )
109+
110+ self .assertEqual (len (marks_found ), 1 )
111+ self .assertIn ('skip' , marks_found )
112+
113+ # Test case 6: Test logic operation `and`
114+ def test_logic_operation_and (self ):
115+ conditions , session_mock = load_test_conditions ()
116+
117+ nodeid = "test_conditional_mark.py::test_mark_4"
118+
119+ marks_found = []
120+ matches = find_all_matches (nodeid , conditions , session_mock , DYNAMIC_UPDATE_SKIP_REASON , CUSTOM_BASIC_FACTS )
121+
122+ for match in matches :
123+ for mark_name , mark_details in list (list (match .values ())[0 ].items ()):
124+ marks_found .append (mark_name )
125+
126+ if mark_name == "skip" :
127+ self .assertEqual (mark_details .get ("reason" ), "Skip test_conditional_mark.py::test_mark" )
128+
129+ self .assertEqual (len (marks_found ), 1 )
130+ self .assertIn ('skip' , marks_found )
131+
132+ # Test case 7: Test duplicated conditions
133+ def test_duplicated_conditions (self ):
134+ conditions , session_mock = load_test_conditions ()
135+
136+ nodeid = "test_conditional_mark.py::test_mark_5"
137+
138+ marks_found = []
139+ matches = find_all_matches (nodeid , conditions , session_mock , DYNAMIC_UPDATE_SKIP_REASON , CUSTOM_BASIC_FACTS )
140+
141+ for match in matches :
142+ for mark_name , mark_details in list (list (match .values ())[0 ].items ()):
143+ marks_found .append (mark_name )
144+
145+ if mark_name == "skip" :
146+ self .assertEqual (mark_details .get ("reason" ), "Skip test_conditional_mark.py::test_mark_5" )
147+
148+ self .assertEqual (len (marks_found ), 1 )
149+ self .assertIn ('skip' , marks_found )
150+
151+ # Test case 8: Test contradicting conditions
152+ def test_contradicting_conditions (self ):
153+ conditions , session_mock = load_test_conditions ()
154+
155+ nodeid = "test_conditional_mark.py::test_mark_6"
156+
157+ marks_found = []
158+ matches = find_all_matches (nodeid , conditions , session_mock , DYNAMIC_UPDATE_SKIP_REASON , CUSTOM_BASIC_FACTS )
159+
160+ for match in matches :
161+ for mark_name , mark_details in list (list (match .values ())[0 ].items ()):
162+ marks_found .append (mark_name )
163+
164+ if mark_name == "skip" :
165+ self .assertEqual (mark_details .get ("reason" ), "Skip test_conditional_mark.py::test_mark" )
166+
167+ self .assertEqual (len (marks_found ), 1 )
168+ self .assertIn ('skip' , marks_found )
169+
75170
76171if __name__ == "__main__" :
77172 unittest .main ()
0 commit comments