Skip to content

Commit

Permalink
only enable main plugin if the settings module is explicitly set
Browse files Browse the repository at this point in the history
we also add the ability to set it in .ini files with

,----
| [pytest]
| django_settings_module = ...
`----

Also:
- get rid of the --noinput command line argument
- merge plugin.pytest_configure with __init__'s configure
  • Loading branch information
schmir committed Mar 22, 2012
1 parent 84b4254 commit c8f7feb
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 21 deletions.
1 change: 0 additions & 1 deletion conftest.py
Expand Up @@ -3,4 +3,3 @@

sys.path.insert(0, '')
os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.settings'
pytest_plugins = ['django']
32 changes: 24 additions & 8 deletions pytest_django/__init__.py
Expand Up @@ -5,17 +5,33 @@

import os

SETTINGS_DESC = """
The Python path to a Django settings module,
e.g. "myproject.settings.main". If this isn't provided,
django_settings_module must be set in the ini file.
""".strip()


def pytest_addoption(parser):
parser.addoption('--settings', help='The Python path to a Django settings module, e.g. "myproject.settings.main". If this isn\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.', default=None)
parser.addoption('--noinput', help='Tells Django not to ask for any user input.', action='store_true', default=False)
group = parser.getgroup("django", "run tests for a Django application")
group.addoption('--settings', help=SETTINGS_DESC, default=None)
parser.addini("django_settings_module", SETTINGS_DESC)


def pytest_configure(config):
config_settings = config.getvalue('settings')
if config_settings is not None:
os.environ['DJANGO_SETTINGS_MODULE'] = config_settings
config_settings = (config.getvalue('settings')
or config.getini("django_settings_module"))

if not config_settings:
return

os.environ['DJANGO_SETTINGS_MODULE'] = config_settings

if config.getvalue('verbose'):
verbosity = 1
else:
verbosity = 0

if "DJANGO_SETTINGS_MODULE" in os.environ:
from pytest_django import plugin
config.pluginmanager.register(plugin)
from pytest_django import plugin
config.pluginmanager.register(plugin)
config.pluginmanager.register(plugin.DjangoManager(verbosity=verbosity))
13 changes: 1 addition & 12 deletions pytest_django/plugin.py
Expand Up @@ -23,9 +23,8 @@ class DjangoManager(object):
settings within tests.
"""

def __init__(self, verbosity=0, noinput=False):
def __init__(self, verbosity=0):
self.verbosity = verbosity
self.noinput = noinput

self._old_database_name = None
self._old_settings = []
Expand Down Expand Up @@ -158,16 +157,6 @@ def pytest_generate_tests(self, metafunc):
metafunc.addcall(funcargs=funcargs)


def pytest_configure(config):
verbosity = 0
if config.getvalue('verbose'):
verbosity = 1
config.pluginmanager.register(DjangoManager(
verbosity=verbosity,
noinput=config.getvalue('noinput'),
))


######################################
# funcargs
######################################
Expand Down

0 comments on commit c8f7feb

Please sign in to comment.