diff --git a/ietf/utils/management/commands/coverage_changes.py b/ietf/utils/management/commands/coverage_changes.py index 2da9e350b..5c8b3a4c4 100644 --- a/ietf/utils/management/commands/coverage_changes.py +++ b/ietf/utils/management/commands/coverage_changes.py @@ -7,6 +7,8 @@ from django.conf import settings from django.core.management.base import BaseCommand, CommandError from django.utils.six import string_types +import debug # pyflakes:ignore + class Command(BaseCommand): help = "Compare coverage between the latest release and the latest test run." option_list = BaseCommand.option_list + ( @@ -49,7 +51,9 @@ class Command(BaseCommand): self.stdout.write("\nShowing coverage differeces between %s and %s:\n" % (mversion, lversion)) for section in sections: mcoverage = master_coverage[section]["covered"] + mformat = master_coverage[section].get("format", 1) lcoverage = latest_coverage[section]["covered"] + lformat = latest_coverage[section].get("format", 1) # mkeys = mcoverage.keys() lkeys = lcoverage.keys() @@ -57,16 +61,31 @@ class Command(BaseCommand): keys = list(lkeys) keys.sort() header_written = False + for key in keys: if not key in mcoverage: - mcoverage[key] = None - if type(mcoverage[key]) is float or type(lcoverage[key]) is float: - mval = ("%5.1f" % (100*mcoverage[key])) if mcoverage[key] else "-" - lval = ("%5.1f %%" % (100*lcoverage[key])) if lcoverage[key] else "- " + mlines, mcov = None, None else: - mval = mcoverage[key] - lval = lcoverage[key] - if mcoverage[key] != lcoverage[key]: + if mformat == 1: + mlines, mcov = None, mcoverage[key] + elif mformat == 2: + mlines, mcov = mcoverage[key] + else: + raise CommandError("The release coverage data has an unknown format ('%s'), quitting." % mformat) + if lformat == 1: + llines, lcov = None, lcoverage[key] + elif lformat == 2: + llines, lcov = lcoverage[key] + else: + raise CommandError("The latest coverage data has an unknown format ('%s'), quitting." % lformat) + + if type(mcov) is float or type(lcov) is float: + mval = ("%5.1f" % (100*mcov)) if mcov else "-" + lval = ("%5.1f %%" % (100*lcov)) if lcov else "- " + else: + mval = mcov + lval = lcov + if mcov != lcov: if not header_written: self.stdout.write(self.diff_line_format % ("\n%s"%section.capitalize(), mversion[:7], lversion[:7])) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 667c8123e..5ff91138c 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -178,12 +178,12 @@ class CoverageReporter(Reporter): self.find_code_units(None) total = Numbers() - result = {"coverage": 0.0, "covered": {}} + result = {"coverage": 0.0, "covered": {}, "format": 2, } for cu in self.code_units: try: analysis = self.coverage._analyze(cu) nums = analysis.numbers - result["covered"][cu.name] = nums.pc_covered/100.0 + result["covered"][cu.name] = (nums.n_statements, nums.pc_covered/100.0) total += nums except KeyboardInterrupt: # pragma: not covered raise @@ -221,7 +221,7 @@ class CoverageTest(TestCase): if self.runner.run_full_test_suite: # Permit 0.02% variation in results -- otherwise small code changes become a pain fudge_factor = 0.0002 # 0.02% -- a small change in the last digit we show - self.assertGreaterEqual(test_coverage, master_coverage-fudge_factor, + self.assertGreaterEqual(test_coverage, master_coverage - fudge_factor, msg = "The %s coverage percentage is now lower (%.2f%%) than for version %s (%.2f%%)" % ( test, test_coverage*100, latest_coverage_version, master_coverage*100, )) self.assertLessEqual(len(test_missing), len(master_missing), @@ -331,14 +331,17 @@ class IetfTestRunner(DiscoverRunner): "template": { "coverage": 0.0, "covered": {}, + "format": 1, # default format, coverage data in 'covered' are just fractions }, "url": { "coverage": 0.0, "covered": {}, + "format": 1, }, "code": { "coverage": 0.0, "covered": {}, + "format": 1, }, } @@ -355,10 +358,6 @@ class IetfTestRunner(DiscoverRunner): print " Changing TEMPLATE_STRING_IF_INVALID to '' during testing." settings.TEMPLATE_STRING_IF_INVALID = '' - if settings.SERVE_CDN_FILES_LOCALLY_IN_DEV_MODE != True: - print " Changing SERVE_CDN_FILES_LOCALLY_IN_DEV_MODE to 'True' during testing." - settings.SERVE_CDN_FILES_LOCALLY_IN_DEV_MODE = True - assert not settings.IDTRACKER_BASE_URL.endswith('/') # Try to set up an SMTP test server. In case other test runs are