@@ -50,19 +50,21 @@ def _assert_expected_json_report_with_regions(
50
50
Helper that creates an example file for regions tests.
51
51
"""
52
52
self .make_file ("b.py" , """\
53
- a = {'b' : 1}
53
+ a = {"b" : 1}
54
54
55
55
def c():
56
- return 1
56
+ return 4
57
57
58
58
class C:
59
59
pass
60
60
61
61
class D:
62
62
def e(self):
63
- return 2
63
+ if a.get("a"):
64
+ return 12
65
+ return 13
64
66
def f(self):
65
- return 3
67
+ return 15
66
68
""" )
67
69
self ._compare_json_reports (cov , expected_result , "b" )
68
70
@@ -187,16 +189,16 @@ def test_regions_coverage(self) -> None:
187
189
},
188
190
"files" : {
189
191
"b.py" : {
190
- "executed_lines" : [1 , 3 , 6 , 7 , 9 , 10 , 12 ],
192
+ "executed_lines" : [1 , 3 , 6 , 7 , 9 , 10 , 14 ],
191
193
"summary" : {
192
194
"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 ,
197
199
"excluded_lines" : 0 ,
198
200
},
199
- "missing_lines" : [4 , 11 , 13 ],
201
+ "missing_lines" : [4 , 11 , 12 , 13 , 15 ],
200
202
"excluded_lines" : [],
201
203
"function" : {
202
204
"c" : {
@@ -216,13 +218,13 @@ def test_regions_coverage(self) -> None:
216
218
"executed_lines" : [],
217
219
"summary" : {
218
220
"covered_lines" : 0 ,
219
- "num_statements" : 1 ,
221
+ "num_statements" : 3 ,
220
222
"percent_covered" : 0.0 ,
221
223
"percent_covered_display" : "0" ,
222
- "missing_lines" : 1 ,
224
+ "missing_lines" : 3 ,
223
225
"excluded_lines" : 0 ,
224
226
},
225
- "missing_lines" : [11 ],
227
+ "missing_lines" : [11 , 12 , 13 ],
226
228
"excluded_lines" : [],
227
229
},
228
230
"D.f" : {
@@ -235,7 +237,7 @@ def test_regions_coverage(self) -> None:
235
237
"missing_lines" : 1 ,
236
238
"excluded_lines" : 0 ,
237
239
},
238
- "missing_lines" : [13 ],
240
+ "missing_lines" : [15 ],
239
241
"excluded_lines" : [],
240
242
},
241
243
},
@@ -257,25 +259,168 @@ def test_regions_coverage(self) -> None:
257
259
"executed_lines" : [],
258
260
"summary" : {
259
261
"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 ,
261
349
"percent_covered" : 0.0 ,
262
350
"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 ,
264
362
"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" ,
265
370
},
266
- "missing_lines" : [11 , 13 ],
371
+ },
372
+ "c" : {
267
373
"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
+ },
268
390
},
269
391
},
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
+ },
270
406
},
271
407
},
408
+ "meta" : {
409
+ "branch_coverage" : True ,
410
+ "format" : 2 ,
411
+ "show_contexts" : False ,
412
+ },
272
413
"totals" : {
414
+ "covered_branches" : 0 ,
273
415
"covered_lines" : 7 ,
274
- "num_statements" : 10 ,
275
- "percent_covered" : 70.0 ,
276
- "percent_covered_display" : "70" ,
277
- "missing_lines" : 3 ,
278
416
"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" ,
279
424
},
280
425
}
281
426
self ._assert_expected_json_report_with_regions (cov , expected_result )
0 commit comments