Added detailed line-by line changes in code coverage to the coverage_changes management command. Use verbosity 2 or higher.

- Legacy-Id: 14007
This commit is contained in:
Henrik Levkowetz 2017-07-30 13:50:06 +00:00
parent 868427a645
commit 8a53653682

View file

@ -5,6 +5,8 @@ import json
import codecs
import gzip
from difflib import ndiff
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError
from django.utils.six import string_types
@ -134,6 +136,25 @@ class Command(BaseCommand):
self.stdout.write(self.diff_line_format % ("-"*8, "-"*8, "-"*58))
header_written = True
self.stdout.write(self.diff_line_format % (mval, lval, key, ))
if mmisslines and lmisslines and set(lmissnum) != set(mmissnum) and options.get('verbosity',1) > 2:
self.stdout.write(' ------------------------------------------------------------')
ln = 0
mn = 0
p = -1
n = 0
for line in ndiff(mmisslines, lmisslines):
n = lmissnum[ln]
prefix, text = line[:2], line[2:]
if mn<len(mmisslines) and text == mmisslines[mn]:
mn += 1
if ln<len(lmisslines) and text == lmisslines[ln]:
ln += 1
if line[0] in ['+', '-']:
if not n in [p, p+1]:
self.stdout.write('\n')
self.stdout.write("%s" % (line, ))
p = n
self.stdout.write('\n')
lkey_set = set(lkeys)
rkey_set = set(mkeys)
missing_key_set = rkey_set - lkey_set