#226 Remove PDC calls from unretire_packages
Closed a year ago by amedvede. Opened 2 years ago by amedvede.
fedora-infra/ amedvede/toddlers remove_pdc_calls  into  main

tests/plugins/test_unretire_packages.py tests/plugins/test_pdc_unretire_packages.py
file renamed
+85 -209
@@ -1,5 +1,5 @@ 

  """

- Unit tests for `toddler.plugins.pdc_unretire_packages`

+ Unit tests for `toddler.plugins.unretire_packages`

  """

  

  import datetime
@@ -12,16 +12,16 @@ 

  import pytest

  

  from toddlers.exceptions import ValidationError

- import toddlers.plugins.pdc_unretire_packages as pdc_unretire_packages

+ import toddlers.plugins.unretire_packages as unretire_packages

  

  

  class TestAcceptTopic:

      """

-     Test class for `toddler.plugins.pdc_unretire_packages.PDCUnretirePackages.accepts_topic`

+     Test class for `toddler.plugins.unretire_packages.UnretirePackages.accepts_topic`

      method.

      """

  

-     toddler_cls = pdc_unretire_packages.PDCUnretirePackages

+     toddler_cls = unretire_packages.UnretirePackages

  

      def test_accepts_topic_invalid(self, toddler):

          """
@@ -38,18 +38,15 @@ 

          ],

      )

      def test_accepts_topic_valid(self, topic, toddler):

-         """

-         Assert that valid topics are accepted.

-         """

          assert toddler.accepts_topic(topic)

  

  

  class TestProcess:

      """

-     Test class for `toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages.process` method

+     Test class for `toddlers.plugins.unretire_packages.UnretirePackages.process` method

      """

  

-     toddler_cls = pdc_unretire_packages.PDCUnretirePackages

+     toddler_cls = unretire_packages.UnretirePackages

  

      def test_process_invalid_project(self, caplog, toddler):

          """
@@ -64,7 +61,7 @@ 

          msg = IssueNewV1(body=body)

  

          with patch(

-             "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages.process_ticket"

+             "toddlers.plugins.unretire_packages.UnretirePackages.process_ticket"

          ) as mock_process_ticket:

              toddler.process({}, msg)

              mock_process_ticket.assert_not_called()
