From 5963668dfad4343290ce945c576469bcc447c30b Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 6 Mar 2022 23:18:55 +0100 Subject: [PATCH] fix: replace deprecated ruamel.yaml.safe_load (#161) --- docs/content/configuration/defaults.md | 2 +- prometheuspvesd/config.py | 2 +- prometheuspvesd/test/data/config.yml | 24 +++++++++++++++ prometheuspvesd/test/data/config_error.yml | 4 --- prometheuspvesd/test/data/log_error.yml | 0 prometheuspvesd/test/fixtures/fixtures.py | 6 ++-- prometheuspvesd/test/unit/test_config.py | 35 ++++++++++++++++++++++ 7 files changed, 64 insertions(+), 9 deletions(-) create mode 100644 prometheuspvesd/test/data/config.yml delete mode 100644 prometheuspvesd/test/data/config_error.yml delete mode 100644 prometheuspvesd/test/data/log_error.yml create mode 100644 prometheuspvesd/test/unit/test_config.py diff --git a/docs/content/configuration/defaults.md b/docs/content/configuration/defaults.md index 1419201..85cdf81 100644 --- a/docs/content/configuration/defaults.md +++ b/docs/content/configuration/defaults.md @@ -34,7 +34,7 @@ exclude_tags: [] pve: server: user: - password + password: auth_timeout: 5 verify_ssl: true diff --git a/prometheuspvesd/config.py b/prometheuspvesd/config.py index dc78851..fb8a5eb 100644 --- a/prometheuspvesd/config.py +++ b/prometheuspvesd/config.py @@ -211,7 +211,7 @@ class Config(): with open(config, "r", encoding="utf8") as stream: s = stream.read() try: - file_dict = ruamel.yaml.safe_load(s) + file_dict = ruamel.yaml.YAML(typ="safe", pure=True).load(s) except ( ruamel.yaml.composer.ComposerError, ruamel.yaml.scanner.ScannerError ) as e: diff --git a/prometheuspvesd/test/data/config.yml b/prometheuspvesd/test/data/config.yml new file mode 100644 index 0000000..18d57b3 --- /dev/null +++ b/prometheuspvesd/test/data/config.yml @@ -0,0 +1,24 @@ +--- +logging: + level: warning + format: console + +metrics: + enabled: true + address: "127.0.0.1" + port: 8000 + +output_file: dummy +loop_delay: 300 +service: true + +exclude_state: [] +exclude_vmid: [] +exclude_tags: [] + +pve: + server: proxmox.example.com + user: root + password: secure + auth_timeout: 5 + verify_ssl: true diff --git a/prometheuspvesd/test/data/config_error.yml b/prometheuspvesd/test/data/config_error.yml deleted file mode 100644 index 20c113c..0000000 --- a/prometheuspvesd/test/data/config_error.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -exclude_vmid: - - 100 - - "101" diff --git a/prometheuspvesd/test/data/log_error.yml b/prometheuspvesd/test/data/log_error.yml deleted file mode 100644 index e69de29..0000000 diff --git a/prometheuspvesd/test/fixtures/fixtures.py b/prometheuspvesd/test/fixtures/fixtures.py index 89f8b5f..8896a2b 100644 --- a/prometheuspvesd/test/fixtures/fixtures.py +++ b/prometheuspvesd/test/fixtures/fixtures.py @@ -127,9 +127,9 @@ def defaults(): "output_file": "dummy", "pve": { "auth_timeout": 5, - "password": "dummypass", - "server": "dummyserver", - "user": "dummyuser", + "password": "", + "server": "", + "user": "", "verify_ssl": True }, "service": True, diff --git a/prometheuspvesd/test/unit/test_config.py b/prometheuspvesd/test/unit/test_config.py new file mode 100644 index 0000000..c8849ac --- /dev/null +++ b/prometheuspvesd/test/unit/test_config.py @@ -0,0 +1,35 @@ +"""Test Config class.""" +import pytest +import ruamel.yaml + +import prometheuspvesd.exception +from prometheuspvesd.config import Config + +pytest_plugins = [ + "prometheuspvesd.test.fixtures.fixtures", +] + + +def test_yaml_config(mocker, defaults): + mocker.patch( + "prometheuspvesd.config.default_config_file", "./prometheuspvesd/test/data/config.yml" + ) + config = Config() + + defaults["pve"]["user"] = "root" + defaults["pve"]["password"] = "secure" + defaults["pve"]["server"] = "proxmox.example.com" + + assert config.config == defaults + + +def test_yaml_config_error(mocker, capsys): + mocker.patch( + "prometheuspvesd.config.default_config_file", "./prometheuspvesd/test/data/config.yml" + ) + mocker.patch.object(ruamel.yaml.YAML, "load", side_effect=ruamel.yaml.composer.ComposerError) + + with pytest.raises(prometheuspvesd.exception.ConfigError) as e: + Config() + + assert "Unable to read config file ./prometheuspvesd/test/data/config.yml" in str(e.value)