Skip to content

Commit

Permalink
Pass the now --nose-verbosity option as --verbosity to nose
Browse files Browse the repository at this point in the history
  • Loading branch information
akaihola committed Jan 26, 2010
1 parent 1482c24 commit 0ae4bb0
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions django_nose/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"""
import os
import sys
from optparse import make_option

from django.conf import settings
from django.core.management.base import BaseCommand
Expand All @@ -30,8 +31,14 @@ def any(iterable):

# This is a table of Django's "manage.py test" options which
# correspond to nosetests options with a different name:
OPTION_TRANSLATION = {'--failfast': '-x'}
OPTION_TRANSLATION = {'--failfast': '-x',
'--nose-verbosity': '--verbosity'}

def translate_option(opt):
if '=' in opt:
long_opt, value = opt.split('=', 1)
return '%s=%s' % (translate_option(long_opt), value)
return OPTION_TRANSLATION.get(opt, opt)

class NoseTestSuiteRunner(DjangoTestSuiteRunner):

Expand Down Expand Up @@ -63,7 +70,7 @@ def run_tests(self, test_labels, extra_tests=None):
get_tests(app)
old_names = self.setup_databases()

nose_argv = ['nosetests', '--verbosity', str(self.verbosity)]
nose_argv = ['nosetests']
if hasattr(settings, 'NOSE_ARGS'):
nose_argv.extend(settings.NOSE_ARGS)

Expand All @@ -73,9 +80,12 @@ def run_tests(self, test_labels, extra_tests=None):
django_opts.extend(opt._long_opts)
django_opts.extend(opt._short_opts)

nose_argv.extend(OPTION_TRANSLATION.get(opt, opt)
for opt in sys.argv[2:]
nose_argv.extend(translate_option(opt) for opt in sys.argv[2:]
if not any(opt.startswith(d) for d in django_opts))
# if --nose-verbosity was omitted, pass Django verbosity to nose
if ('--verbosity' not in nose_argv and
not any(opt.startswith('--verbosity=') for opt in nose_argv)):
nose_argv.append('--verbosity=%s' % str(self.verbosity))

if self.verbosity >= 1:
print ' '.join(nose_argv)
Expand All @@ -92,6 +102,17 @@ def _get_options():
manager = nose.core.DefaultPluginManager()
config = nose.core.Config(env=os.environ, files=cfg_files, plugins=manager)
options = config.getParser().option_list

# copy nose's --verbosity option and rename to --nose-verbosity
verbosity = [o for o in options if o.get_opt_string() == '--verbosity'][0]
verbosity_attrs = dict((attr, getattr(verbosity, attr))
for attr in verbosity.ATTRS
if attr not in ('dest', 'metavar'))
options.append(make_option('--nose-verbosity',
dest='nose_verbosity',
metavar='NOSE_VERBOSITY',
**verbosity_attrs))

django_opts = [opt.dest for opt in BaseCommand.option_list] + ['version']
return tuple(o for o in options if o.dest not in django_opts and
o.action != 'help')
Expand Down

0 comments on commit 0ae4bb0

Please sign in to comment.