@@ -81,7 +78,7 @@ 

          caplog.set_level(logging.INFO)

  

          body = {

-             "project": {"fullname": pdc_unretire_packages.PROJECT_NAMESPACE},

+             "project": {"fullname": unretire_packages.PROJECT_NAMESPACE},

              "issue": {

                  "id": 100,

                  "status": "Closed",
@@ -92,7 +89,7 @@ 

          msg = IssueNewV1(body=body)

  

          with patch(

-             "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages.process_ticket"

+             "toddlers.plugins.unretire_packages.UnretirePackages.process_ticket"

          ) as mock_process_ticket:

              toddler.process({}, msg)

  
@@ -109,7 +106,7 @@ 

          caplog.set_level(logging.INFO)

  

          body = {

-             "project": {"fullname": pdc_unretire_packages.PROJECT_NAMESPACE},

+             "project": {"fullname": unretire_packages.PROJECT_NAMESPACE},

              "issue": {

                  "id": 100,

                  "status": "Open",
@@ -120,7 +117,7 @@ 

          msg = IssueNewV1(body=body)

  

          with patch(

-             "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages.process_ticket"

+             "toddlers.plugins.unretire_packages.UnretirePackages.process_ticket"

          ) as mock_process_ticket:

              toddler.process({}, msg)

  
@@ -139,7 +136,7 @@ 

          caplog.set_level(logging.INFO)

  

          body = {

-             "project": {"fullname": pdc_unretire_packages.PROJECT_NAMESPACE},

+             "project": {"fullname": unretire_packages.PROJECT_NAMESPACE},

              "issue": {

                  "id": 100,

                  "status": "Open",
@@ -150,7 +147,7 @@ 

          msg = IssueNewV1(body=body)

  

          with patch(

-             "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages.process_ticket"

+             "toddlers.plugins.unretire_packages.UnretirePackages.process_ticket"

          ) as mock_process_ticket:

              toddler.process({}, msg)

  
@@ -162,12 +159,13 @@ 

              "not a first word in title"

          )

  

+     @patch("toddlers.utils.bodhi.set_bodhi")

      @patch("toddlers.utils.pdc.pdc_client_for_config")

      @patch("toddlers.utils.pagure.set_pagure")

      @patch("toddlers.utils.bugzilla_system.set_bz")

      @patch("koji.ClientSession")

      def test_process_base_exception_appeared(

-         self, mock_koji, mock_bz, mock_pagure, mock_pdc, caplog, toddler

+         self, mock_koji, mock_bz, mock_pagure, mock_pdc, mock_bodhi, caplog, toddler

      ):

          """

          Assert that if base exception appeared, it will be processed correctly.
@@ -179,7 +177,7 @@ 

              "user": {"name": "zlopez"},

          }

          body = {

-             "project": {"fullname": pdc_unretire_packages.PROJECT_NAMESPACE},

+             "project": {"fullname": unretire_packages.PROJECT_NAMESPACE},

              "issue": issue,

          }

          config = {
@@ -193,7 +191,7 @@ 

          mock_pagure.return_value = mock_pagure_io

  

          with patch(

-             "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages.process_ticket"

+             "toddlers.plugins.unretire_packages.UnretirePackages.process_ticket"

          ) as mock_process_ticket:

              mock_process_ticket.side_effect = Exception("test")

              toddler.process(config, msg)
@@ -201,11 +199,14 @@ 

  

          mock_pagure_io.add_comment_to_issue.assert_called_once()

  

+     @patch("toddlers.utils.bodhi.set_bodhi")

      @patch("toddlers.utils.pdc.pdc_client_for_config")

      @patch("toddlers.utils.pagure.set_pagure")

      @patch("toddlers.utils.bugzilla_system.set_bz")

      @patch("koji.ClientSession")

-     def test_process(self, mock_koji, mock_bugzilla, mock_pagure, mock_pdc, toddler):

+     def test_process(

+         self, mock_koji, mock_bugzilla, mock_pagure, mock_pdc, mock_bodhi, toddler

+     ):

          """

          Assert that message toddler will be initialized correctly, if message passes

          initial processing.
@@ -217,7 +218,7 @@ 

              "user": {"name": "zlopez"},

          }

          body = {

-             "project": {"fullname": pdc_unretire_packages.PROJECT_NAMESPACE},

+             "project": {"fullname": unretire_packages.PROJECT_NAMESPACE},

              "issue": issue,

          }

          msg = IssueNewV1(body=body)
@@ -237,7 +238,7 @@ 

          }

  

          with patch(

-             "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages.process_ticket"

+             "toddlers.plugins.unretire_packages.UnretirePackages.process_ticket"

          ) as mock_process_ticket:

              toddler.process(config, msg)

  
@@ -246,11 +247,12 @@ 

          mock_pdc.assert_called_with(config)

          mock_pagure.assert_called_with(config)

          mock_bugzilla.assert_called_with(config)

+         mock_bodhi.assert_called_with(config)

  

  

  class TestProcessTicket:

      """

-     Test class for `toddlers.plugin.pdc_unretire_packages.PDCUnretirePackages.process_ticket`

+     Test class for `toddlers.plugin.unretire_packages.UnretirePackages.process_ticket`

      method.

      """

  
@@ -258,36 +260,31 @@ 

          """

          Initialize toddler

          """

-         self.toddler = pdc_unretire_packages.PDCUnretirePackages()

+         self.toddler = unretire_packages.UnretirePackages()

          self.toddler.temp_dir = Mock()

          self.toddler.git_repo = MagicMock()

          self.toddler.pagure_io = MagicMock()

          self.toddler.koji_session = MagicMock()

+         self.toddler.bodhi = MagicMock()

  

-     @patch("toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._adjust_eol_pdc")

-     @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._unblock_tags_on_koji"

-     )

+     @patch("toddlers.plugins.unretire_packages.UnretirePackages._unblock_tags_on_koji")

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages"

+         "toddlers.plugins.unretire_packages.UnretirePackages"

          "._is_need_to_unblock_tags_on_koji",

          return_value=True,

      )

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._get_tags_to_unblock"

-     )

-     @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages"

+         "toddlers.plugins.unretire_packages.UnretirePackages"

          "._is_package_ready_for_unretirement"

      )

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages."

+         "toddlers.plugins.unretire_packages.UnretirePackages."

          "_get_branches_need_to_unretire"

      )

-     @patch("toddlers.plugins.pdc_unretire_packages.git.clone_repo")

+     @patch("toddlers.plugins.unretire_packages.git.clone_repo")

      @patch("tempfile.TemporaryDirectory")

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._is_url_exist",

