class CompareUnitTests(SemVerTestCase): STRING_VERSION = 'v1.2.3' SEMVER_VERSION = SemVer(1, 2, 3) @patch('gitflow_easyrelease.semver.SemVer.from_version', return_value=None) def test_semver_creation(self, mock_from): mock_from.assert_not_called() self.semver.compare(self.STRING_VERSION) mock_from.assert_called_once_with(self.STRING_VERSION) @patch('gitflow_easyrelease.semver.SemVer.from_version', return_value=None) def test_semver_creation_skipping(self, mock_from): mock_from.assert_not_called() self.semver.compare(self.SEMVER_VERSION) mock_from.assert_not_called() @patch('gitflow_easyrelease.semver.SemVer.compare_component', return_value=0) def test_equality_comparison(self, mock_comparison): mock_comparison.assert_not_called() self.assertEqual(self.semver.compare(self.SEMVER_VERSION), 0) mock_comparison.assert_has_calls([call(0, 1), call(0, 2), call(0, 3)]) @patch('gitflow_easyrelease.semver.SemVer.compare_component', return_value=1) def test_difference_comparison(self, mock_comparison): mock_comparison.assert_not_called() self.assertEqual(self.semver.compare(self.SEMVER_VERSION), 1) mock_comparison.assert_called_once_with(0, 1)
def setUp(self): SemVerTestCase.setUp(self) from_version_patcher = patch.object(SemVer, 'from_version', return_value=self.FROM_VERSION) self.mock_from_version = from_version_patcher.start() self.addCleanup(from_version_patcher.stop) get_current_branch_patcher = patch.object(SemVer, 'get_current_version', return_value=SemVer()) self.mock_get_current_branch = get_current_branch_patcher.start() self.addCleanup(get_current_branch_patcher.stop) get_active_branch_patcher = patch.object(SemVer, 'get_active_branch', return_value=SemVer()) self.mock_get_active_branch = get_active_branch_patcher.start() self.addCleanup(get_active_branch_patcher.stop)
def test_none(self, mock_component, mock_is): mock_is.assert_not_called() self.mock_from_version.assert_not_called() mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called() self.assertEqual(SemVer.process_version().__repr__(), '0.0.0') mock_is.assert_not_called() self.mock_from_version.assert_not_called() mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_called_once_with()
def test_weird_version(self, mock_component, mock_is): mock_is.assert_not_called() self.mock_from_version.assert_not_called() mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called() self.assertEqual(SemVer.process_version(self.WEIRD_VERSION), self.WEIRD_VERSION) mock_is.assert_called_once_with(self.WEIRD_VERSION) self.mock_from_version.assert_not_called() mock_component.assert_called_once_with(self.WEIRD_VERSION) self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called()
def execute(self, parsed_args): """Executes its action""" version = ( SemVer.process_version(parsed_args.version) if self.has_version and hasattr(parsed_args, 'version') else SemVer() ) if version is None: raise ValueError( 'Version was not passed in and the repo is not on a release branch' ) base = ( parsed_args.base if self.has_base and hasattr(parsed_args, 'base') else None ) options = ( parsed_args.options if hasattr(parsed_args, 'options') else None ) for command in self.release_commands: Subcommand.execute_release_command(command, version, base, options)
def test_semver(self, mock_component, mock_is): mock_is.assert_not_called() self.mock_from_version.assert_not_called() mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called() self.assertEqual( SemVer.process_version(self.SEMVER).__repr__(), self.FROM_VERSION.__repr__()) mock_is.assert_called_once_with(self.SEMVER) self.mock_from_version.assert_called_once_with(self.SEMVER) mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called()
class LesserUnitTests(SemVerTestCase): VERSION = SemVer(1, 2, 3) @patch.object(SemVer, 'compare', return_value=1) def test_lesser(self, mock_compare): mock_compare.assert_not_called() self.assertTrue(self.semver.lesser(self.VERSION)) mock_compare.assert_called_once_with(self.VERSION) @patch.object(SemVer, 'compare', return_value=0) def test_equal(self, mock_compare): mock_compare.assert_not_called() self.assertFalse(self.semver.lesser(self.VERSION)) mock_compare.assert_called_once_with(self.VERSION) @patch.object(SemVer, 'compare', return_value=-1) def test_greater(self, mock_compare): mock_compare.assert_not_called() self.assertFalse(self.semver.lesser(self.VERSION)) mock_compare.assert_called_once_with(self.VERSION)
class GetCurrentVersionUnitTests(SemVerTestCase): RETURN_NONE = MagicMock(return_value=None) TAGS = ['0.0.0', '1.0.0', '0.1.0', '0.0.1'] @patch('gitflow_easyrelease.semver.SemVer.get_active_branch', return_value=SemVer(1, 2, 3)) def test_with_active_release_branch(self, mock_active): mock_active.assert_not_called() self.assertEqual(SemVer.get_current_version().__repr__(), '1.2.3') mock_active.assert_called_once_with() @patch('gitflow_easyrelease.semver.SemVer.get_active_branch', RETURN_NONE) @patch('gitflow_easyrelease.semver.RepoInfo.get_semver_tags', RETURN_NONE) def test_no_versions(self): self.assertEqual(SemVer.get_current_version().__repr__(), '0.0.0') @patch('gitflow_easyrelease.semver.SemVer.get_active_branch', RETURN_NONE) @patch('gitflow_easyrelease.semver.RepoInfo.get_semver_tags', return_value=TAGS) def test_tagged_versions(self, mock_tags): mock_tags.assert_not_called() self.assertEqual(SemVer.get_current_version().__repr__(), '1.0.0') mock_tags.assert_called_once_with()
def reset_semver(self): self.semver = SemVer(self.MAJOR, self.MINOR, self.PATCH)
def test_compare_component(first, second, result): assert result == SemVer.compare_component(first, second)
def test_without_semver_version(self, mock_is_semver): mock_is_semver.assert_not_called() result = SemVer.from_version(self.VERSION) mock_is_semver.assert_called_once_with(self.VERSION) self.assertEqual(result.__repr__(), '0.0.0')
class ProcessVersionUnitTests(SemVerTestCase): FROM_VERSION = SemVer(1, 2, 3) WEIRD_VERSION = ' '.join(SemVer.ALL_KEYS) SEMVER = '1.2.3' COMPONENT = SemVer.MAJOR_KEYS[0] def setUp(self): SemVerTestCase.setUp(self) from_version_patcher = patch.object(SemVer, 'from_version', return_value=self.FROM_VERSION) self.mock_from_version = from_version_patcher.start() self.addCleanup(from_version_patcher.stop) get_current_branch_patcher = patch.object(SemVer, 'get_current_version', return_value=SemVer()) self.mock_get_current_branch = get_current_branch_patcher.start() self.addCleanup(get_current_branch_patcher.stop) get_active_branch_patcher = patch.object(SemVer, 'get_active_branch', return_value=SemVer()) self.mock_get_active_branch = get_active_branch_patcher.start() self.addCleanup(get_active_branch_patcher.stop) @patch('gitflow_easyrelease.semver.is_semver', return_value=False) @patch('gitflow_easyrelease.semver.SemVer.is_component', return_value=False) def test_weird_version(self, mock_component, mock_is): mock_is.assert_not_called() self.mock_from_version.assert_not_called() mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called() self.assertEqual(SemVer.process_version(self.WEIRD_VERSION), self.WEIRD_VERSION) mock_is.assert_called_once_with(self.WEIRD_VERSION) self.mock_from_version.assert_not_called() mock_component.assert_called_once_with(self.WEIRD_VERSION) self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called() @patch('gitflow_easyrelease.semver.is_semver', return_value=True) @patch('gitflow_easyrelease.semver.SemVer.is_component', return_value=False) def test_semver(self, mock_component, mock_is): mock_is.assert_not_called() self.mock_from_version.assert_not_called() mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called() self.assertEqual( SemVer.process_version(self.SEMVER).__repr__(), self.FROM_VERSION.__repr__()) mock_is.assert_called_once_with(self.SEMVER) self.mock_from_version.assert_called_once_with(self.SEMVER) mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called() @patch('gitflow_easyrelease.semver.is_semver', return_value=False) @patch('gitflow_easyrelease.semver.SemVer.is_component', return_value=True) def test_component(self, mock_component, mock_is): mock_is.assert_not_called() self.mock_from_version.assert_not_called() mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called() self.assertEqual( SemVer.process_version(self.COMPONENT).__repr__(), '1.0.0') mock_is.assert_called_once_with(self.COMPONENT) self.mock_from_version.assert_not_called() mock_component.assert_called_once_with(self.COMPONENT) self.mock_get_current_branch.assert_called_once_with() self.mock_get_active_branch.assert_not_called() @patch('gitflow_easyrelease.semver.is_semver', return_value=True) @patch('gitflow_easyrelease.semver.SemVer.is_component', return_value=True) def test_none(self, mock_component, mock_is): mock_is.assert_not_called() self.mock_from_version.assert_not_called() mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_not_called() self.assertEqual(SemVer.process_version().__repr__(), '0.0.0') mock_is.assert_not_called() self.mock_from_version.assert_not_called() mock_component.assert_not_called() self.mock_get_current_branch.assert_not_called() self.mock_get_active_branch.assert_called_once_with()
def test_tagged_versions(self, mock_tags): mock_tags.assert_not_called() self.assertEqual(SemVer.get_current_version().__repr__(), '1.0.0') mock_tags.assert_called_once_with()
def test_no_versions(self): self.assertEqual(SemVer.get_current_version().__repr__(), '0.0.0')
class BumpUnitTests(SemVerTestCase): MAJOR = 1 MINOR = 2 PATCH = 3 def setUp(self): SemVerTestCase.setUp(self) self.reset_semver() def reset_semver(self): self.semver = SemVer(self.MAJOR, self.MINOR, self.PATCH) def test_bump_nothing(self): self.assertEqual(self.semver.__repr__(), '1.2.3') self.semver.bump(' '.join(SemVer.ALL_KEYS)) self.assertEqual(self.semver.__repr__(), '1.2.3') def test_patch_bump(self): for component in SemVer.PATCH_KEYS: self.reset_semver() self.assertEqual(self.semver.__repr__(), '1.2.3') self.semver.bump(component) self.assertEqual(self.semver.__repr__(), '1.2.4') def test_minor_bump(self): for component in SemVer.MINOR_KEYS: self.reset_semver() self.assertEqual(self.semver.__repr__(), '1.2.3') self.semver.bump(component) self.assertEqual(self.semver.__repr__(), '1.3.0') def test_major_bump(self): for component in SemVer.MAJOR_KEYS: self.reset_semver() self.assertEqual(self.semver.__repr__(), '1.2.3') self.semver.bump(component) self.assertEqual(self.semver.__repr__(), '2.0.0')
def test_with_release_branch(self, mock_args): mock_args.assert_not_called() self.assertEqual(SemVer.get_active_branch().__repr__(), '1.2.3') mock_args.assert_called_once_with()
def construct_semver(self): self.semver = SemVer()
def test_without_release_branch(self, mock_args): mock_args.assert_not_called() self.assertIsNone(SemVer.get_active_branch()) mock_args.assert_called_once_with()
def test_is_component(version, result): assert result == SemVer.is_component(version)
def test_add_call(self, mock_branches): mock_branches.assert_not_called() self.mock_add.assert_not_called() Subcommand.attach_base_argument(self.parser) self.mock_add.assert_called_once() mock_branches.assert_called_once_with() COMMON_SIGNATURE = ['git', 'flow', 'release'] @mark.parametrize( "command,version,base,options,call_signature", [ ( 'start', SemVer(), None, None, COMMON_SIGNATURE + ['start', '0.0.0'] ), ( 'finish', SemVer(), 'master', None, COMMON_SIGNATURE + ['finish', '0.0.0', 'master'] ), ( 'publish', SemVer(), None,
def test_with_active_release_branch(self, mock_active): mock_active.assert_not_called() self.assertEqual(SemVer.get_current_version().__repr__(), '1.2.3') mock_active.assert_called_once_with()