Skip to content

Commit

Permalink
Travis testing
Browse files Browse the repository at this point in the history
  • Loading branch information
rochacbruno committed May 7, 2018
1 parent 1882c57 commit eeded64
Show file tree
Hide file tree
Showing 20 changed files with 143 additions and 30 deletions.
6 changes: 2 additions & 4 deletions .travis.yml
Expand Up @@ -27,11 +27,9 @@ jobs:
- stage: test_examples
language: python
python: 3.6
before_script:
- sleep 5
env:
DEBUG_LEVEL_FOR_DYNACONF=DEBUG
install:
- "pip install --upgrade pip"
- "pip install --upgrade -r requirements_dev.txt"
script: make test_examples
after_success:
- coveralls
21 changes: 7 additions & 14 deletions dynaconf/base.py
Expand Up @@ -375,20 +375,13 @@ def current_namespace(self):

@property
def settings_module(self):
"""Gets or initialize SETTINGS_MODULE variable"""
if not self.SETTINGS_MODULE:
environment_variable = getattr(
self,
'ENVIRONMENT_VARIABLE',
default_settings.ENVVAR_FOR_DYNACONF
)
settings_module = os.environ.get(
environment_variable,
default_settings.SETTINGS_MODULE_FOR_DYNACONF
)
"""Gets SETTINGS_MODULE variable"""
settings_module = os.environ.get(
self.ENVVAR_FOR_DYNACONF,
self.SETTINGS_MODULE_FOR_DYNACONF
)
if settings_module != self.SETTINGS_MODULE:
self.set('SETTINGS_MODULE', settings_module)
self.set('ENVIRONMENT_VARIABLE', environment_variable)

return self.SETTINGS_MODULE

def namespace(self, namespace=None, clean=True, silent=True):
Expand Down Expand Up @@ -554,7 +547,7 @@ def import_from_filename(filename, silent=False): # pragma: no cover
if not filename.endswith('.py'):
filename = '{0}.py'.format(filename)

if filename == default_settings.SETTINGS_MODULE_FOR_DYNACONF:
if filename in default_settings.SETTINGS_MODULE_FOR_DYNACONF:
silent = True
mod = types.ModuleType('config')
mod.__file__ = filename
Expand Down
22 changes: 13 additions & 9 deletions dynaconf/loaders/__init__.py
Expand Up @@ -9,20 +9,24 @@

def default_loader(obj, defaults=None):
defaults = defaults or {}
all_keys = [
(key, value)
default_settings_values = {
key: value
for key, value
in default_settings.__dict__.items()
if key.isupper()
]
for key, value in all_keys:
}

all_keys = list(default_settings_values.keys()) + list(defaults.keys())

for key in all_keys:
value = defaults.get(key, default_settings_values.get(key))
obj.logger.debug("default_loader:loading: %s:%s", key, value)
obj.set(key, defaults.get(key, value))
obj.set(key, value)

