Implement unittests
This commit is contained in:
		
							
								
								
									
										0
									
								
								semver/tests/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								semver/tests/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										144
									
								
								semver/tests/test_semver.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								semver/tests/test_semver.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,144 @@
 | 
			
		||||
import unittest
 | 
			
		||||
from unittest import mock
 | 
			
		||||
 | 
			
		||||
from semver.version_type import VersionType
 | 
			
		||||
from semver.scm import SCM
 | 
			
		||||
from semver.scm.mock import MockSCM
 | 
			
		||||
from semver.semver import SemVer
 | 
			
		||||
from semver.exceptions import (
 | 
			
		||||
    NoMergeFoundException,
 | 
			
		||||
    NoGitFlowException,
 | 
			
		||||
    NotMainBranchException,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestSCM(unittest.TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        scm = mock.MagicMock(MockSCM())
 | 
			
		||||
        self.semver: SemVer = SemVer(scm=scm)
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._bump_version")
 | 
			
		||||
    def test_version_repo(self, mock_bump_version: mock.Mock):
 | 
			
		||||
        self.semver._scm.get_tag_version.return_value = "1.0.0"
 | 
			
		||||
        self.semver._version_type = VersionType.PATCH
 | 
			
		||||
 | 
			
		||||
        expected_version = "1.0.1"
 | 
			
		||||
        mock_bump_version.return_value = expected_version
 | 
			
		||||
        version = self.semver._version_repo()
 | 
			
		||||
        self.assertEqual(version, expected_version)
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._bump_version")
 | 
			
		||||
    def test_version_repo_no_tag(self, mock_bump_version: mock.Mock):
 | 
			
		||||
        self.semver._scm.get_tag_version.return_value = "1.0.0"
 | 
			
		||||
        self.semver._version_type = None
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(NoMergeFoundException):
 | 
			
		||||
            self.semver._version_repo()
 | 
			
		||||
 | 
			
		||||
    def test_process_config_string(self):
 | 
			
		||||
        expected_version = "v1.0.0"
 | 
			
		||||
        version = self.semver._process_config_string("v{new_version}", "1.0.0", "1.0.1")
 | 
			
		||||
        self.assertEqual(version, expected_version)
 | 
			
		||||
 | 
			
		||||
        expected_version = "v1.0.1"
 | 
			
		||||
        version = self.semver._process_config_string(
 | 
			
		||||
            "v{current_version}", "1.0.0", "1.0.1"
 | 
			
		||||
        )
 | 
			
		||||
        self.assertEqual(version, expected_version)
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._update_file_version")
 | 
			
		||||
    def test_bump_version_major(self, mock_update_file_version: mock.Mock):
 | 
			
		||||
        expected_version = "2.0.0"
 | 
			
		||||
        version = self.semver._bump_version("1.0.0", VersionType.MAJOR)
 | 
			
		||||
        self.assertEqual(version, expected_version)
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._update_file_version")
 | 
			
		||||
    def test_bump_version_minor(self, mock_update_file_version: mock.Mock):
 | 
			
		||||
        expected_version = "1.1.0"
 | 
			
		||||
        version = self.semver._bump_version("1.0.0", VersionType.MINOR)
 | 
			
		||||
        self.assertEqual(version, expected_version)
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._update_file_version")
 | 
			
		||||
    def test_bump_version_patch(self, mock_update_file_version: mock.Mock):
 | 
			
		||||
        expected_version = "1.0.1"
 | 
			
		||||
        version = self.semver._bump_version("1.0.0", VersionType.PATCH)
 | 
			
		||||
        self.assertEqual(version, expected_version)
 | 
			
		||||
 | 
			
		||||
    @mock.patch("toml.load")
 | 
			
		||||
    @mock.patch("pathlib.Path.is_file")
 | 
			
		||||
    @mock.patch("builtins.open", mock.mock_open())
 | 
			
		||||
    @mock.patch("semver.logger.warning")
 | 
			
		||||
    def test_update_file_version(
 | 
			
		||||
        self,
 | 
			
		||||
        mock_logger: mock.Mock,
 | 
			
		||||
        mock_path_is_file: mock.Mock,
 | 
			
		||||
        mock_toml_load: mock.Mock,
 | 
			
		||||
    ):
 | 
			
		||||
        mock_toml_load.return_value = {
 | 
			
		||||
            "bumpversion": {"current_version": "1.0.0"},
 | 
			
		||||
            "bumpversion:file:VERSION": {
 | 
			
		||||
                "search": "0.0.0",
 | 
			
		||||
                "replace": "{new_version}",
 | 
			
		||||
            },
 | 
			
		||||
        }
 | 
			
		||||
        mock_path_is_file.return_value = True
 | 
			
		||||
        self.semver._update_file_version("1.0.1", "1.0.0")
 | 
			
		||||
        mock_logger.assert_not_called()
 | 
			
		||||
 | 
			
		||||
        mock_path_is_file.return_value = False
 | 
			
		||||
        self.semver._update_file_version("1.0.1", "1.0.0")
 | 
			
		||||
        mock_logger.assert_called_once()
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._version_repo", mock.MagicMock())
 | 
			
		||||
    def test_run_ok(self):
 | 
			
		||||
        self.semver._version_repo = mock.MagicMock()
 | 
			
		||||
        self.semver._version_repo.return_value = "1.0.1"
 | 
			
		||||
        self.semver._scm.get_branch.return_value = "main"
 | 
			
		||||
        self.semver._scm.get_merge_branch.return_value = "main"
 | 
			
		||||
        self.semver._scm.get_version_type.return_value = VersionType.MINOR
 | 
			
		||||
        self.semver._scm.commit_and_push.return_value = None
 | 
			
		||||
 | 
			
		||||
        self.semver._main_branches = ["main"]
 | 
			
		||||
        self.semver.run()
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._version_repo", mock.MagicMock())
 | 
			
		||||
    def test_run_not_merge(self):
 | 
			
		||||
        self.semver._version_repo = mock.MagicMock()
 | 
			
		||||
        self.semver._version_repo.return_value = "1.0.1"
 | 
			
		||||
        self.semver._scm.get_branch.return_value = "main"
 | 
			
		||||
        self.semver._scm.get_merge_branch.return_value = None
 | 
			
		||||
        self.semver._scm.get_version_type.return_value = VersionType.MINOR
 | 
			
		||||
        self.semver._scm.commit_and_push.return_value = None
 | 
			
		||||
 | 
			
		||||
        self.semver._main_branches = ["main"]
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(NoMergeFoundException):
 | 
			
		||||
            self.semver.run()
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._version_repo", mock.MagicMock())
 | 
			
		||||
    def test_run_not_version_type(self):
 | 
			
		||||
        self.semver._version_repo = mock.MagicMock()
 | 
			
		||||
        self.semver._version_repo.return_value = "1.0.1"
 | 
			
		||||
        self.semver._scm.get_branch.return_value = "feature/example"
 | 
			
		||||
        self.semver._scm.get_merge_branch.return_value = "main"
 | 
			
		||||
        self.semver._scm.get_version_type.return_value = VersionType.MINOR
 | 
			
		||||
        self.semver._scm.commit_and_push.return_value = None
 | 
			
		||||
 | 
			
		||||
        self.semver._main_branches = ["main"]
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(NotMainBranchException):
 | 
			
		||||
            self.semver.run()
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._version_repo", mock.MagicMock())
 | 
			
		||||
    def test_run_not_main_branch(self):
 | 
			
		||||
        self.semver._version_repo = mock.MagicMock()
 | 
			
		||||
        self.semver._version_repo.return_value = "1.0.1"
 | 
			
		||||
        self.semver._scm.get_branch.return_value = "main"
 | 
			
		||||
        self.semver._scm.get_merge_branch.return_value = "main"
 | 
			
		||||
        self.semver._scm.get_version_type.return_value = None
 | 
			
		||||
        self.semver._scm.commit_and_push.return_value = None
 | 
			
		||||
 | 
			
		||||
        self.semver._main_branches = ["main"]
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(NoGitFlowException):
 | 
			
		||||
            self.semver.run()
 | 
			
		||||
		Reference in New Issue
	
	Block a user