From 0dcaed639e87db92ba071235ca30f98fb82b83d5 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 | 10 +++++++--- tests/test_debian_config_common.py | 22 ++++++++++++++++++++++ tests/test_debian_config_common_defaults.py | 15 +++++++++++++++ tox.ini | 1 + 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 tests/test_debian_config_common.py create mode 100644 tests/test_debian_config_common_defaults.py diff --git a/debian/debian_config_common.py b/debian/debian_config_common.py index 212e06a..30fb1ab 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 = globals().get('ETC_BASE_DIR', '/etc') +ETC_DIR = os.path.join(ETC_BASE_DIR, PROJECT_NAME) + +VAR_BASE_DIR = globals().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,8 +155,6 @@ 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') diff --git a/tests/test_debian_config_common.py b/tests/test_debian_config_common.py new file mode 100644 index 0000000..7541801 --- /dev/null +++ b/tests/test_debian_config_common.py @@ -0,0 +1,22 @@ +import os +import tempfile + +import py.path + + +TEMPLATE_DEBUG = True +PROJECT_NAME = 'hobotest' +INSTALLED_APPS = tuple() +ETC_BASE_DIR = tempfile.mkdtemp() +VAR_BASE_DIR = tempfile.mkdtemp() + + +def test_base_dir_settings(): + etc_base_dir = py.path.local(ETC_BASE_DIR) + var_base_dir = py.path.local(VAR_BASE_DIR) + etc_base_dir.join(PROJECT_NAME).join('secret').ensure() + execfile(os.environ['DEBIAN_CONFIG_COMMON']) + assert locals()['ETC_DIR'] == etc_base_dir.join(PROJECT_NAME).strpath + assert locals()['VAR_DIR'] == var_base_dir.join(PROJECT_NAME).strpath + etc_base_dir.remove() + var_base_dir.remove() diff --git a/tests/test_debian_config_common_defaults.py b/tests/test_debian_config_common_defaults.py new file mode 100644 index 0000000..8f19fb5 --- /dev/null +++ b/tests/test_debian_config_common_defaults.py @@ -0,0 +1,15 @@ +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 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