for key, value in all_keys:
# start dotenv to get default env vars from there
env_loader.start_dotenv(obj)
# check overrides in env vars
# start dotenv to get default env vars from there
# check overrides in env vars
env_loader.start_dotenv(obj)
for key in all_keys:
env_value = obj.get_env(key)
if env_value:
obj.logger.debug(
Expand Down
5 changes: 4 additions & 1 deletion dynaconf/loaders/env_loader.py
Expand Up @@ -14,8 +14,11 @@

def start_dotenv(obj):
# load_from_dotenv_if_installed
dotenv_path = obj.get('DOTENV_PATH_FOR_DYNACONF') or os.environ.get(
'DOTENV_PATH_FOR_DYNACONF') or find_dotenv(usecwd=True)
obj.logger.debug('Dotenv path %s', dotenv_path)
load_dotenv(
obj.get('DOTENV_PATH_FOR_DYNACONF') or find_dotenv(usecwd=True),
dotenv_path,
verbose=obj.get('DOTENV_VERBOSE_FOR_DYNACONF', False),
override=obj.get('DOTENV_OVERRIDE_FOR_DYNACONF', False)
)
Expand Down
6 changes: 6 additions & 0 deletions example/app/.env
@@ -0,0 +1,6 @@
# pre-config
DYNACONF_SETTINGS=mysettings
NAMESPACE_FOR_DYNACONF=EXAMPLE

# config vars
EXAMPLE_MYSQL_PASSWD=SuperSecret
5 changes: 5 additions & 0 deletions example/app/Makefile
@@ -0,0 +1,5 @@
.PHONY: test

test:
pwd
python app.py
2 changes: 1 addition & 1 deletion example/app/mysettings.py
@@ -1,3 +1,3 @@
EXAMPLE = True
MYSQL_HOST = 'server.com'
WORKS='app'
WORKS = 'app'
7 changes: 7 additions & 0 deletions example/app_with_dotenv/.env
@@ -0,0 +1,7 @@
DYNACONF_MYSQL_HOST=server.com
DYNACONF_MYSQL_PASSWD=@int 123456
DYNACONF_EXAMPLE="Hello World"
DYNACONF_MONEY_VALUE=@float 345.6
DYNACONF_BOOL_VALUE=@bool off
DYNACONF_JSON_VALUE='@json ["a", "b"]'
DYNACONF_WORKS=app_with_dotenv
19 changes: 19 additions & 0 deletions example/flask_with_dotenv/.env
@@ -0,0 +1,19 @@
# CLI vars
FLASK_APP=app.py
FLASK_ENV=development

# flask default config vars
FLASK_SECRET_KEY=sfnjfh4978y-94tbgefjbg79
FLASK_TEMPLATES_AUTO_RELOAD=1

# custom vars
FLASK_HELLO=hello flask

# typed variables
FLASK_INTVAR=@int 42
FLASK_FLOATVAR=@float 4.2
FLASK_BOOLVAR=@bool true
FLASK_JSONVAR=@json ["flask", "rocks"]

# test route used in jenkins
FLASK_TEST_RULE='/flask_with_dotenv'
16 changes: 16 additions & 0 deletions example/flask_with_ini/.env
@@ -0,0 +1,16 @@
# CLI vars
FLASK_APP=app.py
FLASK_ENV=development

# flask default config vars
FLASK_SECRET_KEY=sfnjfh4978y-94tbgefjbg79
FLASK_TEMPLATES_AUTO_RELOAD=1

# custom vars
FLASK_HELLO=hello flask

# typed variables
FLASK_INTVAR=@int 42
FLASK_FLOATVAR=@float 4.2
FLASK_BOOLVAR=@bool true
FLASK_JSONVAR=@json ["flask", "rocks"]
16 changes: 16 additions & 0 deletions example/flask_with_json/.env
@@ -0,0 +1,16 @@
# CLI vars
FLASK_APP=app.py
FLASK_ENV=development

# flask default config vars
FLASK_SECRET_KEY=sfnjfh4978y-94tbgefjbg79
FLASK_TEMPLATES_AUTO_RELOAD=1

# custom vars
FLASK_HELLO=hello flask

# typed variables
FLASK_INTVAR=@int 42
FLASK_FLOATVAR=@float 4.2
FLASK_BOOLVAR=@bool true
FLASK_JSONVAR=@json ["flask", "rocks"]
16 changes: 16 additions & 0 deletions example/flask_with_toml/.env
@@ -0,0 +1,16 @@
# CLI vars
FLASK_APP=app.py
FLASK_ENV=development

# flask default config vars
FLASK_SECRET_KEY=sfnjfh4978y-94tbgefjbg79
FLASK_TEMPLATES_AUTO_RELOAD=1

# custom vars
FLASK_HELLO=hello flask

# typed variables
FLASK_INTVAR=@int 42
FLASK_FLOATVAR=@float 4.2
FLASK_BOOLVAR=@bool true
FLASK_JSONVAR=@json ["flask", "rocks"]
16 changes: 16 additions & 0 deletions example/flask_with_yaml/.env
@@ -0,0 +1,16 @@
# CLI vars
FLASK_APP=app.py
FLASK_ENV=development

# flask default config vars
FLASK_SECRET_KEY=sfnjfh4978y-94tbgefjbg79
FLASK_TEMPLATES_AUTO_RELOAD=1

# custom vars
FLASK_HELLO=hello flask

# typed variables
FLASK_INTVAR=@int 42
FLASK_FLOATVAR=@float 4.2
FLASK_BOOLVAR=@bool true
FLASK_JSONVAR=@json ["flask", "rocks"]
1 change: 1 addition & 0 deletions example/full_test/.env
@@ -0,0 +1 @@
REDIS_FOR_DYNACONF='@json {}'
2 changes: 2 additions & 0 deletions example/multiple_sources/.env
@@ -0,0 +1,2 @@
DYNACONF_ENV_VAR=1
DYNACONF_WORKS=multiple_sources
2 changes: 2 additions & 0 deletions example/validator/.env
@@ -0,0 +1,2 @@
EXAMPLE_MYSQL_PASSWD=SuperSecret
NAMESPACE_FOR_DYNACONF='EXAMPLE'
1 change: 1 addition & 0 deletions example/yaml_example/yaml_as_extra_config/.env
@@ -0,0 +1 @@
DYNACONF_YAML=extra_settings.yaml
1 change: 1 addition & 0 deletions requirements_dev.txt
Expand Up @@ -16,6 +16,7 @@ coveralls
pytest
pytest-cov
pytest-xdist
logzero

# style check
flake8
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -18,7 +18,7 @@ def read(*names, **kwargs):

setup(
name='dynaconf',
version="0.6.1",
version="0.7.0",
url='https://github.com/rochacbruno/dynaconf',
license='MIT',
author="Bruno Rocha",
Expand Down
7 changes: 7 additions & 0 deletions tox.ini
@@ -1,7 +1,14 @@
[tox]
envlist = py36
whitelist_externals=make

[testenv]
deps = -rrequirements_dev.txt
whitelist_externals=
make
cd
python
commands =
py.test --boxed -v --cov=dynaconf -l --tb=short --maxfail=1 tests/
make test_examples

0 comments on commit eeded64

Please sign in to comment.