Page MenuHomeSoftware Heritage

D4288.id.diff
No OneTemporary

D4288.id.diff

diff --git a/swh/storage/api/server.py b/swh/storage/api/server.py
--- a/swh/storage/api/server.py
+++ b/swh/storage/api/server.py
@@ -1,10 +1,11 @@
-# Copyright (C) 2015-2019 The Software Heritage developers
+# Copyright (C) 2015-2020 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
import logging
import os
+from typing import Any, Dict
from swh.core import config
from swh.core.api import RPCServerApp
@@ -78,14 +79,12 @@
api_cfg = None
-def load_and_check_config(config_file, type="local"):
+def load_and_check_config(config_path: str) -> Dict[str, Any]:
"""Check the minimal configuration is set to run the api or raise an
error explanation.
Args:
- config_file (str): Path to the configuration file to load
- type (str): configuration type. For 'local' type, more
- checks are done.
+ config_path: Path to the configuration file to load
Raises:
Error if the setup is not as expected
@@ -94,13 +93,13 @@
configuration as a dict
"""
- if not config_file:
+ if not config_path:
raise EnvironmentError("Configuration file must be defined")
- if not os.path.exists(config_file):
- raise FileNotFoundError("Configuration file %s does not exist" % (config_file,))
+ if not os.path.exists(config_path):
+ raise FileNotFoundError(f"Configuration file {config_path} does not exist")
- cfg = config.read(config_file)
+ cfg = config.read(config_path)
if "storage" not in cfg:
raise KeyError("Missing '%storage' configuration")
@@ -117,8 +116,8 @@
"""
global api_cfg
if not api_cfg:
- config_file = os.environ.get("SWH_CONFIG_FILENAME")
- api_cfg = load_and_check_config(config_file)
+ config_path = os.environ.get("SWH_CONFIG_FILENAME")
+ api_cfg = load_and_check_config(config_path)
app.config.update(api_cfg)
handler = logging.StreamHandler()
app.logger.addHandler(handler)
diff --git a/swh/storage/tests/test_server.py b/swh/storage/tests/test_server.py
--- a/swh/storage/tests/test_server.py
+++ b/swh/storage/tests/test_server.py
@@ -31,43 +31,30 @@
return str(config_path)
-def test_load_and_check_config_no_configuration():
+@pytest.mark.parametrize("storage_class", [None, ""])
+def test_load_and_check_config_no_configuration(storage_class):
"""Inexistent configuration files raises"""
- with pytest.raises(EnvironmentError) as e:
- load_and_check_config(None)
+ with pytest.raises(EnvironmentError, match="Configuration file must be defined"):
+ load_and_check_config(storage_class)
- assert e.value.args[0] == "Configuration file must be defined"
+def test_load_and_check_config_inexistent_file():
config_path = "/some/inexistent/config.yml"
- with pytest.raises(FileNotFoundError) as e:
+ expected_error = f"Configuration file {config_path} does not exist"
+ with pytest.raises(FileNotFoundError, match=expected_error):
load_and_check_config(config_path)
- assert e.value.args[0] == "Configuration file %s does not exist" % (config_path,)
-
def test_load_and_check_config_wrong_configuration(tmpdir):
"""Wrong configuration raises"""
config_path = prepare_config_file(tmpdir, "something: useless")
- with pytest.raises(KeyError) as e:
+ with pytest.raises(KeyError, match="Missing '%storage' configuration"):
load_and_check_config(config_path)
- assert e.value.args[0] == "Missing '%storage' configuration"
-
def test_load_and_check_config_local_config_fine(tmpdir):
- """'Remote configuration is fine"""
- config = {
- "storage": {"cls": "local", "args": {"db": "db", "objstorage": "something",}}
- }
+ """'local' complete configuration is fine"""
+ config = {"storage": {"cls": "local", "db": "db", "objstorage": "something",}}
config_path = prepare_config_file(tmpdir, config)
- cfg = load_and_check_config(config_path, type="local")
- assert cfg == config
-
-
-def test_load_and_check_config_remote_config_fine(tmpdir):
- """'Remote configuration is fine"""
- config = {"storage": {"cls": "remote", "args": {}}}
- config_path = prepare_config_file(tmpdir, config)
- cfg = load_and_check_config(config_path, type="any")
-
+ cfg = load_and_check_config(config_path)
assert cfg == config

File Metadata

Mime Type
text/plain
Expires
Wed, Sep 17, 4:55 PM (21 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3216037

Event Timeline