+         "toddlers.plugins.unretire_packages.UnretirePackages._is_url_exist",

          return_value=True,

      )

      def test_process_ticket_success(
@@ -297,10 +294,8 @@ 

          mock_clone_repo,

          mock_get_branches,

          mock_is_package_ready,

-         mock_get_tags,

          mock_is_need_to_unblock_koji,

          mock_unblock_tags_koji,

-         mock_adjust_eol_pdc,

          caplog,

      ):

          """
@@ -323,7 +318,8 @@ 

          package_url = "{0}/{1}/{2}.git".format(

              self.toddler.dist_git_base, namespace, repo

          )

-         tags_to_unblock = ["rawhide"]

+         tags_to_unblock = ["rawhide", "f39", "f40", "f32", "f31"]

+         current_releases = ["rawhide", "f39", "f40"]

          revert_message = f"Unretirement request: {issue['full_url']}"

  

          mock_is_url_exist.return_value = True
@@ -332,25 +328,23 @@ 

          self.toddler.git_repo.does_branch_exist.return_value = True

          self.toddler.git_repo.does_branch_contains_file.return_value = True

          mock_is_package_ready.return_value = True

-         # TODO learn weather i need it

-         mock_get_tags.return_value = tags_to_unblock

          mock_is_need_to_unblock_koji.return_value = True

          self.toddler.pagure_io.is_project_orphaned.return_value = True

+         self.toddler.bodhi.get_active_branches.return_value = current_releases

  

          self.toddler.process_ticket(issue)

  

          mock_is_url_exist.assert_called_once_with(package_url)

          mock_get_branches.assert_called_once_with(issue_body=issue["content"])

          mock_is_package_ready.assert_called_once_with(

-             issue_id=issue["id"], issue_body=issue["content"], branches=tags_to_unblock

+             issue_id=issue["id"], issue_body=issue["content"], branches=current_releases

          )

-         mock_get_tags.assert_called_once_with(issue_body=issue["content"])

          self.toddler.git_repo.revert_last_commit.assert_called_with(

-             message=revert_message, branch="rawhide"

+             message=revert_message, branch="f40"

          )

-         mock_is_need_to_unblock_koji.assert_called_once_with(tags_to_unblock, repo)

+         mock_is_need_to_unblock_koji.assert_called_once_with(current_releases, repo)

          mock_unblock_tags_koji.assert_called_once_with(

-             issue["id"], tags_to_unblock, repo

+             issue["id"], current_releases, repo

          )

          self.toddler.pagure_io.is_project_orphaned.assert_called_once_with(

              namespace=namespace, repo=repo
@@ -358,7 +352,6 @@ 

          self.toddler.pagure_io.assign_maintainer_to_project.assert_called_with(

              namespace=namespace, repo=repo, maintainer_fas=issue["user"]["name"]

          )

-         mock_adjust_eol_pdc.assert_called_once_with(namespace, repo, tags_to_unblock)

          assert caplog.records[-1].message == "everything was alright!"

  

      # TODO mock _get_branches_need_to_unretire method
@@ -384,7 +377,7 @@ 

          assert caplog.records[-1].message == msg

          self.toddler.pagure_io.close_issue.assert_called_once_with(

              issue["id"],

-             namespace=pdc_unretire_packages.PROJECT_NAMESPACE,

+             namespace=unretire_packages.PROJECT_NAMESPACE,

              message=msg,

              reason=reason,

          )
@@ -403,14 +396,14 @@ 

          msg = (

              "Unretire can only apply to rpm packages, please add `{0}`"

              " prefix before the package name"

-         ).format(pdc_unretire_packages.RPM_PREFIX)

+         ).format(unretire_packages.RPM_PREFIX)

          reason = "Invalid"

  

          self.toddler.process_ticket(issue)

          assert caplog.records[-1].message == msg

          self.toddler.pagure_io.close_issue.assert_called_once_with(

              issue["id"],

-             namespace=pdc_unretire_packages.PROJECT_NAMESPACE,

+             namespace=unretire_packages.PROJECT_NAMESPACE,

              message=msg,

              reason=reason,

          )
@@ -436,13 +429,13 @@ 

          assert caplog.records[-1].message == msg

          self.toddler.pagure_io.close_issue.assert_called_once_with(

              issue["id"],

-             namespace=pdc_unretire_packages.PROJECT_NAMESPACE,

+             namespace=unretire_packages.PROJECT_NAMESPACE,

              message=msg,

              reason=reason,

          )

  

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._is_url_exist",

+         "toddlers.plugins.unretire_packages.UnretirePackages._is_url_exist",

          return_value=False,

      )

      def test_process_ticket_package_url_doesnt_exist(self, mock_is_url_exist, caplog):
@@ -465,15 +458,15 @@ 

          assert caplog.records[-1].message == msg

          self.toddler.pagure_io.close_issue.assert_called_once_with(

              issue["id"],

-             namespace=pdc_unretire_packages.PROJECT_NAMESPACE,

+             namespace=unretire_packages.PROJECT_NAMESPACE,

              message=msg,

              reason=reason,

          )

  

-     @patch("toddlers.plugins.pdc_unretire_packages.git.clone_repo")

+     @patch("toddlers.plugins.unretire_packages.git.clone_repo")

      @patch("tempfile.TemporaryDirectory")

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._is_url_exist",

+         "toddlers.plugins.unretire_packages.UnretirePackages._is_url_exist",

          return_value=True,

      )

      def test_process_ticket_git_error_happened(
@@ -498,28 +491,25 @@ 

          assert caplog.records[-1].message == msg

          self.toddler.pagure_io.close_issue.assert_called_once_with(

              issue["id"],

-             namespace=pdc_unretire_packages.PROJECT_NAMESPACE,

+             namespace=unretire_packages.PROJECT_NAMESPACE,

              message=msg,

              reason=reason,

          )

  

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._get_tags_to_unblock"

-     )

-     @patch(

-         "toddlers.plugins.pdc_unretire_packages."

-         "PDCUnretirePackages._is_package_ready_for_unretirement",

+         "toddlers.plugins.unretire_packages."

+         "UnretirePackages._is_package_ready_for_unretirement",

          return_value=False,

      )

      @patch(

-         "toddlers.plugins.pdc_unretire_packages."

-         "PDCUnretirePackages._get_branches_need_to_unretire",

+         "toddlers.plugins.unretire_packages."

+         "UnretirePackages._get_branches_need_to_unretire",

          return_value=["rawhide"],

      )

-     @patch("toddlers.plugins.pdc_unretire_packages.git.clone_repo")

+     @patch("toddlers.plugins.unretire_packages.git.clone_repo")

      @patch("tempfile.TemporaryDirectory")

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._is_url_exist",

+         "toddlers.plugins.unretire_packages.UnretirePackages._is_url_exist",

          return_value=True,

      )

      def test_process_ticket_package_is_not_ready_for_unretirement(
@@ -529,7 +519,6 @@ 

          mock_clone_repo,

          mock_get_branches,

          mock_is_package_ready,

-         mock_get_tags,

          caplog,

      ):

          issue = {
@@ -543,13 +532,13 @@ 

          }

  

          self.toddler.process_ticket(issue)

-         mock_get_tags.assert_not_called()

+         self.toddler.git_repo.revert_last_commit.assert_not_called()

  

  

  # TODO: create class for _get_branches_need_to_unretire method

  class TestIsPackageReadyForUnretirement:

      """

-     Test class for `toddlers.plugin.pdc_unretire_packages.PDCUnreturePackages

+     Test class for `toddlers.plugin.unretire_packages.UnreturePackages

      ._is_package_ready_for_unretirement` method.

      """

  
@@ -557,15 +546,15 @@ 

          """

          Initialize toddler

          """

-         self.toddler = pdc_unretire_packages.PDCUnretirePackages()

+         self.toddler = unretire_packages.UnretirePackages()

          self.toddler.pagure_io = Mock()

  

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages."

+         "toddlers.plugins.unretire_packages.UnretirePackages."

          "_verify_bugzilla_need_to_be_checked"

      )

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages."

+         "toddlers.plugins.unretire_packages.UnretirePackages."

          "_verify_package_not_retired_for_reason"

      )

      def test_is_package_ready_for_unretirement_success(
@@ -599,7 +588,7 @@ 

          err_msg = "Package was retired for a reason: legal of license issue."

  

          with patch(

-             "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages"

+             "toddlers.plugins.unretire_packages.UnretirePackages"

              "._verify_package_not_retired_for_reason",

              side_effect=ValidationError(err_msg),

          ):
@@ -611,13 +600,13 @@ 

              )

              self.toddler.pagure_io.close_issue.assert_called_with(

                  issue_id=issue_id,

-                 namespace=pdc_unretire_packages.PROJECT_NAMESPACE,

+                 namespace=unretire_packages.PROJECT_NAMESPACE,

                  message=err_msg,

                  reason="Invalid",

              )

  

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages."

+         "toddlers.plugins.unretire_packages.UnretirePackages."

          "_verify_package_not_retired_for_reason"

      )

      def test_is_package_ready_for_unretirement_date_issue(self, verify_reason_mock):
@@ -630,7 +619,7 @@ 

          err_msg = "Couldn't get a date of the retire commit."

  

          with patch(

-             "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages"

+             "toddlers.plugins.unretire_packages.UnretirePackages"

              "._verify_bugzilla_need_to_be_checked",

              side_effect=ValidationError(err_msg),

          ):
@@ -642,7 +631,7 @@ 

              )

              self.toddler.pagure_io.close_issue.assert_called_with(

                  issue_id=issue_id,

-                 namespace=pdc_unretire_packages.PROJECT_NAMESPACE,

+                 namespace=unretire_packages.PROJECT_NAMESPACE,

                  message=err_msg,

                  reason="Invalid",

              )
@@ -650,7 +639,7 @@ 

  

  class TestVerifyPackageNotRetiredForReason:

      """

-     Test class for `toddlers.plugin.pdc_unretire_packages.PDCUnreturePackages

+     Test class for `toddlers.plugin.unretire_packages.UnreturePackages

      ._verify_package_not_retired_for_reason` method.

      """

  
@@ -658,7 +647,7 @@ 

          """

          Initialize toddler.

          """

-         self.toddler = pdc_unretire_packages.PDCUnretirePackages()

+         self.toddler = unretire_packages.UnretirePackages()

          self.toddler.git_repo = Mock()

  

      def test_verify_package_not_retired_for_reason_success(self):
@@ -687,7 +676,7 @@ 

  

  class TestVerifyBugzillaNeedToBeChecked:

      """

-     Test class for `toddlers.plugin.pdc_unretire_packages.PDCUnreturePackages

+     Test class for `toddlers.plugin.unretire_packages.UnreturePackages

      ._verify_bugzilla_need_to_be_checked` method.

      """

  
@@ -695,11 +684,11 @@ 

          """

          Initialize toddler.

          """

-         self.toddler = pdc_unretire_packages.PDCUnretirePackages()

+         self.toddler = unretire_packages.UnretirePackages()

          self.toddler.git_repo = Mock()

  

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._verify_bugzilla_ticket"

+         "toddlers.plugins.unretire_packages.UnretirePackages._verify_bugzilla_ticket"

      )

      def test_verify_bugzilla_need_to_be_checked_success(self, mock_verify_bz):

          """
@@ -718,7 +707,7 @@ 

          mock_verify_bz.assert_not_called()

  

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._verify_bugzilla_ticket"

+         "toddlers.plugins.unretire_packages.UnretirePackages._verify_bugzilla_ticket"

      )

      def test_verify_bugzilla_need_to_be_checked_date_is_none(self, mock_verify_bz):

          """
@@ -738,7 +727,7 @@ 

          mock_verify_bz.assert_not_called()

  

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages._verify_bugzilla_ticket"

+         "toddlers.plugins.unretire_packages.UnretirePackages._verify_bugzilla_ticket"

      )

      def test_verify_bugzilla_need_to_be_checked_need_to_check_bugzilla(

          self, mock_verify_bz
@@ -757,7 +746,7 @@ 

  

  class TestVerifyBugzillaTicket:

      """

-     Test class for `toddlers.plugin.pdc_unretire_packages.PDCUnreturePackages

+     Test class for `toddlers.plugin.unretire_packages.UnreturePackages

      ._verify_bugzilla_ticket` method.

      """

  
@@ -765,9 +754,9 @@ 

          """

          Initialize toddler.

          """

-         self.toddler = pdc_unretire_packages.PDCUnretirePackages()

+         self.toddler = unretire_packages.UnretirePackages()

  

-     @patch("toddlers.plugins.pdc_unretire_packages.bugzilla_system.get_bug")

+     @patch("toddlers.plugins.unretire_packages.bugzilla_system.get_bug")

      def test_verify_bugzilla_ticket_success(self, get_bug_mock):

          """

          Assert that method process correctly.
@@ -796,7 +785,7 @@ 

              self.toddler._verify_bugzilla_ticket(issue_body)

  

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.bugzilla_system.get_bug",

+         "toddlers.plugins.unretire_packages.bugzilla_system.get_bug",

          side_effect=Exception("bug error"),

      )

      def test_verify_bugzilla_ticket_get_bug_error(self, mock_get_bug):
@@ -813,7 +802,7 @@ 

              self.toddler._verify_bugzilla_ticket(issue_body)

  

      @patch(

-         "toddlers.plugins.pdc_unretire_packages.bugzilla_system.get_bug",

+         "toddlers.plugins.unretire_packages.bugzilla_system.get_bug",

          return_value=None,

      )

      def test_verify_bugzilla_ticket_bug_not_found(self, get_bug_mock):
@@ -826,7 +815,7 @@ 

          with pytest.raises(ValidationError, match=err_msg):

              self.toddler._verify_bugzilla_ticket(issue_body)

  

-     @patch("toddlers.plugins.pdc_unretire_packages.bugzilla_system.get_bug")

+     @patch("toddlers.plugins.unretire_packages.bugzilla_system.get_bug")

      def test_verify_bugzilla_ticket_bug_product_is_not_fedora(self, mock_get_bug):

          """

          Assert that method will raise error if the bug product is not `Fedora`.
@@ -844,7 +833,7 @@ 

          with pytest.raises(ValidationError, match=err_msg):

              self.toddler._verify_bugzilla_ticket(issue_body)

  

-     @patch("toddlers.plugins.pdc_unretire_packages.bugzilla_system.get_bug")

+     @patch("toddlers.plugins.unretire_packages.bugzilla_system.get_bug")

      def test_verify_bugzilla_ticket_bug_does_not_have_required_flag(self, get_bug_mock):

          """

          Assert that method will raise Exception if bug doesn't have required flag.
@@ -862,7 +851,7 @@ 

          with pytest.raises(ValidationError, match=err_msg):

              self.toddler._verify_bugzilla_ticket(issue_body)

  

-     @patch("toddlers.plugins.pdc_unretire_packages.bugzilla_system.get_bug")

+     @patch("toddlers.plugins.unretire_packages.bugzilla_system.get_bug")

      def test_verify_bugzilla_ticket_wrong_flag_status(self, get_bug_mock):

          """

          Assert that method will raise Exception if flag has wrong status.
@@ -885,15 +874,15 @@ 

  

  class TestBranchesNeedToUnretire:

      """

-     Test class for `toddlers.plugin.pdc_unretire_packages.

-     PDCUnreturePackages._get_branches_need_to_unretire` method.

+     Test class for `toddlers.plugin.unretire_packages.

+     UnreturePackages._get_branches_need_to_unretire` method.

      """

  

      def setup_method(self):

          """

          Initialize toddler.

          """

-         self.toddler = pdc_unretire_packages.PDCUnretirePackages()

+         self.toddler = unretire_packages.UnretirePackages()

  

      def test_get_branches_need_to_unretire_no_branch_names_in_issue_body(self):

          """
@@ -912,122 +901,9 @@ 

          assert self.toddler._get_branches_need_to_unretire(issue_body) == result

  

  

- class TestGetTagsToUnblock:

-     """

-     Test class for `toddlers.plugin.pdc_unretire_packages.PDCUnreturePackages._get_tags_to_unblock`

-     method.

-     """

- 

-     def setup_method(self):

-         """

-         Initialize toddler.

-         """

-         self.toddler = pdc_unretire_packages.PDCUnretirePackages()

- 

-     @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages"

-         "._get_last_fedora_version_branch_name",

-         return_value="f38",

-     )

-     def test_get_tags_to_unblock_no_tags_in_issue_body(self, get_last_branch_mock):

-         """

-         Assert that get tags to unblock process correctly if the last branch is rawhide

-         """

-         issue_body = "some body"

- 

-         assert self.toddler._get_tags_to_unblock(issue_body) == ["f38"]

- 

-     @patch(

-         "toddlers.plugins.pdc_unretire_packages.PDCUnretirePackages"

-         "._get_last_fedora_version_branch_name",

-         return_value="f38",

-     )

-     def test_get_tags_to_unblock_there_are_tags_in_issue_body(

-         self, get_last_branch_mock

-     ):

-         """

-         Assert that get tags to unblock process correctly if there are some tags in issue body

-         """

-         issue_body = "f35, f36, f37, rawhide"

- 

-         assert self.toddler._get_tags_to_unblock(issue_body) == [

-             "f35",

-             "f36",

-             "f37",

-             "rawhide",

-             "f38",

-         ]

- 

- 

- class TestGetLastFedoraVersionBranchName:

-     """

-     Test class for `toddlers.plugin.pdc_unretire_packages.PDCUnreturePackages

-     ._get_last_fedora_version_branch_name` method.

-     """

- 

-     def setup_method(self):

-         """

-         Initialize toddler.

-         """

-         self.toddler = pdc_unretire_packages.PDCUnretirePackages()

- 

-     @patch("requests.get")

-     def test_get_last_fedora_version_branch_name_no_rawhide_branch(

-         self, get_request_mock

-     ):

-         """

-         Assert error during processing if func can't find the rawhide branch on bodhi.

-         """

-         response = Mock()

-         response.json.return_value = {"total": 2, "releases": []}

-         get_request_mock.return_value = response

-         err_msg = "Not able to find a rawhide branch."

- 

-         with pytest.raises(ValidationError, match=err_msg):

-             self.toddler._get_last_fedora_version_branch_name()

- 

-     @patch("requests.get")

-     def test_get_last_fedora_version_branch_name_too_many_rawhide_branches(

-         self, get_request_mock

-     ):

-         """

-         Assert error during processing if func found too many rawhide branches.

-         """

-         response = Mock()

-         response.json.return_value = {

-             "total": 2,

-             "releases": [

-                 {"dist_tag": "f37", "state": "pending", "branch": "rawhide"},

-                 {"dist_tag": "f38", "state": "pending", "branch": "rawhide"},

-             ],

-         }

-         get_request_mock.return_value = response

-         err_msg = "Not able to find a rawhide branch."

- 

-         with pytest.raises(ValidationError, match=err_msg):

-             self.toddler._get_last_fedora_version_branch_name()

- 

-     @patch("requests.get")

-     def test_get_last_fedora_version_branch_name(self, get_request_mock):

-         """

-         Assert that get last fedora version branch process correctly.

-         """

-         response = Mock()

-         response.json.return_value = {

-             "total": 2,

-             "releases": [

-                 {"dist_tag": "f37", "state": "pending", "branch": "pupipup"},

-                 {"dist_tag": "f38", "state": "pending", "branch": "rawhide"},

-             ],

-         }

-         get_request_mock.return_value = response

- 

-         assert self.toddler._get_last_fedora_version_branch_name() == "f38"

- 

- 

  class TestIsNeedToUnblockTagsOnKoji:

      """

-     Test class for `toddlers.plugin.pdc_unretire_packages.PDCUnreturePackages

+     Test class for `toddlers.plugin.unretire_packages.UnreturePackages

      ._is_need_to_unblock_tags_on_koji` method.

      """

  
@@ -1035,7 +911,7 @@ 

          """

          Initialize toddler.

          """

-         self.toddler = pdc_unretire_packages.PDCUnretirePackages()

+         self.toddler = unretire_packages.UnretirePackages()

          self.toddler.koji_session = Mock()

  

      def test_is_need_to_unblock_tags_on_koji_package_does_not_have_tags(self):

toddlers/plugins/unretire_packages.py toddlers/plugins/pdc_unretire_packages.py
file renamed
+30 -127
@@ -24,7 +24,7 @@ 

  

  from toddlers.base import ToddlerBase

  from toddlers.exceptions import ValidationError

- from toddlers.utils import bugzilla_system, git, pagure, pdc

+ from toddlers.utils import bodhi, bugzilla_system, git, pagure, pdc
zlopez commented a year ago

