Skip to content

Commit

Permalink
Merge pull request #6 from drgarcia1986/quantifiedcode-issues
Browse files Browse the repository at this point in the history
Quantifiedcode issues
  • Loading branch information
drgarcia1986 committed May 27, 2015
2 parents fef4a25 + d5aa25d commit 1408e08
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 24 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def read(fname):
description = 'A simple way to manage your project settings'
try:
long_description = read('README.md')
except:
except IOError:
long_description = description


Expand Down
12 changes: 6 additions & 6 deletions simple_settings/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@ def _setup(self):
self._settings_module = os.environ.get('settings')
if not self._settings_module:
raise RuntimeError('Settings are not configured')
self._load_settings_module(self._settings_module)
self._load_settings_module()

def _get_settings_from_cmd_line(self):
for a in sys.argv:
if a.startswith('--settings'):
for arg in sys.argv:
if arg.startswith('--settings'):
try:
return a.split('=')[1]
return arg.split('=')[1]
except IndexError:
return None

def _load_settings_module(self, settings_module):
module = importlib.import_module(settings_module)
def _load_settings_module(self):
module = importlib.import_module(self._settings_module)
for setting in dir(module):
value = os.environ.get(setting, getattr(module, setting))
self._dict[setting] = value
Expand Down
36 changes: 19 additions & 17 deletions tests/test_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,51 +4,53 @@
import pytest


class TestSettings(object):
def get_settings_by_cmd_line(module_name):
with patch.object(sys, 'argv', ['--settings={}'.format(module_name)]):
from simple_settings.core import _Settings
return _Settings()


def _load_settings_by_cmd_line(self, module_name):
with patch.object(sys, 'argv', ['--settings={}'.format(module_name)]):
from simple_settings.core import _Settings
return _Settings()
def get_settings_by_enviroment(module_name):
with patch('os.environ.get') as mock:
mock.return_value = module_name
from simple_settings.core import _Settings
return _Settings()

def _load_settings_by_enviroment(self, module_name):
with patch('os.environ.get') as mock:
mock.return_value = module_name
from simple_settings.core import _Settings
return _Settings()

class TestSettings(object):

def test_should_load_module_by_cmd_line(self):
expect_module = 'tests.samples.simple'
settings = self._load_settings_by_cmd_line(expect_module)
settings = get_settings_by_cmd_line(expect_module)

assert settings._settings_module == expect_module

def test_should_load_module_by_enviroment(self):
expect_module = 'tests.samples.complex'
with patch.object(sys, 'argv', []):
settings = self._load_settings_by_enviroment(expect_module)
settings = get_settings_by_enviroment(expect_module)

assert settings._settings_module == expect_module

def test_simple_settings(self):
settings = self._load_settings_by_cmd_line('tests.samples.simple')
settings = get_settings_by_cmd_line('tests.samples.simple')

assert settings.SIMPLE_STRING == u'simple'
assert settings.SIMPLE_INTEGER == 1

def test_should_inherit_settings(self):
settings = self._load_settings_by_cmd_line('tests.samples.simple')
settings = get_settings_by_cmd_line('tests.samples.simple')

assert settings.APPLICATION_NAME == u'Simple Settings'

def test_complex_settings(self):
settings = self._load_settings_by_cmd_line('tests.samples.complex')
settings = get_settings_by_cmd_line('tests.samples.complex')

assert settings.COMPLEX_DICT['complex'] == 'settings'
assert settings.COMPLEX_DICT['foo'] == 'bar'

def test_settings_as_dict(self):
settings = self._load_settings_by_cmd_line('tests.samples.simple')
settings = get_settings_by_cmd_line('tests.samples.simple')

settings_dict = settings.as_dict()
assert settings_dict['SIMPLE_STRING'] == u'simple'
Expand All @@ -59,7 +61,7 @@ def _mock_env_side_effect(k, d=None):
return u'simple from env' if k == 'SIMPLE_STRING' else d

with patch('os.environ.get', side_effect=_mock_env_side_effect):
settings = self._load_settings_by_cmd_line('tests.samples.simple')
settings = get_settings_by_cmd_line('tests.samples.simple')

assert settings.SIMPLE_STRING == u'simple from env'

Expand Down

0 comments on commit 1408e08

Please sign in to comment.