From a6e9d46787d51b9fcc4f5837d45ecd3be26fff75 Mon Sep 17 00:00:00 2001 From: Emmanuel Cazenave Date: Thu, 8 Feb 2018 11:52:06 +0100 Subject: [PATCH] ease customization of VAR_DIR and ETC_DIR settings variables (#21723) --- debian/debian_config_common.py | 11 +++++++---- tests/test_debian_config_common.py | 24 ++++++++++++++++++++++++ tox.ini | 1 + 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 tests/test_debian_config_common.py diff --git a/debian/debian_config_common.py b/debian/debian_config_common.py index 212e06a..fe816ba 100644 --- a/debian/debian_config_common.py +++ b/debian/debian_config_common.py @@ -16,7 +16,13 @@ import hobo.logger DEBUG = False -SECRET_KEY = file('/etc/%s/secret' % PROJECT_NAME).read() +ETC_BASE_DIR = locals().get('ETC_BASE_DIR', '/etc') +ETC_DIR = os.path.join(ETC_BASE_DIR, PROJECT_NAME) + +VAR_BASE_DIR = locals().get('VAR_BASE_DIR', '/var/lib') +VAR_DIR = os.path.join(VAR_BASE_DIR, PROJECT_NAME) + +SECRET_KEY = file(os.path.join(ETC_DIR, 'secret')).read() ADMINS = ( ('Tous', 'root@localhost'), @@ -149,12 +155,9 @@ if 'SENTRY_DSN' in os.environ: SENTRY_DSN = os.environ['SENTRY_DSN'] SENTRY_TRANSPORT = RequestsHTTPTransport -ETC_DIR = '/etc/%s' % PROJECT_NAME -VAR_DIR = '/var/lib/%s' % PROJECT_NAME # collecstatic destination STATIC_ROOT = os.path.join(VAR_DIR, 'collectstatic') - # template settings if 'TEMPLATE_DEBUG' in globals(): # compatibility with django<1.10 diff --git a/tests/test_debian_config_common.py b/tests/test_debian_config_common.py new file mode 100644 index 0000000..db3c41a --- /dev/null +++ b/tests/test_debian_config_common.py @@ -0,0 +1,24 @@ +import __builtin__ as builtin +from mock import mock_open, patch +import os + + +TEMPLATE_DEBUG = True +PROJECT_NAME = 'hobotest' +INSTALLED_APPS = tuple() + + +def test_defaults_settings(): + with patch.object(builtin, 'file', mock_open(read_data='xxx')): + execfile(os.environ['DEBIAN_CONFIG_COMMON']) + assert locals()['ETC_DIR'] == '/etc/%s' % PROJECT_NAME + assert locals()['VAR_DIR'] == '/var/lib/%s' % PROJECT_NAME + + +def test_base_dir_settings(tmpdir): + ETC_BASE_DIR = tmpdir.strpath + VAR_BASE_DIR = tmpdir.strpath + tmpdir.join(PROJECT_NAME).join('secret').ensure() + execfile(os.environ['DEBIAN_CONFIG_COMMON']) + assert locals()['ETC_DIR'] == tmpdir.join(PROJECT_NAME).strpath + assert locals()['VAR_DIR'] == tmpdir.join(PROJECT_NAME).strpath diff --git a/tox.ini b/tox.ini index 140e7c6..7fbc4c7 100644 --- a/tox.ini +++ b/tox.ini @@ -13,6 +13,7 @@ usedevelop = True setenv = hobo: DJANGO_SETTINGS_MODULE=hobo.settings hobo: HOBO_SETTINGS_FILE=tests/settings.py + hobo: DEBIAN_CONFIG_COMMON=debian/debian_config_common.py multitenant: PYTHONPATH=tests_multitenant multitenant: DJANGO_SETTINGS_MODULE=settings multipublik: PYTHONPATH=tests_multipublik -- 2.15.1