Esempio n. 1
0
 def _generate_initial_version(self) -> None:
     initial_version = Version().create_from_version_parts(
         *self.__setup_parser.get_current_version_parts())
     self.history.add_version(version=initial_version)
     self.history.save_history()
     self.git_history.add_initial_commit(
         version=initial_version.get_version())
Esempio n. 2
0
    def test_update_FeatureRemoved_MinorDecreased(self):
        removed_commits = self.create_commits(
            ids=[b"22222222222222222222"], messages=["feat: commit message"])

        self.assert_version_update(
            current_version=Version().create_from_str_version("0.1.0"),
            added_commits=[],
            removed_commits=removed_commits,
            expected_version=Version().create_from_str_version("0.0.0"),
        )
Esempio n. 3
0
    def test_update_FixAndRefactorAdded_PatchIncreasedByTwo(self):
        added_commits = self.create_commits(
            ids=[b"33333333333333333333", b"44444444444444444444"],
            messages=["fix: Temporal fix", "refactor: Code Refactor"],
        )

        self.assert_version_update(
            current_version=Version().create_from_str_version("0.1.0"),
            added_commits=added_commits,
            removed_commits=[],
            expected_version=Version().create_from_str_version("0.1.2"),
        )
Esempio n. 4
0
    def test_update_ChangesInHistory_VersionUpdated(self):
        added_commits = self.create_commits(ids=[b"33333333333333333333"],
                                            messages=["fix: Temporal fix"])
        removed_commits = self.create_commits(
            ids=[b"22222222222222222222"], messages=["feat: commit message"])

        self.assert_version_update(
            current_version=Version().create_from_str_version("0.1.0"),
            added_commits=added_commits,
            removed_commits=removed_commits,
            expected_version=Version().create_from_str_version("0.0.1"),
        )
Esempio n. 5
0
    def test_update_FeatureAdded_MinorIncreased(self):
        added_commits = self.create_commits(
            ids=[b"11111111111111111111", b"22222222222222222222"],
            messages=["Initial commit", "feat: commit message"],
        )

        self.assert_version_update(
            current_version=Version().create_from_str_version("0.0.0"),
            added_commits=added_commits,
            removed_commits=[],
            expected_version=Version().create_from_str_version("0.1.0"),
        )
Esempio n. 6
0
    def test_update_AmendWithSameMessage_NoChangesInVersion(self):
        added_commits = self.create_commits(
            ids=[b"33333333333333333333"],
            messages=["feat: commit message updated"])
        removed_commits = self.create_commits(
            ids=[b"22222222222222222222"], messages=["feat: commit message"])

        self.assert_version_update(
            current_version=Version().create_from_str_version("0.1.0"),
            added_commits=added_commits,
            removed_commits=removed_commits,
            expected_version=Version().create_from_str_version("0.1.0"),
        )
Esempio n. 7
0
    def _get_previous_version(self) -> None:
        previous_version = self.history.get_last_version()
        if previous_version is not None:
            return copy.deepcopy(previous_version)

        return Version().create_from_version_parts(
            *self.__setup_parser.get_current_version_parts())
Esempio n. 8
0
    def assert_version_update(
        current_version: Version,
        added_commits: List[Commit],
        removed_commits: List[Commit],
        expected_version: Version,
    ):
        git_history = GitHistory()
        history = History()
        version_parser = MagicMock()

        semantic_versioning = SemanticVersioning(git_history=git_history,
                                                 history=history)
        semantic_versioning.version = current_version

        # act
        semantic_versioning.update_version(added_commits=added_commits,
                                           removed_commits=removed_commits)

        # assert
        assert version_parser.persist_current_version.called_once_with(
            version=expected_version.get_version())
Esempio n. 9
0
    def parse_version_from_commit(cls, commit: Commit) -> Version:
        version_match = re.search(r"(.*)([0-9]\.[0-9]\.[0-9])(.*)",
                                  commit.message)

        if version_match is not None and version_match.lastindex == 3:
            return Version().create_from_str_version(version_match[2])
Esempio n. 10
0
    def assert_version_update(
        cls,
        current_version: str,
        git_commits: List[str],
        git_commits_messages: List[str],
        pyhist_commits: List[str],
        pyhist_commits_messages: List[str],
        expected_version: str,
    ):

        git_history = GitHistory()
        git_history.git_commits = cls.build_commits(
            commits=git_commits, messages=git_commits_messages)

        history = History()
        history.pyhist_items = [
            PyHistItem(commit=commit, version=None, is_version=False)
            for commit in cls.build_commits(commits=pyhist_commits,
                                            messages=pyhist_commits_messages)
        ]
        if current_version is not None:
            history.pyhist_items.insert(
                0,
                PyHistItem(
                    commit=None,
                    version=Version().create_from_str_version(current_version),
                    is_version=False,
                ),
            )

        setup_parser = SetupParser()
        current_version_parts = ([0, 0, 0] if current_version is None else [
            int(part) for part in current_version.split(".")
        ])
        changelog_generator = ChangelogGenerator(history=history)
        semantic_versioning = SemanticVersioning(git_history=git_history,
                                                 history=history)

        pyhist = PyHist(
            git_history=git_history,
            history=history,
            semantic_versioning=semantic_versioning,
            changelog_generator=changelog_generator,
            setup_parser=setup_parser,
        )

        # act
        with patch.object(
                setup_parser,
                "persist_version") as patch_persist_version, patch.object(
                    setup_parser,
                    "get_current_version_parts",
                    return_value=current_version_parts,
                ) as patch_get_current_version_parts, patch.object(
                    git_history, "add_versioning_commit"
                ) as patch_add_versioning_commit, patch.object(
                    history, "load_history", side_effect=lambda: None
                ) as patch_load_history, patch.object(
                    history, "save_history", side_effect=lambda: None
                ) as patch_save_history, patch.object(
                    changelog_generator,
                    "generate_changelog",
                    side_effect=lambda: None) as patch_generate_changelog:
            pyhist.update()

        # assert
        assert patch_add_versioning_commit.called_once_with(
            version=expected_version, is_release=False)
        assert patch_save_history.called
        assert patch_load_history.called
        assert patch_generate_changelog.called
        assert patch_get_current_version_parts.called
        assert patch_persist_version.called_once_with(version=expected_version)