Пример #1
0
    def update_changelog(self, new_version):
        self.git.fetch_tags()
        self.git.checkout(new_version)
        # FIXME: make the file name configurable
        p = os.path.join(self.git.repo_path, "CHANGELOG.md")
        try:
            with open(p, "r") as fd:
                changelog_content = fd.read()
        except FileNotFoundError:
            logger.info("CHANGELOG.md not found")
            return
        finally:
            self.git.checkout('master')

        # get latest release
        changelog = parse_changelog(new_version, changelog_content)
        url = (f"{self.API3_ENDPOINT}repos/{self.conf.repository_owner}/"
               f"{self.conf.repository_name}/releases/latest")
        latest_release = self.do_request(method="GET",
                                         url=url,
                                         use_github_auth=True).json()

        # check if the changelog needs updating
        if latest_release["body"] == changelog:
            return

        url = (f"{self.API3_ENDPOINT}repos/{self.conf.repository_owner}/"
               f"{self.conf.repository_name}/releases/{latest_release['id']}")
        response = self.do_request(method="POST",
                                   url=url,
                                   json_payload={'body': changelog},
                                   use_github_auth=True)
        if response.status_code != 200:
            self.logger.error((f"Something went wrong during changelog "
                               f"update for {new_version}:\n{response.text}"))
Пример #2
0
    def get_changelog(self, new_version):
        """
        Get changelog for new version

        :param new_version: version number
        :return:
        """
        self.git.fetch_tags()
        self.git.checkout(f'{new_version}-release')
        self.git.pull_branch(f'{new_version}-release')
        p = os.path.join(self.git.repo_path, "CHANGELOG.md")
        try:
            with open(p, "r") as fd:
                changelog_content = fd.read()
        except FileNotFoundError:
            logger.info("CHANGELOG.md not found")
            return ''
        finally:
            self.git.checkout('master')

        changelog = parse_changelog(new_version, changelog_content)
        latest_release = self.project.get_latest_release()

        # check if the changelog needs updating
        if latest_release.body == changelog:
            return ''

        return changelog
Пример #3
0
 def update_changelog(self, previous_release, new_version, fs_path, id_):
     # parse changelog and update the release with it
     changelog = parse_changelog(previous_release, new_version, fs_path)
     url = (f"{self.API3_ENDPOINT}repos/{self.conf.repository_owner}/"
            f"{self.conf.repository_name}/releases/{id_!s}")
     response = requests.post(url=url,
                              json={'body': changelog},
                              headers=self.headers)
     if response.status_code != 200:
         self.logger.error((f"Something went wrong during changelog "
                            f"update for {new_version}:\n{response.text}"))
Пример #4
0
 def test_no_changes(self, changelog_with_no_changes):
     changelog = parse_changelog("0.0.2", changelog_with_no_changes)
     assert changelog == "# 0.0.2"
Пример #5
0
 def test_normal_use_case(self, changelog_with_two_entries):
     changelog = parse_changelog("0.0.2", changelog_with_two_entries)
     assert changelog == "# 0.0.2\n* New entry\n* Fixes"
Пример #6
0
 def test_wrong_version(self, changelog_with_one_entry):
     changelog = parse_changelog("0.0.2", changelog_with_one_entry)
     assert changelog == "No changelog provided"
Пример #7
0
 def test_one_entry_changelog(self, changelog_with_one_entry):
     changelog = parse_changelog("0.0.1", changelog_with_one_entry)
     assert changelog == "# 0.0.1\n* Test entry\n* Another test entry\n"
Пример #8
0
 def test_empty_changelog(self, empty_changelog):
     changelog = parse_changelog("2.0.0", empty_changelog)
     assert changelog == "No changelog provided"
Пример #9
0
 def test_no_changelog(self):
     changelog = parse_changelog("2.0.0", "nochangelogpath")
     assert changelog == "No changelog provided"
Пример #10
0
 def test_no_changes(self, changelog_with_no_changes):
     changelog = parse_changelog("0.0.1", "0.0.2",
                                 changelog_with_no_changes)
     assert changelog == "No changelog provided"