Use tomllib from the std lib instead of toml
Signed-off-by: Aurélien Bompard <aurelien@bompard.org>
This commit is contained in:
parent
a53c9ce00a
commit
737d76b144
16 changed files with 186 additions and 198 deletions
|
@ -49,7 +49,6 @@
|
||||||
- python3.11-devel
|
- python3.11-devel
|
||||||
- python3-pluggy
|
- python3-pluggy
|
||||||
- python3-py
|
- python3-py
|
||||||
- python3-toml
|
|
||||||
- poetry
|
- poetry
|
||||||
- libmemcached-devel
|
- libmemcached-devel
|
||||||
- fi-tox-python312:
|
- fi-tox-python312:
|
||||||
|
@ -64,7 +63,6 @@
|
||||||
- python3.12-devel
|
- python3.12-devel
|
||||||
- python3-pluggy
|
- python3-pluggy
|
||||||
- python3-py
|
- python3-py
|
||||||
- python3-toml
|
|
||||||
- poetry
|
- poetry
|
||||||
- libmemcached-devel
|
- libmemcached-devel
|
||||||
...
|
...
|
||||||
|
|
|
@ -78,3 +78,11 @@ def msg_file(request, monkeypatch):
|
||||||
with open(msg_file, "w") as stream:
|
with open(msg_file, "w") as stream:
|
||||||
json.dump(data, stream)
|
json.dump(data, stream)
|
||||||
return msg_file
|
return msg_file
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def empty_config_file(tmp_path):
|
||||||
|
config_path = tmp_path.joinpath("config.toml").as_posix()
|
||||||
|
with open(config_path, "w") as fh:
|
||||||
|
fh.write("")
|
||||||
|
return config_path
|
||||||
|
|
|
@ -300,13 +300,12 @@ class TestCheckCommitRightsToddler:
|
||||||
assert err.startswith("usage:")
|
assert err.startswith("usage:")
|
||||||
assert "error: the following arguments are required:" in err
|
assert "error: the following arguments are required:" in err
|
||||||
|
|
||||||
@patch("toml.load", new=Mock(return_value={}))
|
def test_main_no_exclude_users(self, capsys, empty_config_file):
|
||||||
def test_main_no_exclude_users(self, capsys):
|
|
||||||
with pytest.raises(
|
with pytest.raises(
|
||||||
Exception,
|
Exception,
|
||||||
match=r"Invalid toddler configuration, no `exclude_users` defined",
|
match=r"Invalid toddler configuration, no `exclude_users` defined",
|
||||||
):
|
):
|
||||||
toddlers.plugins.check_commit_rights.main(["test.cfg"])
|
toddlers.plugins.check_commit_rights.main([empty_config_file])
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
assert out == ""
|
assert out == ""
|
||||||
assert err == ""
|
assert err == ""
|
||||||
|
|
|
@ -177,24 +177,22 @@ class TestCheckEmailOverridesToddler:
|
||||||
assert err.startswith("usage:")
|
assert err.startswith("usage:")
|
||||||
assert "error: the following arguments are required:" in err
|
assert "error: the following arguments are required:" in err
|
||||||
|
|
||||||
@patch("toml.load", new=Mock(return_value={}))
|
def test_main_debug(self, capsys, empty_config_file):
|
||||||
def test_main_debug(self, capsys):
|
|
||||||
with pytest.raises(
|
with pytest.raises(
|
||||||
Exception,
|
Exception,
|
||||||
match=r"Invalid toddler configuration, no `email_overrides_url` defined",
|
match=r"Invalid toddler configuration, no `email_overrides_url` defined",
|
||||||
):
|
):
|
||||||
toddlers.plugins.check_email_overrides.main(["test.cfg", "--debug"])
|
toddlers.plugins.check_email_overrides.main([empty_config_file, "--debug"])
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
assert out == ""
|
assert out == ""
|
||||||
assert err == ""
|
assert err == ""
|
||||||
|
|
||||||
@patch("toml.load", new=Mock(return_value={}))
|
def test_main(self, capsys, empty_config_file):
|
||||||
def test_main(self, capsys):
|
|
||||||
with pytest.raises(
|
with pytest.raises(
|
||||||
Exception,
|
Exception,
|
||||||
match=r"Invalid toddler configuration, no `email_overrides_url` defined",
|
match=r"Invalid toddler configuration, no `email_overrides_url` defined",
|
||||||
):
|
):
|
||||||
toddlers.plugins.check_email_overrides.main(["test.cfg"])
|
toddlers.plugins.check_email_overrides.main([empty_config_file])
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
assert out == ""
|
assert out == ""
|
||||||
assert err == ""
|
assert err == ""
|
||||||
|
|
|
@ -14,11 +14,14 @@ from toddlers.utils.pagure import PagureError
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def config():
|
def config(tmp_path):
|
||||||
"""Test configuration for toddler fixture."""
|
"""Test configuration for toddler fixture."""
|
||||||
|
email_overrides_file = tmp_path.joinpath("email-overrides.toml").as_posix()
|
||||||
|
with open(email_overrides_file, "w") as fh:
|
||||||
|
fh.write("")
|
||||||
return {
|
return {
|
||||||
# toddlers level config values
|
# toddlers level config values
|
||||||
"email_overrides_file": "dummy_file",
|
"email_overrides_file": email_overrides_file,
|
||||||
"dist_git_url": "https://src.fedoraproject.org",
|
"dist_git_url": "https://src.fedoraproject.org",
|
||||||
"mail_server": "bastion",
|
"mail_server": "bastion",
|
||||||
"admin_email": "root@localhost",
|
"admin_email": "root@localhost",
|
||||||
|
@ -130,10 +133,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_dry_run_edit_project(
|
def test_process_dry_run_edit_project(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -143,10 +144,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that dry run with edit is processed correctly."""
|
"""Assert that dry run with edit is processed correctly."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -188,8 +185,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler.process(config=config, message={}, dry_run=True)
|
toddler.process(config=config, message={}, dry_run=True)
|
||||||
|
|
||||||
# Asserts
|
# Asserts
|
||||||
mock_toml.assert_called_with("dummy_file")
|
|
||||||
|
|
||||||
assert toddler.namespace_to_product == {
|
assert toddler.namespace_to_product == {
|
||||||
"rpms": ["Fedora", "Fedora EPEL"],
|
"rpms": ["Fedora", "Fedora EPEL"],
|
||||||
"container": ["Fedora Container Images"],
|
"container": ["Fedora Container Images"],
|
||||||
|
@ -291,10 +286,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_unknown_namespace(
|
def test_process_unknown_namespace(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -304,10 +297,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that namespace that we don't know product for will be ignored."""
|
"""Assert that namespace that we don't know product for will be ignored."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -329,8 +318,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler.process(config=config, message={}, dry_run=True)
|
toddler.process(config=config, message={}, dry_run=True)
|
||||||
|
|
||||||
# Asserts
|
# Asserts
|
||||||
mock_toml.assert_called_with("dummy_file")
|
|
||||||
|
|
||||||
assert toddler.namespace_to_product == {
|
assert toddler.namespace_to_product == {
|
||||||
"rpms": ["Fedora", "Fedora EPEL"],
|
"rpms": ["Fedora", "Fedora EPEL"],
|
||||||
"container": ["Fedora Container Images"],
|
"container": ["Fedora Container Images"],
|
||||||
|
@ -356,10 +343,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_dry_run_add_project(
|
def test_process_dry_run_add_project(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -369,10 +354,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that dry run with add is processed correctly."""
|
"""Assert that dry run with add is processed correctly."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -414,8 +395,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler.process(config=config, message={}, dry_run=True)
|
toddler.process(config=config, message={}, dry_run=True)
|
||||||
|
|
||||||
# Asserts
|
# Asserts
|
||||||
mock_toml.assert_called_with("dummy_file")
|
|
||||||
|
|
||||||
assert toddler.namespace_to_product == {
|
assert toddler.namespace_to_product == {
|
||||||
"rpms": ["Fedora", "Fedora EPEL"],
|
"rpms": ["Fedora", "Fedora EPEL"],
|
||||||
"container": ["Fedora Container Images"],
|
"container": ["Fedora Container Images"],
|
||||||
|
@ -508,10 +487,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_dry_run_specific_project(
|
def test_process_dry_run_specific_project(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -521,10 +498,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that dry run is processed only for the specified project."""
|
"""Assert that dry run is processed only for the specified project."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {
|
mock_summaries.return_value = {
|
||||||
"foo": "Summary",
|
"foo": "Summary",
|
||||||
|
@ -642,10 +615,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_epel10(
|
def test_process_epel10(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -655,10 +626,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that epel 10 project is processed correctly."""
|
"""Assert that epel 10 project is processed correctly."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -700,8 +667,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler.process(config=config, message={}, dry_run=True)
|
toddler.process(config=config, message={}, dry_run=True)
|
||||||
|
|
||||||
# Asserts
|
# Asserts
|
||||||
mock_toml.assert_called_with("dummy_file")
|
|
||||||
|
|
||||||
assert toddler.namespace_to_product == {
|
assert toddler.namespace_to_product == {
|
||||||
"rpms": ["Fedora", "Fedora EPEL"],
|
"rpms": ["Fedora", "Fedora EPEL"],
|
||||||
"container": ["Fedora Container Images"],
|
"container": ["Fedora Container Images"],
|
||||||
|
@ -794,10 +759,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_container(
|
def test_process_container(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -807,10 +770,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that container project is processed correctly."""
|
"""Assert that container project is processed correctly."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -852,8 +811,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler.process(config=config, message={}, dry_run=True)
|
toddler.process(config=config, message={}, dry_run=True)
|
||||||
|
|
||||||
# Asserts
|
# Asserts
|
||||||
mock_toml.assert_called_with("dummy_file")
|
|
||||||
|
|
||||||
assert toddler.namespace_to_product == {
|
assert toddler.namespace_to_product == {
|
||||||
"rpms": ["Fedora", "Fedora EPEL"],
|
"rpms": ["Fedora", "Fedora EPEL"],
|
||||||
"container": ["Fedora Container Images"],
|
"container": ["Fedora Container Images"],
|
||||||
|
@ -927,10 +884,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.notify")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.notify")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_report_protocol_error(
|
def test_process_report_protocol_error(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_notify,
|
mock_notify,
|
||||||
|
@ -945,10 +900,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
# Adjust config
|
# Adjust config
|
||||||
config["temp_folder"] = tmpdir
|
config["temp_folder"] = tmpdir
|
||||||
|
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {
|
mock_summaries.return_value = {
|
||||||
"foo": "Summary",
|
"foo": "Summary",
|
||||||
|
@ -1053,10 +1004,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.notify")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.notify")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_report_client_error(
|
def test_process_report_client_error(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_notify,
|
mock_notify,
|
||||||
|
@ -1071,10 +1020,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
# Adjust config
|
# Adjust config
|
||||||
config["temp_folder"] = tmpdir
|
config["temp_folder"] = tmpdir
|
||||||
|
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {
|
mock_summaries.return_value = {
|
||||||
"foo": "Summary",
|
"foo": "Summary",
|
||||||
|
@ -1200,10 +1145,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.notify")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.notify")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_report_missing_mails(
|
def test_process_report_missing_mails(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_notify,
|
mock_notify,
|
||||||
|
@ -1214,10 +1157,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that missing bugzilla e-mails are reported correctly."""
|
"""Assert that missing bugzilla e-mails are reported correctly."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {
|
mock_summaries.return_value = {
|
||||||
"foo": "Summary",
|
"foo": "Summary",
|
||||||
|
@ -1309,10 +1248,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_dry_run_verbose(
|
def test_process_dry_run_verbose(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -1323,10 +1260,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
caplog,
|
caplog,
|
||||||
):
|
):
|
||||||
"""Assert that dry run with verbose is processed correctly."""
|
"""Assert that dry run with verbose is processed correctly."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -1418,10 +1351,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_missing_namespace(
|
def test_process_missing_namespace(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -1431,10 +1362,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that namespace missing in config is processed correctly."""
|
"""Assert that namespace missing in config is processed correctly."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -1480,10 +1407,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_orphaned_project(
|
def test_process_orphaned_project(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -1493,10 +1418,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that dry run with edit is processed correctly."""
|
"""Assert that dry run with edit is processed correctly."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -1613,10 +1534,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.fedora_account")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.fedora_account")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_ignorrable_account(
|
def test_process_ignorrable_account(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
mock_fas,
|
mock_fas,
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
|
@ -1628,10 +1547,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
"""Assert that dry run with edit is processed correctly."""
|
"""Assert that dry run with edit is processed correctly."""
|
||||||
# Adjust config
|
# Adjust config
|
||||||
config["ignorable_accounts"] = ["Slaanesh"]
|
config["ignorable_accounts"] = ["Slaanesh"]
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -1733,10 +1648,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.notify")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.notify")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_notify_user_cache_exists(
|
def test_process_notify_user_cache_exists(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_notify,
|
mock_notify,
|
||||||
|
@ -1762,10 +1675,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
with open(os.path.join(tmpdir, "user_cache.json"), "w") as stream:
|
with open(os.path.join(tmpdir, "user_cache.json"), "w") as stream:
|
||||||
json.dump(data, stream)
|
json.dump(data, stream)
|
||||||
|
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {
|
mock_summaries.return_value = {
|
||||||
"foo": "Summary",
|
"foo": "Summary",
|
||||||
|
@ -1827,10 +1736,8 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bugzilla_system")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load")
|
|
||||||
def test_skip_on_pagure_error(
|
def test_skip_on_pagure_error(
|
||||||
self,
|
self,
|
||||||
mock_toml,
|
|
||||||
mock_set_bodhi,
|
mock_set_bodhi,
|
||||||
mock_set_pagure,
|
mock_set_pagure,
|
||||||
mock_bugzilla,
|
mock_bugzilla,
|
||||||
|
@ -1840,10 +1747,6 @@ class TestDistgitBugzillaSyncToddler:
|
||||||
toddler,
|
toddler,
|
||||||
):
|
):
|
||||||
"""Assert that errors are handled if Pagure fails getting the branches."""
|
"""Assert that errors are handled if Pagure fails getting the branches."""
|
||||||
# Mock toml load
|
|
||||||
email_overrides = Mock()
|
|
||||||
mock_toml.return_value = email_overrides
|
|
||||||
|
|
||||||
# Mock package summaries response
|
# Mock package summaries response
|
||||||
mock_summaries.return_value = {"foo": "Summary"}
|
mock_summaries.return_value = {"foo": "Summary"}
|
||||||
|
|
||||||
|
@ -1928,18 +1831,18 @@ class TestMain:
|
||||||
|
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load", new=Mock(return_value={}))
|
def test_main_debug(
|
||||||
def test_main_debug(self, mock_set_bodhi, mock_set_pagure, caplog):
|
self, mock_set_bodhi, mock_set_pagure, caplog, empty_config_file
|
||||||
|
):
|
||||||
"""Assert that debug is set correctly."""
|
"""Assert that debug is set correctly."""
|
||||||
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
||||||
main(["test.cfg", "--debug"])
|
main([empty_config_file, "--debug"])
|
||||||
assert "Failed to load the file containing the email-overrides" in caplog.text
|
assert "Failed to load the file containing the email-overrides" in caplog.text
|
||||||
|
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.pagure.set_pagure")
|
||||||
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
@patch("toddlers.plugins.distgit_bugzilla_sync.bodhi.set_bodhi")
|
||||||
@patch("toml.load", new=Mock(return_value={}))
|
def test_main(self, mock_set_bodhi, mock_set_pagure, caplog, empty_config_file):
|
||||||
def test_main(self, mock_set_bodhi, mock_set_pagure, caplog):
|
|
||||||
"""Assert that INFO log level is handled correctly."""
|
"""Assert that INFO log level is handled correctly."""
|
||||||
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
||||||
main(["test.cfg"])
|
main([empty_config_file])
|
||||||
assert "Failed to load the file containing the email-overrides" in caplog.text
|
assert "Failed to load the file containing the email-overrides" in caplog.text
|
||||||
|
|
|
@ -51,29 +51,29 @@ class TestPackagerBugzillaSyncToddler:
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
||||||
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
||||||
@patch("toddlers.utils.bugzilla_system.add_user_to_group")
|
@patch("toddlers.utils.bugzilla_system.add_user_to_group")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process(
|
def test_process(
|
||||||
self,
|
self,
|
||||||
toml_load,
|
|
||||||
bz_user_grp,
|
bz_user_grp,
|
||||||
get_bz_grp_mbr,
|
get_bz_grp_mbr,
|
||||||
get_bz_email,
|
get_bz_email,
|
||||||
get_fas_grp_mbr,
|
get_fas_grp_mbr,
|
||||||
toddler,
|
toddler,
|
||||||
|
empty_config_file,
|
||||||
):
|
):
|
||||||
toml_load.return_value = {}
|
|
||||||
get_fas_grp_mbr.return_value = ["pingou", "nils"]
|
get_fas_grp_mbr.return_value = ["pingou", "nils"]
|
||||||
get_bz_email.side_effect = ["pingou@fp.o", "nils@fp.o"]
|
get_bz_email.side_effect = ["pingou@fp.o", "nils@fp.o"]
|
||||||
get_bz_grp_mbr.return_value = ["pingou@fp.o", "nphilipp@fp.o"]
|
get_bz_grp_mbr.return_value = ["pingou@fp.o", "nphilipp@fp.o"]
|
||||||
|
|
||||||
toddler.process(
|
toddler.process(
|
||||||
config={"email_overrides_file": "test", "bugzilla_group": "fedora_contrib"},
|
config={
|
||||||
|
"email_overrides_file": empty_config_file,
|
||||||
|
"bugzilla_group": "fedora_contrib",
|
||||||
|
},
|
||||||
message=None,
|
message=None,
|
||||||
username=False,
|
username=False,
|
||||||
dry_run=False,
|
dry_run=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
toml_load.assert_called_with("test")
|
|
||||||
get_fas_grp_mbr.assert_called_with("packager")
|
get_fas_grp_mbr.assert_called_with("packager")
|
||||||
get_bz_email.assert_called_with("pingou", {})
|
get_bz_email.assert_called_with("pingou", {})
|
||||||
get_bz_grp_mbr.assert_called_with("fedora_contrib")
|
get_bz_grp_mbr.assert_called_with("fedora_contrib")
|
||||||
|
@ -89,22 +89,27 @@ class TestPackagerBugzillaSyncToddler:
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
||||||
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
||||||
@patch("toddlers.utils.bugzilla_system.add_user_to_group")
|
@patch("toddlers.utils.bugzilla_system.add_user_to_group")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_username(
|
def test_process_username(
|
||||||
self, toml_load, bz_user_grp, get_bz_grp_mbr, get_bz_email, toddler
|
self,
|
||||||
|
bz_user_grp,
|
||||||
|
get_bz_grp_mbr,
|
||||||
|
get_bz_email,
|
||||||
|
toddler,
|
||||||
|
empty_config_file,
|
||||||
):
|
):
|
||||||
toml_load.return_value = {}
|
|
||||||
get_bz_email.side_effect = ["nils@fp.o"]
|
get_bz_email.side_effect = ["nils@fp.o"]
|
||||||
get_bz_grp_mbr.return_value = ["pingou@fp.o"]
|
get_bz_grp_mbr.return_value = ["pingou@fp.o"]
|
||||||
|
|
||||||
toddler.process(
|
toddler.process(
|
||||||
config={"email_overrides_file": "test", "bugzilla_group": "fedora_contrib"},
|
config={
|
||||||
|
"email_overrides_file": empty_config_file,
|
||||||
|
"bugzilla_group": "fedora_contrib",
|
||||||
|
},
|
||||||
message=None,
|
message=None,
|
||||||
username="nils",
|
username="nils",
|
||||||
dry_run=False,
|
dry_run=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
toml_load.assert_called_with("test")
|
|
||||||
get_bz_email.assert_called_with("nils", {})
|
get_bz_email.assert_called_with("nils", {})
|
||||||
get_bz_grp_mbr.assert_called_with("fedora_contrib")
|
get_bz_grp_mbr.assert_called_with("fedora_contrib")
|
||||||
bz_user_grp.assert_called_with(
|
bz_user_grp.assert_called_with(
|
||||||
|
@ -120,31 +125,31 @@ class TestPackagerBugzillaSyncToddler:
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
||||||
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
||||||
@patch("toddlers.utils.bugzilla_system.add_user_to_group")
|
@patch("toddlers.utils.bugzilla_system.add_user_to_group")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_fas_only_none(
|
def test_process_fas_only_none(
|
||||||
self,
|
self,
|
||||||
toml_load,
|
|
||||||
bz_user_grp,
|
bz_user_grp,
|
||||||
get_bz_grp_mbr,
|
get_bz_grp_mbr,
|
||||||
get_bz_email,
|
get_bz_email,
|
||||||
get_fa_grp_member,
|
get_fa_grp_member,
|
||||||
toddler,
|
toddler,
|
||||||
|
empty_config_file,
|
||||||
):
|
):
|
||||||
# Assert that there is no error when the fas_only contains None
|
# Assert that there is no error when the fas_only contains None
|
||||||
# https://pagure.io/fedora-infra/toddlers/issue/174
|
# https://pagure.io/fedora-infra/toddlers/issue/174
|
||||||
toml_load.return_value = {}
|
|
||||||
get_fa_grp_member.return_value = ["nils", "zlopez"]
|
get_fa_grp_member.return_value = ["nils", "zlopez"]
|
||||||
get_bz_email.side_effect = [None, "zlopez@fp.o"]
|
get_bz_email.side_effect = [None, "zlopez@fp.o"]
|
||||||
get_bz_grp_mbr.return_value = ["pingou@fp.o"]
|
get_bz_grp_mbr.return_value = ["pingou@fp.o"]
|
||||||
|
|
||||||
toddler.process(
|
toddler.process(
|
||||||
config={"email_overrides_file": "test", "bugzilla_group": "fedora_contrib"},
|
config={
|
||||||
|
"email_overrides_file": empty_config_file,
|
||||||
|
"bugzilla_group": "fedora_contrib",
|
||||||
|
},
|
||||||
message=None,
|
message=None,
|
||||||
username=None,
|
username=None,
|
||||||
dry_run=False,
|
dry_run=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
toml_load.assert_called_with("test")
|
|
||||||
get_bz_email.assert_called_with("zlopez", {})
|
get_bz_email.assert_called_with("zlopez", {})
|
||||||
get_bz_grp_mbr.assert_called_with("fedora_contrib")
|
get_bz_grp_mbr.assert_called_with("fedora_contrib")
|
||||||
bz_user_grp.assert_called_with(
|
bz_user_grp.assert_called_with(
|
||||||
|
@ -167,18 +172,16 @@ class TestPackagerBugzillaSyncToddler:
|
||||||
assert err.startswith("usage:")
|
assert err.startswith("usage:")
|
||||||
assert "error: the following arguments are required:" in err
|
assert "error: the following arguments are required:" in err
|
||||||
|
|
||||||
@patch("toml.load", new=Mock(return_value={}))
|
def test_main_debug(self, capsys, empty_config_file):
|
||||||
def test_main_debug(self, capsys):
|
|
||||||
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
||||||
main(["test.cfg", "--debug"])
|
main([empty_config_file, "--debug"])
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
assert out == "Failed to load the file containing the email-overrides\n"
|
assert out == "Failed to load the file containing the email-overrides\n"
|
||||||
assert err == ""
|
assert err == ""
|
||||||
|
|
||||||
@patch("toml.load", new=Mock(return_value={}))
|
def test_main(self, capsys, empty_config_file):
|
||||||
def test_main(self, capsys):
|
|
||||||
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
||||||
main(["test.cfg"])
|
main([empty_config_file])
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
assert out == "Failed to load the file containing the email-overrides\n"
|
assert out == "Failed to load the file containing the email-overrides\n"
|
||||||
assert err == ""
|
assert err == ""
|
||||||
|
|
|
@ -30,18 +30,18 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
assert out == "Failed to load the file containing the email-overrides\n"
|
assert out == "Failed to load the file containing the email-overrides\n"
|
||||||
assert err == ""
|
assert err == ""
|
||||||
|
|
||||||
def test_process_no_email_override_file(self, toddler, capsys):
|
def test_process_no_email_override_file(self, toddler, capsys, empty_config_file):
|
||||||
with pytest.raises(
|
with pytest.raises(
|
||||||
FileNotFoundError, match=r"No such file or directory: 'test'"
|
ValueError, match=r"No fas_url found in the configuration file"
|
||||||
):
|
):
|
||||||
toddler.process(
|
toddler.process(
|
||||||
config={"email_overrides_file": "test"},
|
config={"email_overrides_file": empty_config_file},
|
||||||
message=None,
|
message=None,
|
||||||
username=False,
|
username=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
assert out == "Failed to load the file containing the email-overrides\n"
|
assert out == ""
|
||||||
assert err == ""
|
assert err == ""
|
||||||
|
|
||||||
@patch("toddlers.utils.fedora_account.set_fasjson", new=Mock(return_value=True))
|
@patch("toddlers.utils.fedora_account.set_fasjson", new=Mock(return_value=True))
|
||||||
|
@ -51,18 +51,16 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_ignorable_namespaces(
|
def test_process_ignorable_namespaces(
|
||||||
self,
|
self,
|
||||||
toml_load,
|
|
||||||
get_bz_email_user,
|
get_bz_email_user,
|
||||||
get_bz_email_group,
|
get_bz_email_group,
|
||||||
bz_get_group_member,
|
bz_get_group_member,
|
||||||
bz_get_user,
|
bz_get_user,
|
||||||
send_email,
|
send_email,
|
||||||
toddler,
|
toddler,
|
||||||
|
empty_config_file,
|
||||||
):
|
):
|
||||||
toml_load.return_value = {}
|
|
||||||
get_bz_email_user.side_effect = [
|
get_bz_email_user.side_effect = [
|
||||||
"besser82@fp.o",
|
"besser82@fp.o",
|
||||||
"churchyard@fp.o",
|
"churchyard@fp.o",
|
||||||
|
@ -85,7 +83,7 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
|
|
||||||
toddler.process(
|
toddler.process(
|
||||||
config={
|
config={
|
||||||
"email_overrides_file": "test",
|
"email_overrides_file": empty_config_file,
|
||||||
"bugzilla_group": "fedora_contrib",
|
"bugzilla_group": "fedora_contrib",
|
||||||
"dist_git_url": "https://src.fp.o",
|
"dist_git_url": "https://src.fp.o",
|
||||||
"admin_email": "admin@fp.o",
|
"admin_email": "admin@fp.o",
|
||||||
|
@ -96,7 +94,6 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
username=False,
|
username=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
toml_load.assert_called_with("test")
|
|
||||||
get_bz_email_user.assert_not_called()
|
get_bz_email_user.assert_not_called()
|
||||||
get_bz_email_group.assert_not_called()
|
get_bz_email_group.assert_not_called()
|
||||||
bz_get_group_member.assert_called_with("fedora_contrib")
|
bz_get_group_member.assert_called_with("fedora_contrib")
|
||||||
|
@ -110,18 +107,16 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process(
|
def test_process(
|
||||||
self,
|
self,
|
||||||
toml_load,
|
|
||||||
get_bz_email_user,
|
get_bz_email_user,
|
||||||
get_bz_email_group,
|
get_bz_email_group,
|
||||||
bz_get_group_member,
|
bz_get_group_member,
|
||||||
bz_get_user,
|
bz_get_user,
|
||||||
send_email,
|
send_email,
|
||||||
toddler,
|
toddler,
|
||||||
|
empty_config_file,
|
||||||
):
|
):
|
||||||
toml_load.return_value = {}
|
|
||||||
get_bz_email_user.side_effect = [
|
get_bz_email_user.side_effect = [
|
||||||
"besser82@fp.o",
|
"besser82@fp.o",
|
||||||
"churchyard@fp.o",
|
"churchyard@fp.o",
|
||||||
|
@ -144,7 +139,7 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
|
|
||||||
toddler.process(
|
toddler.process(
|
||||||
config={
|
config={
|
||||||
"email_overrides_file": "test",
|
"email_overrides_file": empty_config_file,
|
||||||
"bugzilla_group": "fedora_contrib",
|
"bugzilla_group": "fedora_contrib",
|
||||||
"dist_git_url": "https://src.fp.o",
|
"dist_git_url": "https://src.fp.o",
|
||||||
"admin_email": "admin@fp.o",
|
"admin_email": "admin@fp.o",
|
||||||
|
@ -154,7 +149,6 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
username=False,
|
username=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
toml_load.assert_called_with("test")
|
|
||||||
get_bz_email_user.assert_called()
|
get_bz_email_user.assert_called()
|
||||||
get_bz_email_user.assert_has_calls(
|
get_bz_email_user.assert_has_calls(
|
||||||
calls=[call("besser82", {}), call("churchyard", {}), call("dwmw2", {})]
|
calls=[call("besser82", {}), call("churchyard", {}), call("dwmw2", {})]
|
||||||
|
@ -267,18 +261,16 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_username_no_bz_email(
|
def test_process_username_no_bz_email(
|
||||||
self,
|
self,
|
||||||
toml_load,
|
|
||||||
get_bz_email_user,
|
get_bz_email_user,
|
||||||
get_bz_email_group,
|
get_bz_email_group,
|
||||||
bz_get_group_member,
|
bz_get_group_member,
|
||||||
bz_get_user,
|
bz_get_user,
|
||||||
send_email,
|
send_email,
|
||||||
toddler,
|
toddler,
|
||||||
|
empty_config_file,
|
||||||
):
|
):
|
||||||
toml_load.return_value = {}
|
|
||||||
get_bz_email_user.side_effect = [None]
|
get_bz_email_user.side_effect = [None]
|
||||||
get_bz_email_group.side_effect = ["python-sig@lists.fp.o"]
|
get_bz_email_group.side_effect = ["python-sig@lists.fp.o"]
|
||||||
bz_get_group_member.return_value = ["dwmw2@fp.o", "besser82@fp.o"]
|
bz_get_group_member.return_value = ["dwmw2@fp.o", "besser82@fp.o"]
|
||||||
|
@ -297,7 +289,7 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
|
|
||||||
toddler.process(
|
toddler.process(
|
||||||
config={
|
config={
|
||||||
"email_overrides_file": "test",
|
"email_overrides_file": empty_config_file,
|
||||||
"bugzilla_group": "fedora_contrib",
|
"bugzilla_group": "fedora_contrib",
|
||||||
"dist_git_url": "https://src.fp.o",
|
"dist_git_url": "https://src.fp.o",
|
||||||
"admin_email": "admin@fp.o",
|
"admin_email": "admin@fp.o",
|
||||||
|
@ -307,7 +299,6 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
username="nils",
|
username="nils",
|
||||||
)
|
)
|
||||||
|
|
||||||
toml_load.assert_called_with("test")
|
|
||||||
bz_get_group_member.assert_called_with("fedora_contrib")
|
bz_get_group_member.assert_called_with("fedora_contrib")
|
||||||
get_bz_email_user.assert_called()
|
get_bz_email_user.assert_called()
|
||||||
get_bz_email_user.assert_has_calls(calls=[call("nils", {})])
|
get_bz_email_user.assert_has_calls(calls=[call("nils", {})])
|
||||||
|
@ -324,18 +315,16 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_username_ignored(
|
def test_process_username_ignored(
|
||||||
self,
|
self,
|
||||||
toml_load,
|
|
||||||
get_bz_email_user,
|
get_bz_email_user,
|
||||||
get_bz_email_group,
|
get_bz_email_group,
|
||||||
bz_get_group_member,
|
bz_get_group_member,
|
||||||
bz_get_user,
|
bz_get_user,
|
||||||
send_email,
|
send_email,
|
||||||
toddler,
|
toddler,
|
||||||
|
empty_config_file,
|
||||||
):
|
):
|
||||||
toml_load.return_value = {}
|
|
||||||
get_bz_email_user.side_effect = [
|
get_bz_email_user.side_effect = [
|
||||||
"dwmw2@fp.o",
|
"dwmw2@fp.o",
|
||||||
]
|
]
|
||||||
|
@ -350,7 +339,7 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
|
|
||||||
toddler.process(
|
toddler.process(
|
||||||
config={
|
config={
|
||||||
"email_overrides_file": "test",
|
"email_overrides_file": empty_config_file,
|
||||||
"bugzilla_group": "fedora_contrib",
|
"bugzilla_group": "fedora_contrib",
|
||||||
"dist_git_url": "https://src.fp.o",
|
"dist_git_url": "https://src.fp.o",
|
||||||
"admin_email": "admin@fp.o",
|
"admin_email": "admin@fp.o",
|
||||||
|
@ -360,7 +349,6 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
message=None,
|
message=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
toml_load.assert_called_with("test")
|
|
||||||
bz_get_group_member.assert_called_with("fedora_contrib")
|
bz_get_group_member.assert_called_with("fedora_contrib")
|
||||||
get_bz_email_user.assert_called()
|
get_bz_email_user.assert_called()
|
||||||
get_bz_email_user.assert_has_calls(calls=[call("dwmw2", {})])
|
get_bz_email_user.assert_has_calls(calls=[call("dwmw2", {})])
|
||||||
|
@ -376,18 +364,16 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
@patch("toddlers.utils.bugzilla_system.get_group_member")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
@patch("toddlers.utils.fedora_account.get_bz_email_group")
|
||||||
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
@patch("toddlers.utils.fedora_account.get_bz_email_user")
|
||||||
@patch("toml.load")
|
|
||||||
def test_process_username_group_no_bz_email(
|
def test_process_username_group_no_bz_email(
|
||||||
self,
|
self,
|
||||||
toml_load,
|
|
||||||
get_bz_email_user,
|
get_bz_email_user,
|
||||||
get_bz_email_group,
|
get_bz_email_group,
|
||||||
bz_get_group_member,
|
bz_get_group_member,
|
||||||
bz_get_user,
|
bz_get_user,
|
||||||
send_email,
|
send_email,
|
||||||
toddler,
|
toddler,
|
||||||
|
empty_config_file,
|
||||||
):
|
):
|
||||||
toml_load.return_value = {}
|
|
||||||
get_bz_email_group.side_effect = [None]
|
get_bz_email_group.side_effect = [None]
|
||||||
bz_get_group_member.return_value = ["dwmw2@fp.o", "besser82@fp.o"]
|
bz_get_group_member.return_value = ["dwmw2@fp.o", "besser82@fp.o"]
|
||||||
bz_get_user.return_value = False
|
bz_get_user.return_value = False
|
||||||
|
@ -405,7 +391,7 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
|
|
||||||
toddler.process(
|
toddler.process(
|
||||||
config={
|
config={
|
||||||
"email_overrides_file": "test",
|
"email_overrides_file": empty_config_file,
|
||||||
"bugzilla_group": "fedora_contrib",
|
"bugzilla_group": "fedora_contrib",
|
||||||
"dist_git_url": "https://src.fp.o",
|
"dist_git_url": "https://src.fp.o",
|
||||||
"admin_email": "admin@fp.o",
|
"admin_email": "admin@fp.o",
|
||||||
|
@ -415,7 +401,6 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
username="@python-sig",
|
username="@python-sig",
|
||||||
)
|
)
|
||||||
|
|
||||||
toml_load.assert_called_with("test")
|
|
||||||
bz_get_group_member.assert_called_with("fedora_contrib")
|
bz_get_group_member.assert_called_with("fedora_contrib")
|
||||||
get_bz_email_user.assert_not_called()
|
get_bz_email_user.assert_not_called()
|
||||||
get_bz_email_group.assert_called()
|
get_bz_email_group.assert_called()
|
||||||
|
@ -437,18 +422,16 @@ class TestPackagersWithoutBugzillaToddler:
|
||||||
assert err.startswith("usage:")
|
assert err.startswith("usage:")
|
||||||
assert "error: the following arguments are required:" in err
|
assert "error: the following arguments are required:" in err
|
||||||
|
|
||||||
@patch("toml.load", new=Mock(return_value={}))
|
def test_main_debug(self, capsys, empty_config_file):
|
||||||
def test_main_debug(self, capsys):
|
|
||||||
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
||||||
main(["test.cfg", "--debug"])
|
main([empty_config_file, "--debug"])
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
assert out == "Failed to load the file containing the email-overrides\n"
|
assert out == "Failed to load the file containing the email-overrides\n"
|
||||||
assert err == ""
|
assert err == ""
|
||||||
|
|
||||||
@patch("toml.load", new=Mock(return_value={}))
|
def test_main(self, capsys, empty_config_file):
|
||||||
def test_main(self, capsys):
|
|
||||||
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
with pytest.raises(KeyError, match=r"'email_overrides_file'"):
|
||||||
main(["test.cfg"])
|
main([empty_config_file])
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
assert out == "Failed to load the file containing the email-overrides\n"
|
assert out == "Failed to load the file containing the email-overrides\n"
|
||||||
assert err == ""
|
assert err == ""
|
||||||
|
|
|
@ -2797,13 +2797,11 @@ class TestMain:
|
||||||
assert err.startswith("usage:")
|
assert err.startswith("usage:")
|
||||||
assert "error: the following arguments are required:" in err
|
assert "error: the following arguments are required:" in err
|
||||||
|
|
||||||
@patch("toml.load")
|
|
||||||
@patch("toddlers.plugins.scm_request_processor.SCMRequestProcessor.process")
|
@patch("toddlers.plugins.scm_request_processor.SCMRequestProcessor.process")
|
||||||
@patch("toddlers.plugins.scm_request_processor.pagure")
|
@patch("toddlers.plugins.scm_request_processor.pagure")
|
||||||
def test_main(self, mock_pagure, mock_process, mock_toml):
|
def test_main(self, mock_pagure, mock_process, empty_config_file):
|
||||||
"""Assert that main is initializing config and message correctly."""
|
"""Assert that main is initializing config and message correctly."""
|
||||||
# Preparation
|
# Preparation
|
||||||
mock_toml.return_value = {}
|
|
||||||
mock_pagure_io = Mock()
|
mock_pagure_io = Mock()
|
||||||
mock_issue = {"id": 100, "user": {"name": "zlopez"}}
|
mock_issue = {"id": 100, "user": {"name": "zlopez"}}
|
||||||
mock_pagure_io.get_issue.return_value = mock_issue
|
mock_pagure_io.get_issue.return_value = mock_issue
|
||||||
|
@ -2811,10 +2809,9 @@ class TestMain:
|
||||||
mock_pagure.set_pagure.return_value = mock_pagure_io
|
mock_pagure.set_pagure.return_value = mock_pagure_io
|
||||||
|
|
||||||
# Function to test
|
# Function to test
|
||||||
scm_request_processor.main(["--config", "test.cfg", "100"])
|
scm_request_processor.main(["--config", empty_config_file, "100"])
|
||||||
|
|
||||||
# Assertions
|
# Assertions
|
||||||
mock_toml.assert_called_with("test.cfg")
|
|
||||||
mock_pagure.set_pagure.assert_called_with({})
|
mock_pagure.set_pagure.assert_called_with({})
|
||||||
mock_pagure_io.get_issue.assert_called_with(
|
mock_pagure_io.get_issue.assert_called_with(
|
||||||
100, scm_request_processor.PROJECT_NAMESPACE
|
100, scm_request_processor.PROJECT_NAMESPACE
|
||||||
|
|
|
@ -11,7 +11,7 @@ import argparse
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import toml
|
import tomllib
|
||||||
|
|
||||||
from toddlers.base import ToddlerBase
|
from toddlers.base import ToddlerBase
|
||||||
from toddlers.utils import fedora_account
|
from toddlers.utils import fedora_account
|
||||||
|
@ -183,7 +183,8 @@ def main(args):
|
||||||
args = get_arguments(args)
|
args = get_arguments(args)
|
||||||
setup_logging(log_level=args.log_level)
|
setup_logging(log_level=args.log_level)
|
||||||
|
|
||||||
base_config = toml.load(args.conf)
|
with open(args.conf, "rb") as conf_fp:
|
||||||
|
base_config = tomllib.load(conf_fp)
|
||||||
|
|
||||||
default_config = base_config.get("consumer_config", {}).get("default", {})
|
default_config = base_config.get("consumer_config", {}).get("default", {})
|
||||||
private_config = base_config.get("consumer_config", {}).get(
|
private_config = base_config.get("consumer_config", {}).get(
|
||||||
|
|
|
@ -12,7 +12,7 @@ import argparse
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import toml
|
import tomllib
|
||||||
|
|
||||||
from toddlers.base import ToddlerBase
|
from toddlers.base import ToddlerBase
|
||||||
from toddlers.utils import bugzilla_system
|
from toddlers.utils import bugzilla_system
|
||||||
|
@ -66,7 +66,7 @@ class CheckEmailOverrides(ToddlerBase):
|
||||||
req.status_code,
|
req.status_code,
|
||||||
)
|
)
|
||||||
|
|
||||||
data = toml.loads(req.text)
|
data = tomllib.loads(req.text)
|
||||||
|
|
||||||
_log.info("Setting up connection to FAS")
|
_log.info("Setting up connection to FAS")
|
||||||
fedora_account.set_fasjson(config)
|
fedora_account.set_fasjson(config)
|
||||||
|
@ -167,7 +167,8 @@ def main(args):
|
||||||
args = get_arguments(args)
|
args = get_arguments(args)
|
||||||
setup_logging(log_level=args.log_level)
|
setup_logging(log_level=args.log_level)
|
||||||
|
|
||||||
base_config = toml.load(args.conf)
|
with open(args.conf, "rb") as conf_fh:
|
||||||
|
base_config = tomllib.load(conf_fh)
|
||||||
|
|
||||||
default_config = base_config.get("consumer_config", {}).get("default", {})
|
default_config = base_config.get("consumer_config", {}).get("default", {})
|
||||||
private_config = base_config.get("consumer_config", {}).get(
|
private_config = base_config.get("consumer_config", {}).get(
|
||||||
|
|
|
@ -17,7 +17,7 @@ import time
|
||||||
from typing import Any, cast, Dict, Iterator, Mapping, Optional
|
from typing import Any, cast, Dict, Iterator, Mapping, Optional
|
||||||
import xmlrpc
|
import xmlrpc
|
||||||
|
|
||||||
import toml
|
import tomllib
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import tqdm
|
import tqdm
|
||||||
|
@ -97,7 +97,8 @@ class DistgitBugzillaSync(ToddlerBase):
|
||||||
self.bodhi = bodhi.set_bodhi(config)
|
self.bodhi = bodhi.set_bodhi(config)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
email_overrides = toml.load(config["email_overrides_file"])
|
with open(config["email_overrides_file"], "rb") as overrides_fh:
|
||||||
|
email_overrides = tomllib.load(overrides_fh)
|
||||||
except Exception:
|
except Exception:
|
||||||
_log.error("Failed to load the file containing the email-overrides")
|
_log.error("Failed to load the file containing the email-overrides")
|
||||||
raise
|
raise
|
||||||
|
@ -571,7 +572,8 @@ def main(args):
|
||||||
args = _get_arguments(args)
|
args = _get_arguments(args)
|
||||||
_setup_logging(log_level=args.log_level)
|
_setup_logging(log_level=args.log_level)
|
||||||
|
|
||||||
config = toml.load(args.conf)
|
with open(args.conf, "rb") as conf_fh:
|
||||||
|
config = tomllib.load(conf_fh)
|
||||||
parsed_config = config.get("consumer_config", {}).get("default", {})
|
parsed_config = config.get("consumer_config", {}).get("default", {})
|
||||||
parsed_config.update(
|
parsed_config.update(
|
||||||
config.get("consumer_config", {}).get("distgit_bugzilla_sync", ())
|
config.get("consumer_config", {}).get("distgit_bugzilla_sync", ())
|
||||||
|
|
|
@ -15,7 +15,7 @@ import time
|
||||||
from fedora_messaging_git_hook_messages import CommitV1
|
from fedora_messaging_git_hook_messages import CommitV1
|
||||||
import koji
|
import koji
|
||||||
import requests
|
import requests
|
||||||
import toml
|
import tomllib
|
||||||
|
|
||||||
from toddlers.base import ToddlerBase
|
from toddlers.base import ToddlerBase
|
||||||
from toddlers.utils import bodhi, pagure
|
from toddlers.utils import bodhi, pagure
|
||||||
|
@ -326,7 +326,8 @@ def main(args):
|
||||||
"""Schedule the first test and run the scheduler."""
|
"""Schedule the first test and run the scheduler."""
|
||||||
args = get_arguments(args)
|
args = get_arguments(args)
|
||||||
logging.StreamHandler(stream=sys.stdout)
|
logging.StreamHandler(stream=sys.stdout)
|
||||||
config = toml.load(args.conf)
|
with open(args.conf, "rb") as conf_fh:
|
||||||
|
config = tomllib.load(conf_fh)
|
||||||
logging.basicConfig(level=args.log_level)
|
logging.basicConfig(level=args.log_level)
|
||||||
msg_file = args.message
|
msg_file = args.message
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import argparse
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import toml
|
import tomllib
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import tqdm
|
import tqdm
|
||||||
|
@ -50,7 +50,8 @@ class PackagerBugzillaSync(ToddlerBase):
|
||||||
"""Process a given message."""
|
"""Process a given message."""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
email_overrides = toml.load(config["email_overrides_file"])
|
with open(config["email_overrides_file"], "rb") as overrides_fh:
|
||||||
|
email_overrides = tomllib.load(overrides_fh)
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Failed to load the file containing the email-overrides")
|
print("Failed to load the file containing the email-overrides")
|
||||||
raise
|
raise
|
||||||
|
@ -196,7 +197,8 @@ def main(args):
|
||||||
args = get_arguments(args)
|
args = get_arguments(args)
|
||||||
setup_logging(log_level=args.log_level)
|
setup_logging(log_level=args.log_level)
|
||||||
|
|
||||||
config = toml.load(args.conf)
|
with open(args.conf, "rb") as conf_fh:
|
||||||
|
config = tomllib.load(conf_fh)
|
||||||
PackagerBugzillaSync().process(
|
PackagerBugzillaSync().process(
|
||||||
config=config.get("consumer_config", {}).get("packager_bugzilla_sync", {}),
|
config=config.get("consumer_config", {}).get("packager_bugzilla_sync", {}),
|
||||||
message={},
|
message={},
|
||||||
|
|
|
@ -12,7 +12,7 @@ import logging
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import toml
|
import tomllib
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import tqdm
|
import tqdm
|
||||||
|
@ -95,7 +95,8 @@ class PackagersWithoutBugzilla(ToddlerBase):
|
||||||
self.logs = []
|
self.logs = []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
email_overrides = toml.load(config["email_overrides_file"])
|
with open(config["email_overrides_file"], "rb") as overrides_fh:
|
||||||
|
email_overrides = tomllib.load(overrides_fh)
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Failed to load the file containing the email-overrides")
|
print("Failed to load the file containing the email-overrides")
|
||||||
raise
|
raise
|
||||||
|
@ -293,7 +294,8 @@ def main(args):
|
||||||
args = get_arguments(args)
|
args = get_arguments(args)
|
||||||
setup_logging(log_level=args.log_level)
|
setup_logging(log_level=args.log_level)
|
||||||
|
|
||||||
config = toml.load(args.conf)
|
with open(args.conf, "rb") as conf_fh:
|
||||||
|
config = tomllib.load(conf_fh)
|
||||||
PackagersWithoutBugzilla().process(
|
PackagersWithoutBugzilla().process(
|
||||||
config=config.get("consumer_config", {}).get("packagers_without_bugzilla", {}),
|
config=config.get("consumer_config", {}).get("packagers_without_bugzilla", {}),
|
||||||
message={},
|
message={},
|
||||||
|
|
89
toddlers/plugins/scm_commits.py_
Normal file
89
toddlers/plugins/scm_commits.py_
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
"""
|
||||||
|
This script sends an email on each incoming git commit.
|
||||||
|
https://pagure.io/fedora-infrastructure/issue/11641
|
||||||
|
|
||||||
|
Authors: Aurélien Bompard <abompard@fedoraproject.org>
|
||||||
|
|
||||||
|
"""
|
||||||
|
import argparse
|
||||||
|
import fnmatch
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import smtplib
|
||||||
|
from email.message import EmailMessage
|
||||||
|
from tempfile import TemporaryDirectory
|
||||||
|
import traceback
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
import arrow
|
||||||
|
import backoff
|
||||||
|
from fedora_messaging.api import Message
|
||||||
|
from pagure_messages.issue_schema import IssueNewV1
|
||||||
|
import toml
|
||||||
|
|
||||||
|
from toddlers.base import ToddlerBase
|
||||||
|
from toddlers.exceptions import ValidationError
|
||||||
|
from toddlers.utils import bugzilla_system, fedora_account, git, pagure, pdc, requests
|
||||||
|
|
||||||
|
_log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def backoff_hdlr(details):
|
||||||
|
_log.warning("Failed sending email. Retrying. %s", traceback.format_tb(sys.exc_info()[2]))
|
||||||
|
self = details["args"][0]
|
||||||
|
self._smtp.close()
|
||||||
|
|
||||||
|
|
||||||
|
def giveup_hdlr(details):
|
||||||
|
_log.error("Failed sending email. Giving up. %s", traceback.format_tb(sys.exc_info()[2]))
|
||||||
|
|
||||||
|
|
||||||
|
class SCMCommitsProcessor(ToddlerBase):
|
||||||
|
"""
|
||||||
|
Listens for commits in Dist-Git and sends an email to a configured address.
|
||||||
|
"""
|
||||||
|
|
||||||
|
name: str = "scm_commits"
|
||||||
|
|
||||||
|
amqp_topics: list = [
|
||||||
|
"org.fedoraproject.*.git.receive",
|
||||||
|
]
|
||||||
|
amqp_topics_re = re.compile(r"^org\.fedoraproject\.[^.]+\.git\.receive$")
|
||||||
|
|
||||||
|
_smtp = None
|
||||||
|
|
||||||
|
def accepts_topic(self, topic: str) -> bool:
|
||||||
|
return self.amqp_topics_re.match(topic) is not None
|
||||||
|
|
||||||
|
def process(
|
||||||
|
self,
|
||||||
|
config: dict,
|
||||||
|
message: Message,
|
||||||
|
) -> None:
|
||||||
|
_log.debug(
|
||||||
|
"Processing message:\n%s", json.dumps(message.body, indent=2)
|
||||||
|
)
|
||||||
|
if self._smtp is None:
|
||||||
|
self._smtp = smtplib.SMTP(config.get("mail_server", ""), config.get("mail_server_port", 0))
|
||||||
|
|
||||||
|
subject = config.get("email_subject_prefix", "") + message.summary
|
||||||
|
self.send_email(config.get("email_from", config["admin_email"]), config["email_to"], subject, str(message))
|
||||||
|
|
||||||
|
@backoff.on_exception(
|
||||||
|
backoff.expo,
|
||||||
|
(smtplib.SMTPServerDisconnected),
|
||||||
|
max_tries=3,
|
||||||
|
on_backoff=backoff_hdlr,
|
||||||
|
on_giveup=giveup_hdlr,
|
||||||
|
)
|
||||||
|
def send_email(self, sender: str, rcpt: str, subject: str, body: str):
|
||||||
|
email = EmailMessage()
|
||||||
|
email["From"] = sender
|
||||||
|
email["To"] = rcpt
|
||||||
|
email["Subject"] = subject
|
||||||
|
email.set_content(body)
|
||||||
|
_log.debug("Sending email to %s with subject %s", email["To"], email["Subject"])
|
||||||
|
self._smtp.send_message(email)
|
||||||
|
_log.debug("The email was sent")
|
|
@ -20,7 +20,7 @@ from typing import Optional
|
||||||
import arrow
|
import arrow
|
||||||
from fedora_messaging.api import Message
|
from fedora_messaging.api import Message
|
||||||
from pagure_messages.issue_schema import IssueNewV1
|
from pagure_messages.issue_schema import IssueNewV1
|
||||||
import toml
|
import tomllib
|
||||||
|
|
||||||
from toddlers.base import ToddlerBase
|
from toddlers.base import ToddlerBase
|
||||||
from toddlers.exceptions import ValidationError
|
from toddlers.exceptions import ValidationError
|
||||||
|
@ -1052,7 +1052,8 @@ def main(args):
|
||||||
args = _get_arguments(args)
|
args = _get_arguments(args)
|
||||||
_setup_logging(log_level=args.log_level)
|
_setup_logging(log_level=args.log_level)
|
||||||
|
|
||||||
config = toml.load(args.config)
|
with open(args.config, "rb") as conf_fh:
|
||||||
|
config = tomllib.load(conf_fh)
|
||||||
parsed_config = config.get("consumer_config", {}).get("default", {})
|
parsed_config = config.get("consumer_config", {}).get("default", {})
|
||||||
parsed_config.update(
|
parsed_config.update(
|
||||||
config.get("consumer_config", {}).get("scm_request_processor", {})
|
config.get("consumer_config", {}).get("scm_request_processor", {})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue