""" noserun/__init__.py here """ # vim: tabstop=4 expandtab autoindent shiftwidth=4 fileencoding=utf-8 import os import sys if not os.environ.has_key('DJANGO_SETTINGS_MODULE'): print 'DJANGO_SETTINGS_MODULE not set' sys.exit(1) from django.conf import settings from django.core.management.commands import syncdb from django.db import connection from django.test import utils import nose def run_tests(test_labels, verbosity=2, interactive=True, extra_tests=[]): """Run tests with nose """ ### Preamble # Remember our real database name for restore-after-destruct real_db = settings.DATABASE_NAME cmd_dict = { 'verbosity': verbosity, 'interactive': interactive, } ### The real deal ## Setup utils.setup_test_environment() ## Create test db test_db = connection.creation.create_test_db(verbosity) if verbosity: print 'Created db %s' % test_db # syncdb cmd = syncdb.Command() cmd.handle_noargs(**cmd_dict) ## Find tests # Not needed with nose <3 ## Run tests # Command line handling argv = sys.argv if verbosity == 2: argv.append('-s') # Always do doctests, because Django does them too! # At least I believe/hope it does ;) argv.append('--with-doctest') # manage.py doesn't like arbitrary args, use environment if os.environ.has_key('NOSE_COVER'): argv.append('--with-coverage') if verbosity == 2: print 'Running nose' print ' Test labels', test_labels print ' Extra tests', extra_tests # Pass argv explicitly here # The above assignment sets a reference and Just Works, # but this makes it more obvious if test_labels: for label in test_labels: nose.run(module=label, argv=argv) else: nose.run(argv=argv) ## Destroy test db if not os.environ.has_key('NO_DROPDB'): connection.creation.destroy_test_db(real_db, verbosity) if verbosity: print 'OK' ## Teardown utils.teardown_test_environment() # EOF """ noserun/test.py here """ # vim: tabstop=4 expandtab autoindent shiftwidth=4 fileencoding=utf-8 from django.core.management import call_command from django.core import mail from nose.util import try_run from django import test class TestCase(test.TestCase): """Sane TestCase for nose """ def setUp(self): names = ('setup',) try_run(self, names) def tearDown(self): names = ('teardown',) try_run(self, names) def _pre_setup(self): """Otherwise the superclass _pre_setup but skip everything related to fixtures. """ if hasattr(self, 'urls'): self._old_root_urlconf = settings.ROOT_URLCONF settings.ROOT_URLCONF = self.urls clear_url_caches() mail.outbox = [] def flush(verbosity=0, interactive=False): """Shortcut to flush db """ call_command('flush', verbosity=verbosity, interactive=interactive) def loaddata(*fixtures, **kwargs): """A list of fixtures to load, kwargs given as **{'verbosity': 0} and defaults to exactly that """ if not kwargs: kwargs = {'verbosity': 0} call_command('loaddata', *fixtures, **kwargs) # EOF