1
0
mirror of https://github.com/django/django.git synced 2025-07-05 18:29:11 +00:00

[soc2009/testing] The smallest API change in latest coverage.py broke everything for quite some time. This fixes. Looks like code cleanup has been delayed.

git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/test-improvements@10963 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Kevin Kubasik 2009-06-09 11:23:21 +00:00
parent 6c082b5539
commit 1a40a4fef7
3 changed files with 22 additions and 18 deletions

View File

@ -156,7 +156,7 @@ class DefaultTestRunner(object):
Placeholder constructor. Want to make it obvious that it can Placeholder constructor. Want to make it obvious that it can
be overridden. be overridden.
""" """
pass self.isloaded = True
def run_tests(self, test_labels, verbosity=1, interactive=True, extra_tests=[]): def run_tests(self, test_labels, verbosity=1, interactive=True, extra_tests=[]):
""" """

View File

@ -3,7 +3,7 @@ import os, sys
from django.conf import settings from django.conf import settings
from django.db.models import get_app, get_apps from django.db.models import get_app, get_apps
from django.test.simple import DefaultTestRunner as base_run_tests from django.test.simple import DefaultTestRunner
from django.utils.module_tools import get_all_modules, find_or_load_module from django.utils.module_tools import get_all_modules, find_or_load_module
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
@ -22,7 +22,8 @@ class BaseCoverageRunner(object):
def __init__(self): def __init__(self):
"""Placeholder (since it is overrideable)""" """Placeholder (since it is overrideable)"""
pass self.cov = coverage.coverage(cover_pylib=True)
self.cov.erase()
def run_tests(self, test_labels, verbosity=1, interactive=True, def run_tests(self, test_labels, verbosity=1, interactive=True,
extra_tests=[]): extra_tests=[]):
@ -30,16 +31,17 @@ class BaseCoverageRunner(object):
Runs the specified tests while generating code coverage statistics. Upon Runs the specified tests while generating code coverage statistics. Upon
the tests' completion, the results are printed to stdout. the tests' completion, the results are printed to stdout.
""" """
#coverage.erase() self.cov.erase()
#Allow an on-disk cache of coverage stats. #Allow an on-disk cache of coverage stats.
#coverage.use_cache(0) self.cov.use_cache(0)
for e in getattr(settings, 'COVERAGE_CODE_EXCLUDES', []): #for e in getattr(settings, 'COVERAGE_CODE_EXCLUDES', []):
coverage.exclude(e) # self.cov.exclude(e)
brt = base_run_tests()
coverage.start() self.cov.start()
brt = DefaultTestRunner()
results = brt.run_tests(test_labels, verbosity, interactive, extra_tests) results = brt.run_tests(test_labels, verbosity, interactive, extra_tests)
coverage.stop() self.cov.stop()
coverage_modules = [] coverage_modules = []
if test_labels: if test_labels:
@ -56,9 +58,10 @@ class BaseCoverageRunner(object):
packages, self.modules, self.excludes, self.errors = get_all_modules( packages, self.modules, self.excludes, self.errors = get_all_modules(
coverage_modules, getattr(settings, 'COVERAGE_MODULE_EXCLUDES', []), coverage_modules, getattr(settings, 'COVERAGE_MODULE_EXCLUDES', []),
getattr(settings, 'COVERAGE_PATH_EXCLUDES', [])) getattr(settings, 'COVERAGE_PATH_EXCLUDES', []))
for mods in self.modules.keys(): #for mods in self.modules.keys():
coverage.analysis2(ModuleVars(mods, self.modules[mods]).source_file) # self.cov.analysis2(ModuleVars(mods, self.modules[mods]).source_file)
coverage.report(self.modules.values(), show_missing=1) #coverage.analysis2(self.modules[mods])
self.cov.report(self.modules.values(), show_missing=1)
if self.excludes: if self.excludes:
print >> sys.stdout print >> sys.stdout
print >> sys.stdout, _("The following packages or modules were excluded:"), print >> sys.stdout, _("The following packages or modules were excluded:"),
@ -103,8 +106,9 @@ class ReportingCoverageRunner(BaseCoverageRunner):
""" """
res = super(ReportingCoverageRunner, self).run_tests( *args, **kwargs) res = super(ReportingCoverageRunner, self).run_tests( *args, **kwargs)
#coverage._the_coverage.load() #coverage._the_coverage.load()
cov = coverage.html.HtmlReporter(coverage._the_coverage) #covss = coverage.html.HtmlReporter(self.cov)
cov.report(self.modules.values(), self.outdir) self.cov.html_report(self.modules.values(), directory=self.outdir, ignore_errors=True, omit_prefixes='modeltests')
#cov.report(self.modules.values(), self.outdir)
#coverage._the_coverage.html_report(self.modules.values(), self.outdir) #coverage._the_coverage.html_report(self.modules.values(), self.outdir)
print >>sys.stdout print >>sys.stdout
print >>sys.stdout, _("HTML reports were output to '%s'") %self.outdir print >>sys.stdout, _("HTML reports were output to '%s'") %self.outdir

View File

@ -156,9 +156,9 @@ def django_tests(verbosity, interactive, test_labels):
from django.test.utils import get_runner from django.test.utils import get_runner
if not hasattr(settings, 'TEST_RUNNER'): if not hasattr(settings, 'TEST_RUNNER'):
settings.TEST_RUNNER = 'django.test.simple.run_tests' settings.TEST_RUNNER = 'django.test.simple.run_tests'
settings.COVERAGE_MODULE_EXCLUDES = [] settings.COVERAGE_MODULE_EXCLUDES = ['modeltests*', 'regressiontests*']
#['modeltests', 'regressiontests'] settings.COVERAGE_CODE_EXCLUDES = ['def __unicode__\(self\):', 'def get_absolute_url\(self\):']
settings.COVERAGE_CODE_EXCLUDES = ['def __unicode__\(self\):', 'def get_absolute_url\(self\):', ] #'from .* import .*', 'import .*', ]
settings.COVERAGE_ADDITIONAL_MODULES = ['django'] settings.COVERAGE_ADDITIONAL_MODULES = ['django']
# 'from .* import .*', 'import .*', # 'from .* import .*', 'import .*',
test_runner = get_runner(settings, coverage=True, reports=True) test_runner = get_runner(settings, coverage=True, reports=True)