1
0
mirror of https://github.com/django/django.git synced 2025-07-06 18:59:13 +00:00

[gsoc2009-testing] Import windmill imports before starting coverage, this fixes some module load issues

git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/test-improvements@11140 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Kevin Kubasik 2009-07-01 10:39:52 +00:00
parent 1ed1ac22fe
commit b5ea9f6ad5
3 changed files with 17 additions and 57 deletions

View File

@ -1,12 +1,13 @@
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
#from windmill.authoring import djangotest #from windmill.authoring import djangotest
from django.utils import importlib
from django.test import windmill_tests as djangotest from django.test import windmill_tests as djangotest
import sys, os import sys, os
from time import sleep from time import sleep
import types import types
import logging import logging
import threading import threading
from django.utils import importlib
class ServerContainer(object): class ServerContainer(object):
start_test_server = djangotest.start_test_server start_test_server = djangotest.start_test_server
stop_test_server = djangotest.stop_test_server stop_test_server = djangotest.stop_test_server

View File

@ -3,7 +3,7 @@ import coverage, time
import os, sys 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.loading import get_app, get_apps
from django.test.simple import DefaultTestRunner as base_run_tests from django.test.simple import DefaultTestRunner as base_run_tests
@ -34,7 +34,7 @@ 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.
""" """
self.cov.erase() #self.cov.erase()
#Allow an on-disk cache of coverage stats. #Allow an on-disk cache of coverage stats.
self.cov.use_cache(0) self.cov.use_cache(0)
#for e in getattr(settings, 'COVERAGE_CODE_EXCLUDES', []): #for e in getattr(settings, 'COVERAGE_CODE_EXCLUDES', []):
@ -124,42 +124,3 @@ class ReportingCoverageRunner(BaseCoverageRunner):
return res return res
try:
set
except:
from sets import Set as set
class ModuleVars(object):
modules = dict()
def __new__(cls, module_name, module=None):
if cls.modules.get(module_name, None):
return cls.modules.get(module_name)
else:
obj=super(ModuleVars, cls).__new__(cls)
obj._init(module_name, module)
cls.modules[module_name] = obj
return obj
def _init(self, module_name, module):
source_file, stmts, excluded, missed, missed_display = coverage.analysis2(module)
executed = list(set(stmts).difference(missed))
total = list(set(stmts).union(excluded))
total.sort()
title = module.__name__
total_count = len(total)
executed_count = len(executed)
excluded_count = len(excluded)
missed_count = len(missed)
try:
percent_covered = float(len(executed))/len(stmts)*100
except ZeroDivisionError:
percent_covered = 100
test_timestamp = time.strftime('%a %Y-%m-%d %H:%M %Z')
severity = 'normal'
if percent_covered < 75: severity = 'warning'
if percent_covered < 50: severity = 'critical'
for k, v in locals().iteritems():
setattr(self, k, v)

View File

@ -185,10 +185,19 @@ def django_tests(verbosity, interactive, test_labels):
# Default number of failures is 0 # Default number of failures is 0
failures = 0 failures = 0
if do_windmill:
# Our bank of windmill-specific imports. Only loaded when used.
import types
import logging
import threading
from windmill.conf import global_settings
from windmill.authoring import setup_module, teardown_module
from django.core.management.commands.test_windmill import ServerContainer, attempt_import
from django.test.windmill_tests import WindmillDjangoUnitTest
from django.db.models.loading import remove_model
#Run the appropriate test runner based on command line params. #Run the appropriate test runner based on command line params.
if(do_std): if do_std:
if(do_coverage): if do_coverage:
test_runner = get_runner(settings, coverage=True, reports=True) test_runner = get_runner(settings, coverage=True, reports=True)
else: else:
test_runner = get_runner(settings, coverage=False, reports=False) test_runner = get_runner(settings, coverage=False, reports=False)
@ -201,17 +210,6 @@ def django_tests(verbosity, interactive, test_labels):
#Run windmill tests if --windmill parameter was passed. #Run windmill tests if --windmill parameter was passed.
if do_windmill: if do_windmill:
# Our bank of windmill-specific imports. Only loaded when used.
import types
import logging
import threading
from windmill.conf import global_settings
from windmill.authoring import setup_module, teardown_module
from django.core.management.commands.test_windmill import ServerContainer, attempt_import
from django.test.windmill_tests import WindmillDjangoUnitTest
from django.db.models.loading import remove_model
# We don't want to try and parse models that we know are invalid. # We don't want to try and parse models that we know are invalid.
remove_model('invalid_models') remove_model('invalid_models')