Rework get_version and various improvements
This commit is contained in:
		@ -12,7 +12,7 @@ from semver.exceptions import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestSCM(unittest.TestCase):
 | 
			
		||||
class TestSemVer(unittest.TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        scm = mock.MagicMock(MockSCM())
 | 
			
		||||
        self.semver: SemVer = SemVer(scm=scm)
 | 
			
		||||
@ -142,3 +142,52 @@ class TestSCM(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(NoGitFlowException):
 | 
			
		||||
            self.semver.run()
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._bump_version")
 | 
			
		||||
    def test_get_version(self, mock_bump_version: mock.Mock):
 | 
			
		||||
        self.semver._scm.get_branch.return_value = "feature/example"
 | 
			
		||||
        self.semver._scm.get_tag_version.return_value = "1.0.0"
 | 
			
		||||
        self.semver._scm.get_version_hash.return_value = "HASH"
 | 
			
		||||
        self.semver._scm.get_hash.return_value = "ALT_HASH"
 | 
			
		||||
 | 
			
		||||
        mock_bump_version.return_value = "1.0.1"
 | 
			
		||||
 | 
			
		||||
        expected_version = "1.0.0+HASH"
 | 
			
		||||
        version = self.semver.get_version(dot=True)
 | 
			
		||||
        self.assertEqual(version, "feature.example")
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._bump_version")
 | 
			
		||||
    def test_get_version_docker(self, mock_bump_version: mock.Mock):
 | 
			
		||||
        self.semver._scm.get_branch.return_value = "feature/example"
 | 
			
		||||
        self.semver._scm.get_tag_version.return_value = "1.0.0"
 | 
			
		||||
        self.semver._scm.get_version_hash.return_value = "HASH"
 | 
			
		||||
        self.semver._scm.get_hash.return_value = "ALT_HASH"
 | 
			
		||||
 | 
			
		||||
        mock_bump_version.return_value = "1.0.1"
 | 
			
		||||
 | 
			
		||||
        expected_version = "1.0.0+HASH"
 | 
			
		||||
        version = self.semver.get_version(version_format="docker")
 | 
			
		||||
        self.assertEqual(version, "1.0.1-feature-example.0")
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.semver.SemVer._bump_version")
 | 
			
		||||
    def test_get_version_maven(self, mock_bump_version: mock.Mock):
 | 
			
		||||
        self.semver._scm.get_branch.return_value = "feature/example"
 | 
			
		||||
        self.semver._scm.get_tag_version.return_value = "1.0.0"
 | 
			
		||||
        self.semver._scm.get_version_hash.return_value = "HASH"
 | 
			
		||||
        self.semver._scm.get_hash.return_value = "ALT_HASH"
 | 
			
		||||
 | 
			
		||||
        mock_bump_version.return_value = "1.0.1"
 | 
			
		||||
 | 
			
		||||
        expected_version = "1.0.1-feature-example-SNAPSHOT"
 | 
			
		||||
        version = self.semver.get_version(version_format="maven")
 | 
			
		||||
        self.assertEqual(version, expected_version)
 | 
			
		||||
 | 
			
		||||
    def test_get_version_no_hash(self):
 | 
			
		||||
        self.semver._scm.get_branch.return_value = "main"
 | 
			
		||||
        self.semver._scm.get_tag_version.return_value = "1.0.0"
 | 
			
		||||
        self.semver._scm.get_version_hash.return_value = "HASH"
 | 
			
		||||
        self.semver._scm.get_hash.return_value = "HASH"
 | 
			
		||||
 | 
			
		||||
        expected_version = "1.0.0"
 | 
			
		||||
        version = self.semver.get_version()
 | 
			
		||||
        self.assertEqual(version, expected_version)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										59
									
								
								semver/tests/test_utils.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								semver/tests/test_utils.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,59 @@
 | 
			
		||||
import unittest
 | 
			
		||||
from unittest import mock
 | 
			
		||||
 | 
			
		||||
from semver.utils import get_settings, setting_to_array
 | 
			
		||||
from semver.exceptions import SemverException
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestUtils(unittest.TestCase):
 | 
			
		||||
    @mock.patch("toml.load")
 | 
			
		||||
    @mock.patch("pathlib.Path.is_file")
 | 
			
		||||
    def test_get_settings_toml(self, mock_is_file: mock.Mock, mock_toml: mock.Mock):
 | 
			
		||||
        get_settings.cache_clear()
 | 
			
		||||
 | 
			
		||||
        mock_is_file.side_effect = [True, False]
 | 
			
		||||
 | 
			
		||||
        mock_toml.return_value = {"1": {"a": "alpha", "fruit": "apple"}}
 | 
			
		||||
        settings = get_settings()
 | 
			
		||||
        self.assertEqual(settings, {"1": {"a": "alpha", "fruit": "apple"}})
 | 
			
		||||
 | 
			
		||||
    @mock.patch("configparser.ConfigParser")
 | 
			
		||||
    @mock.patch("pathlib.Path.is_file")
 | 
			
		||||
    def test_get_settings_cfg(
 | 
			
		||||
        self, mock_is_file: mock.Mock, mock_config_parser: mock.Mock
 | 
			
		||||
    ):
 | 
			
		||||
        get_settings.cache_clear()
 | 
			
		||||
 | 
			
		||||
        mock_is_file.side_effect = [False, True]
 | 
			
		||||
 | 
			
		||||
        mock_config_parser.return_value.read.return_value = ["./.bumpversion.cfg"]
 | 
			
		||||
        mock_config_parser.return_value.sections.return_value = ["1", "2", "3"]
 | 
			
		||||
        mock_config_parser.return_value.items.side_effect = [
 | 
			
		||||
            [("a", "alpha"), ("fruit", "apple")],
 | 
			
		||||
            [("b", "bravo"), ("fruit", "banana")],
 | 
			
		||||
            [("c", "charlie"), ("fruit", "cherry")],
 | 
			
		||||
        ]
 | 
			
		||||
 | 
			
		||||
        settings = get_settings()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            settings,
 | 
			
		||||
            {
 | 
			
		||||
                "1": {"a": "alpha", "fruit": "apple"},
 | 
			
		||||
                "2": {"b": "bravo", "fruit": "banana"},
 | 
			
		||||
                "3": {"c": "charlie", "fruit": "cherry"},
 | 
			
		||||
            },
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    @mock.patch("pathlib.Path.is_file")
 | 
			
		||||
    def test_get_settings_no_file(self, mock_is_file: mock.Mock):
 | 
			
		||||
        get_settings.cache_clear()
 | 
			
		||||
 | 
			
		||||
        mock_is_file.side_effect = [False, False]
 | 
			
		||||
        with self.assertRaises(SemverException):
 | 
			
		||||
            get_settings()
 | 
			
		||||
 | 
			
		||||
    @mock.patch("semver.utils.get_settings")
 | 
			
		||||
    def test_setting_to_array(self, mock_get_settings: mock.Mock):
 | 
			
		||||
        mock_get_settings.return_value = {"semver": {"test": "test1, test2"}}
 | 
			
		||||
        settings = setting_to_array("test")
 | 
			
		||||
        self.assertEqual(settings, ["test1", "test2"])
 | 
			
		||||
		Reference in New Issue
	
	Block a user