pdc import should be removed

  

  # Regex for bugzilla url

  BUGZILLA_URL_REGEX = r"https:\/\/bugzilla(.+)redhat(.+)(id=\d{7})"
@@ -53,7 +53,7 @@ 

  _log = logging.getLogger(__name__)

  

  

- class PDCUnretirePackages(ToddlerBase):

+ class UnretirePackages(ToddlerBase):

      """

      Listen for new tickets in https://pagure.io/releng/issues

      and process then, either by unretiring a package or rejecting the ticket
@@ -78,6 +78,9 @@ 

      # Koji session object

      koji_session: koji.ClientSession

  

+     def __init__(self):

+         self.bodhi = None

+ 

      def accepts_topic(self, topic: str) -> bool:

          """

          Returns a boolean whether this toddler is interested in messages
@@ -143,6 +146,7 @@ 

  

          _log.info("Setting up connection to PDC")

          self.pdc_client = pdc.pdc_client_for_config(config)

+ 

          _log.info("Setting up connection to Pagure")

          self.pagure_io = pagure.set_pagure(config)

  
@@ -152,6 +156,9 @@ 

          _log.info("Setting up session with Koji")

          self.koji_session = koji.ClientSession(KOJIHUB_URL)

  

+         _log.info("Setting up bodhi session")

+         self.bodhi = bodhi.set_bodhi(config)

+ 

          try:

              self.process_ticket(issue)

          except BaseException:
@@ -274,43 +281,54 @@ 

                  issue_body=issue_body

              )

  

+             _log.info("Getting active branches")

+             active_branches = self.bodhi.get_active_branches()

+ 

+             filtered_branches = [

+                 branch

+                 for branch in branches_need_to_unretire

+                 if branch in active_branches

+             ]

+ 

              _log.info("Verifying that branches are actually exists.")

              valid_branches_that_need_to_be_unretired = []

-             for branch in branches_need_to_unretire:

+             for branch in filtered_branches:

                  if self.git_repo.does_branch_exist(branch):

                      valid_branches_that_need_to_be_unretired.append(branch)

  

              _log.info(

                  "Verifying that branches are actually retired (have a `dead.package` file)."

              )

-             retired_branches_that_need_to_unretired = []

+             final_list_of_branches = []

              deadpackage_file_path = "dead.package"

              for branch in valid_branches_that_need_to_be_unretired:

                  if self.git_repo.does_branch_contains_file(

                      branch, deadpackage_file_path

                  ):

-                     retired_branches_that_need_to_unretired.append(branch)

+                     final_list_of_branches.append(branch)

  

              _log.info("Verifying if package is ready for unretirement.")

              if not self._is_package_ready_for_unretirement(

                  issue_id=issue_id,

                  issue_body=issue_body,

-                 branches=retired_branches_that_need_to_unretired,

+                 branches=final_list_of_branches,

              ):

                  return

  

-             tags_to_unblock = self._get_tags_to_unblock(issue_body=issue_body)

- 

              _log.info("Reverting retire commit")

              revert_commit_message = "Unretirement request: {0}".format(issue_url)

-             for branch in retired_branches_that_need_to_unretired:

+             for branch in final_list_of_branches:

                  self.git_repo.revert_last_commit(

                      message=revert_commit_message, branch=branch

                  )

  

              _log.info("Unblocking tags on Koji.")

-             if self._is_need_to_unblock_tags_on_koji(tags_to_unblock, package_name):

-                 self._unblock_tags_on_koji(issue_id, tags_to_unblock, package_name)

+             if self._is_need_to_unblock_tags_on_koji(

+                 final_list_of_branches, package_name

+             ):

+                 self._unblock_tags_on_koji(

+                     issue_id, final_list_of_branches, package_name

+                 )

  

              _log.info("Verifying package is not orphan.")

              if self.pagure_io.is_project_orphaned(
@@ -320,9 +338,6 @@ 

                      namespace=namespace, repo=package_name, maintainer_fas=issue_opener

                  )

  

-             _log.info("Adjusting eol on PDC.")

-             self._adjust_eol_pdc(namespace, package_name, tags_to_unblock)

- 

          _log.info("everything was alright!")

          return

  
@@ -476,50 +491,6 @@ 

  

          return branches

  

-     def _get_tags_to_unblock(self, issue_body: str) -> list:

-         """

-         Get tags requester would like to unblock.

- 

-         :arg issue_body: A str value with text of issue body

- 

-         :returns: A list with tags requester would like to unblock

-         """

-         last_branch_name = self._get_last_fedora_version_branch_name()

-         tags = re.findall(BRANCHES_REGEX, issue_body)

-         if len(tags) == 0:

-             tags = [last_branch_name]

- 

-         if last_branch_name not in tags:

-             tags.append(last_branch_name)

- 

-         return tags

- 

-     @staticmethod

-     def _get_last_fedora_version_branch_name() -> Optional[str]:

-         """

-         Get last fedora version branch name.

- 

-         :returns: String with name

-         """

-         bodhi_url = "https://bodhi.fedoraproject.org/releases/"

