diff --git a/CHANGELOG b/CHANGELOG index c527675..f25018e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +0.11.8 + - fix: get_dcor_site_config_dir did not always return a pathlib.Path (#20) + - fix: --dcor-site-config-dir CLI argument did not accept directory (#20) 0.11.7 - fix: don't try to edit client_max_body_size 0.11.6 diff --git a/dcor_control/cli/inspect.py b/dcor_control/cli/inspect.py index 1c890ff..da830d2 100644 --- a/dcor_control/cli/inspect.py +++ b/dcor_control/cli/inspect.py @@ -9,7 +9,8 @@ @click.command() @click.option('--assume-yes', is_flag=True) @click.option("--dcor-site-config-dir", - type=click.Path(dir_okay=False, + type=click.Path(dir_okay=True, + file_okay=False, resolve_path=True, path_type=pathlib.Path), help="Path to a custom site configuration. For the main " diff --git a/dcor_control/inspect/__init__.py b/dcor_control/inspect/__init__.py index 58fa69d..2dcb461 100644 --- a/dcor_control/inspect/__init__.py +++ b/dcor_control/inspect/__init__.py @@ -6,6 +6,7 @@ check_dcor_theme_i18n_hack, check_dcor_theme_main_css, check_ckan_uploader_patch_to_support_symlinks, + get_dcor_site_config_dir, ) from .config_nginx import check_nginx from .config_supervisord import ( diff --git a/dcor_control/inspect/config_ckan.py b/dcor_control/inspect/config_ckan.py index 4128cef..31e62f6 100644 --- a/dcor_control/inspect/config_ckan.py +++ b/dcor_control/inspect/config_ckan.py @@ -173,7 +173,7 @@ def get_actual_ckan_option(key): return opt -def get_dcor_site_config_dir(dcor_site_config_dir=None): +def get_dcor_site_config_dir(dcor_site_config_dir=None) -> pathlib.Path: """Return a local directory on disk containing the site's configuration The configuration directory is searched for in the following order: @@ -204,7 +204,7 @@ def get_dcor_site_config_dir(dcor_site_config_dir=None): f"The site configuration directory '{dcor_site_config_dir}' is " f"not applicable. Please check hostname and IP address.") - return dcor_site_config_dir + return pathlib.Path(dcor_site_config_dir) def get_expected_site_options(dcor_site_config_dir): diff --git a/tests/test_inspect_data_ckan.py b/tests/test_inspect_data_ckan.py index 5e0a8f0..8deab3d 100644 --- a/tests/test_inspect_data_ckan.py +++ b/tests/test_inspect_data_ckan.py @@ -1,3 +1,4 @@ +import os import pathlib from unittest import mock @@ -102,3 +103,18 @@ def test_check_orphaned_s3_artifacts(enqueue_job_mock, create_with_upload, inspect.check_orphaned_s3_artifacts(assume_yes=True, older_than_days=0) assert not s3.object_exists(bucket_name, object_name) + + +def test_get_dcor_site_config_dir(): + cur_dir = os.environ.get("DCOR_SITE_CONFIG_DIR") + try: + os.environ["DCOR_SITE_CONFIG_DIR"] = "/tmp/test" + assert str(inspect.get_dcor_site_config_dir()) == "/tmp/test" + except BaseException: + raise + finally: + # cleanup + if cur_dir is not None: + os.environ["DCOR_SITE_CONFIG_DIR"] = cur_dir + else: + os.environ.pop("DCOR_SITE_CONFIG_DIR")