@@ -50,19 +50,21 @@ def _assert_expected_json_report_with_regions(
5050 Helper that creates an example file for regions tests.
5151 """
5252 self .make_file ("b.py" , """\
53- a = {'b' : 1}
53+ a = {"b" : 1}
5454
5555 def c():
56- return 1
56+ return 4
5757
5858 class C:
5959 pass
6060
6161 class D:
6262 def e(self):
63- return 2
63+ if a.get("a"):
64+ return 12
65+ return 13
6466 def f(self):
65- return 3
67+ return 15
6668 """ )
6769 self ._compare_json_reports (cov , expected_result , "b" )
6870
@@ -187,16 +189,16 @@ def test_regions_coverage(self) -> None:
187189 },
188190 "files" : {
189191 "b.py" : {
190- "executed_lines" : [1 , 3 , 6 , 7 , 9 , 10 , 12 ],
192+ "executed_lines" : [1 , 3 , 6 , 7 , 9 , 10 , 14 ],
191193 "summary" : {
192194 "covered_lines" : 7 ,
193- "num_statements" : 10 ,
194- "percent_covered" : 70.0 ,
195- "percent_covered_display" : "70 " ,
196- "missing_lines" : 3 ,
195+ "num_statements" : 12 ,
196+ "percent_covered" : 58.333333333333336 ,
197+ "percent_covered_display" : "58 " ,
198+ "missing_lines" : 5 ,
197199 "excluded_lines" : 0 ,
198200 },
199- "missing_lines" : [4 , 11 , 13 ],
201+ "missing_lines" : [4 , 11 , 12 , 13 , 15 ],
200202 "excluded_lines" : [],
201203 "function" : {
202204 "c" : {
@@ -216,13 +218,13 @@ def test_regions_coverage(self) -> None:
216218 "executed_lines" : [],
217219 "summary" : {
218220 "covered_lines" : 0 ,
219- "num_statements" : 1 ,
221+ "num_statements" : 3 ,
220222 "percent_covered" : 0.0 ,
221223 "percent_covered_display" : "0" ,
222- "missing_lines" : 1 ,
224+ "missing_lines" : 3 ,
223225 "excluded_lines" : 0 ,
224226 },
225- "missing_lines" : [11 ],
227+ "missing_lines" : [11 , 12 , 13 ],
226228 "excluded_lines" : [],
227229 },
228230 "D.f" : {
@@ -235,7 +237,7 @@ def test_regions_coverage(self) -> None:
235237 "missing_lines" : 1 ,
236238 "excluded_lines" : 0 ,
237239 },
238- "missing_lines" : [13 ],
240+ "missing_lines" : [15 ],
239241 "excluded_lines" : [],
240242 },
241243 },
@@ -257,25 +259,168 @@ def test_regions_coverage(self) -> None:
257259 "executed_lines" : [],
258260 "summary" : {
259261 "covered_lines" : 0 ,
260- "num_statements" : 2 ,
262+ "num_statements" : 4 ,
263+ "percent_covered" : 0.0 ,
264+ "percent_covered_display" : "0" ,
265+ "missing_lines" : 4 ,
266+ "excluded_lines" : 0 ,
267+ },
268+ "missing_lines" : [11 , 12 , 13 , 15 ],
269+ "excluded_lines" : [],
270+ },
271+ },
272+ },
273+ },
274+ "totals" : {
275+ "covered_lines" : 7 ,
276+ "num_statements" : 12 ,
277+ "percent_covered" : 58.333333333333336 ,
278+ "percent_covered_display" : "58" ,
279+ "missing_lines" : 5 ,
280+ "excluded_lines" : 0 ,
281+ },
282+ }
283+ self ._assert_expected_json_report_with_regions (cov , expected_result )
284+
285+ def test_branch_regions_coverage (self ) -> None :
286+ cov = coverage .Coverage (branch = True )
287+ expected_result = {
288+ "files" : {
289+ "b.py" : {
290+ "class" : {
291+ "C" : {
292+ "excluded_lines" : [],
293+ "executed_branches" : [],
294+ "executed_lines" : [],
295+ "missing_branches" : [],
296+ "missing_lines" : [],
297+ "summary" : {
298+ "covered_branches" : 0 ,
299+ "covered_lines" : 0 ,
300+ "excluded_lines" : 0 ,
301+ "missing_branches" : 0 ,
302+ "missing_lines" : 0 ,
303+ "num_branches" : 0 ,
304+ "num_partial_branches" : 0 ,
305+ "num_statements" : 0 ,
306+ "percent_covered" : 100.0 ,
307+ "percent_covered_display" : "100" ,
308+ },
309+ },
310+ "D" : {
311+ "excluded_lines" : [],
312+ "executed_branches" : [],
313+ "executed_lines" : [],
314+ "missing_branches" : [[11 , 12 ], [11 , 13 ]],
315+ "missing_lines" : [11 , 12 , 13 , 15 ],
316+ "summary" : {
317+ "covered_branches" : 0 ,
318+ "covered_lines" : 0 ,
319+ "excluded_lines" : 0 ,
320+ "missing_branches" : 2 ,
321+ "missing_lines" : 4 ,
322+ "num_branches" : 2 ,
323+ "num_partial_branches" : 0 ,
324+ "num_statements" : 4 ,
325+ "percent_covered" : 0.0 ,
326+ "percent_covered_display" : "0" ,
327+ },
328+ },
329+ },
330+ "excluded_lines" : [],
331+ "executed_branches" : [],
332+ "executed_lines" : [1 , 3 , 6 , 7 , 9 , 10 , 14 ],
333+ "function" : {
334+ "D.e" : {
335+ "excluded_lines" : [],
336+ "executed_branches" : [],
337+ "executed_lines" : [],
338+ "missing_branches" : [[11 , 12 ], [11 , 13 ]],
339+ "missing_lines" : [11 , 12 , 13 ],
340+ "summary" : {
341+ "covered_branches" : 0 ,
342+ "covered_lines" : 0 ,
343+ "excluded_lines" : 0 ,
344+ "missing_branches" : 2 ,
345+ "missing_lines" : 3 ,
346+ "num_branches" : 2 ,
347+ "num_partial_branches" : 0 ,
348+ "num_statements" : 3 ,
261349 "percent_covered" : 0.0 ,
262350 "percent_covered_display" : "0" ,
263- "missing_lines" : 2 ,
351+ },
352+ },
353+ "D.f" : {
354+ "excluded_lines" : [],
355+ "executed_branches" : [],
356+ "executed_lines" : [],
357+ "missing_branches" : [],
358+ "missing_lines" : [15 ],
359+ "summary" : {
360+ "covered_branches" : 0 ,
361+ "covered_lines" : 0 ,
264362 "excluded_lines" : 0 ,
363+ "missing_branches" : 0 ,
364+ "missing_lines" : 1 ,
365+ "num_branches" : 0 ,
366+ "num_partial_branches" : 0 ,
367+ "num_statements" : 1 ,
368+ "percent_covered" : 0.0 ,
369+ "percent_covered_display" : "0" ,
265370 },
266- "missing_lines" : [11 , 13 ],
371+ },
372+ "c" : {
267373 "excluded_lines" : [],
374+ "executed_branches" : [],
375+ "executed_lines" : [],
376+ "missing_branches" : [],
377+ "missing_lines" : [4 ],
378+ "summary" : {
379+ "covered_branches" : 0 ,
380+ "covered_lines" : 0 ,
381+ "excluded_lines" : 0 ,
382+ "missing_branches" : 0 ,
383+ "missing_lines" : 1 ,
384+ "num_branches" : 0 ,
385+ "num_partial_branches" : 0 ,
386+ "num_statements" : 1 ,
387+ "percent_covered" : 0.0 ,
388+ "percent_covered_display" : "0" ,
389+ },
268390 },
269391 },
392+ "missing_branches" : [[11 , 12 ], [11 , 13 ]],
393+ "missing_lines" : [4 , 11 , 12 , 13 , 15 ],
394+ "summary" : {
395+ "covered_branches" : 0 ,
396+ "covered_lines" : 7 ,
397+ "excluded_lines" : 0 ,
398+ "missing_branches" : 2 ,
399+ "missing_lines" : 5 ,
400+ "num_branches" : 2 ,
401+ "num_partial_branches" : 0 ,
402+ "num_statements" : 12 ,
403+ "percent_covered" : 50.0 ,
404+ "percent_covered_display" : "50" ,
405+ },
270406 },
271407 },
408+ "meta" : {
409+ "branch_coverage" : True ,
410+ "format" : 2 ,
411+ "show_contexts" : False ,
412+ },
272413 "totals" : {
414+ "covered_branches" : 0 ,
273415 "covered_lines" : 7 ,
274- "num_statements" : 10 ,
275- "percent_covered" : 70.0 ,
276- "percent_covered_display" : "70" ,
277- "missing_lines" : 3 ,
278416 "excluded_lines" : 0 ,
417+ "missing_branches" : 2 ,
418+ "missing_lines" : 5 ,
419+ "num_branches" : 2 ,
420+ "num_partial_branches" : 0 ,
421+ "num_statements" : 12 ,
422+ "percent_covered" : 50.0 ,
423+ "percent_covered_display" : "50" ,
279424 },
280425 }
281426 self ._assert_expected_json_report_with_regions (cov , expected_result )
0 commit comments