-         response = requests.get(url=bodhi_url)

-         count_of_version_on_bodhi = int(response.json()["total"])

- 

-         params = {"rows_per_page": count_of_version_on_bodhi}

-         response = requests.get(url=bodhi_url, params=params)

- 

-         versions = response.json()["releases"]

-         last_version = [

-             version

-             for version in versions

-             if version["state"] == "pending" and version["branch"] == "rawhide"

-         ]

-         if len(last_version) != 1:

-             raise ValidationError("Not able to find a rawhide branch.")

- 

-         last_version_name = str(last_version[0]["dist_tag"])

-         return last_version_name

- 

      def _is_need_to_unblock_tags_on_koji(

          self, tags_to_unblock: list, repo: str

      ) -> bool:
@@ -575,74 +546,6 @@ 

                      comment=comment,

                  )

  

-     def _adjust_eol_pdc(self, namespace, repo, branches: list):

-         """

-         Adjusting eol of requested branches.

- 

-         Params:

-             namespace: A string of repo namespace

-             repo: A string of repo name

-             branches: A list of str of branches requester would like to unretire.

-         """

-         global_component = repo

-         component_type = self._namespace_to_pdc(namespace)

-         branches_with_eol = self._get_proper_eol_for_branches(branches)

- 

-         for key, value in branches_with_eol.items():

-             branch = key

-             eol = value

-             pdc.adjust_eol(

-                 global_component=global_component,

-                 component_type=component_type,

-                 branch=branch,

-                 eol=eol,

-             )

- 

-     @staticmethod

-     def _namespace_to_pdc(namespace):

-         """Internal method to translate a dist-git namespace to a PDC

-         component type."""

-         namespace_to_pdc = {

-             "rpms": "rpm",

-             "modules": "module",

-             "container": "container",

-         }

-         if namespace not in namespace_to_pdc:

-             raise ValueError('The namespace "{0}" is not supported'.format(namespace))

-         else:

-             return namespace_to_pdc[namespace]

- 

-     def _get_proper_eol_for_branches(self, tags_to_unblock: list) -> dict:

-         """

-         Get proper eol date for each branch and create the dict with it.

- 

-         :arg tags_to_unblock: Tags that requester would like to unblock.

- 

-         :returns: Dictionary with key as branch name and value as eol.

-         """

-         last_branch = self._get_last_fedora_version_branch_name()

- 

-         bodhi_endpoint = "https://bodhi.fedoraproject.org/releases/"

-         response = requests.get(url=bodhi_endpoint)

-         count_of_version_on_bodhi = response.json()["total"]

- 

-         params = {"rows_per_page": count_of_version_on_bodhi}

-         response = requests.get(url=bodhi_endpoint, params=params)

- 

-         releases = response.json()["releases"]

-         branches = {}

- 

-         for release in releases:

-             tag = release["dist_tag"]

-             eol = release["eol"]

-             if tag in tags_to_unblock:

-                 if tag == last_branch:

-                     branches["rawhide"] = "2222-01-01"

-                 else:

-                     branches[tag] = eol

- 

-         return branches

- 

      @staticmethod

      def _is_url_exist(url: str) -> bool:

          """
@@ -734,7 +637,7 @@ 

      message = IssueNewV1(body=body)

      _log.debug("Message prepared: {}".format(message.body))

  

-     PDCUnretirePackages().process(

+     UnretirePackages().process(

          config=parsed_config,

          message=message,

      )

Removed all parts of code that are used to make requests to PDC.

Signed-off-by: amedvede amedvede@redhat.com

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci
https://fedora.softwarefactory-project.io/zuul/buildset/5b84f668ac844a4f8b0e1be199f29d13

1 new commit added

  • fix: renamed and tests fixed
2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci
https://fedora.softwarefactory-project.io/zuul/buildset/b70c046b71d44de787d0e04dbe19d9ea

1 new commit added

  • feat: adding confirmation from bodhi about active branches and addapted tests for it
2 years ago

rebased onto 1bd500e

2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci
https://fedora.softwarefactory-project.io/zuul/buildset/c11150fdc1cb4f1bb4827560188be041

1 new commit added

  • feat: removed useless methods
2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci
https://fedora.softwarefactory-project.io/zuul/buildset/88b5d8f33ba34538a9819b608aa1a1da

1 new commit added

  • test: tests addapted to the changed code
2 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci
https://fedora.softwarefactory-project.io/zuul/buildset/efe47f7032414321839c575c44e9f427

1 new commit added

  • format: format fixing
2 years ago

Build succeeded.
https://fedora.softwarefactory-project.io/zuul/buildset/d2af2e0537c746c1a11ff5baa5b52493

rebased onto 764503f

2 years ago

Build succeeded.
https://fedora.softwarefactory-project.io/zuul/buildset/8602e7a1c38b486aba4ddaf9f03a1c97

This would need to be reworked as I deleted the original pdc_unretire_packages in https://pagure.io/fedora-infra/toddlers/pull-request/276

Pull-Request has been closed by amedvede

a year ago