def test_none_version_return_if_all_excluded(self): # pylint: disable=invalid-name """ Test than function returns None if excluded one SemVer tag""" version_prefix = 'v' tags = [_TagInfo('v1.0.1', 'commit1', version_prefix), _TagInfo('notsemver', 'commit2', version_prefix), _TagInfo('v1.0.v2', 'commit2', version_prefix)] self.assertEqual(_seek_last_semver_tag(tags, '1.0.1'), None)
def test_none_return(self): """ Test than function returns None if not SemVer found""" tags = [] for i in range(15): tags.append(_TagInfo('v1.0.' + str(i), 'commit' + str(i), '')) for i in range(15): shuffle(tags) self.assertEqual(_seek_last_semver_tag(tags), None)
def test_none_version_return(self): """ Test than function returns None if not SemVer found with prefix""" version_prefix = 'v' tags = [] for i in range(15): tags.append(_TagInfo('1.0.' + str(i), 'commit' + str(i), version_prefix)) for i in range(15): shuffle(tags) self.assertEqual(_seek_last_semver_tag(tags, version_prefix), None)
def test_basic_seek(self): """ Test result for basic versions""" tags = [] for i in range(15): tags.append(_TagInfo( '1.0.' + str(i), 'commit' + str(i), '')) for i in range(15): shuffle(tags) self.assertEqual(_seek_last_semver_tag(tags).name, '1.0.14') self.assertEqual(_seek_last_semver_tag(tags, '1.0.14').name, '1.0.13')
def test_basic_version_seek(self): """ Test result for basic versions with prefix""" version_prefix = 'v' tags = [] for i in range(15): tags.append(_TagInfo('%s1.0.%s' % (version_prefix, i), 'commit%s' % i, version_prefix)) for i in range(15): shuffle(tags) self.assertEqual(_seek_last_semver_tag(tags).name, 'v1.0.14') self.assertEqual(_seek_last_semver_tag(tags, '1.0.14').name, 'v1.0.13')
class VersionFromGitTests(TestCase): """ Test plugin functionality """ def setUp(self): self.project = Project("basedir") self.logger = Mock() def test__add_dev(self): """ Test _add_dev """ self.assertEquals(_add_dev('1.2.3'), '1.2.3.dev') def test_should_raise_if_git_repo_not_exists(self): # pylint: disable=invalid-name """ Plugin should raise exception if cannot find git root directory""" with self.assertRaises(BuildFailedException) as context: set_version_from_git_tag(self.project, self.logger) err_msg = str(context.exception) self.assertTrue( "Directory `basedir` isn't git repository root." in err_msg) @patch("pybuilder_semver_git_tag._get_repo_info", return_value=([_TagInfo('not_semver2', 'commit2', ''), _TagInfo('not_semver1', 'commit1', '')], 'last_commit', False)) def test_should_warning_if_semver_tag_not_found(self, mock_git_info): # pylint: disable=invalid-name, unused-argument """ Plugin should warning if SemVer tag wasn't found and return""" set_version_from_git_tag(self.project, self.logger) self.logger.warn.assert_called_once_with( "No SemVer git tag found. " "Consider removing plugin pybuilder_semver_git_tag.") self.logger.info.assert_not_called() @patch("pybuilder_semver_git_tag._get_repo_info", return_value=([_TagInfo('1.2.3', 'last_commit', ''), _TagInfo('not_semver1', 'commit1', '')], 'last_commit', False)) def test_release_version_found(self, mock_git_info): # pylint: disable=invalid-name, unused-argument """ Plugin should find release version""" set_version_from_git_tag(self.project, self.logger) self.assertEqual(self.logger.info.call_count, 2) self.assertEqual(self.project.version, '1.2.3') def get_dev_version(self, increment_part): """ Util method which call set_version_from_git_tag with particular level of version increment part """ self.project.set_property( 'semver_git_tag_increment_part', increment_part) set_version_from_git_tag(self.project, self.logger) @patch("pybuilder_semver_git_tag._get_repo_info", return_value=([_TagInfo('1.2.3', 'last_commit', ''), _TagInfo('not_semver1', 'commit1', '')], 'last_commit', True)) def test_dev_version_if_dirty(self, mock_git_info): # pylint: disable=invalid-name, unused-argument """ Plugin should generate dev version if repo is dirty""" # Test `patch` part self.get_dev_version('patch') self.assertEqual(self.project.version, '1.2.4.dev') # Test `minor` part self.get_dev_version('minor') self.assertEqual(self.project.version, '1.3.0.dev') # Test `major` part self.get_dev_version('major') self.assertEqual(self.project.version, '2.0.0.dev') # Test incorrect part self.project.set_property('semver_git_tag_increment_part', 'incorrect') with self.assertRaises(BuildFailedException) as context: set_version_from_git_tag(self.project, self.logger) err_msg = str(context.exception) self.assertTrue( ("Incorrect value for `semver_git_tag_increment_part` property. " "Has to be in (`major`, `minor`, `patch`), " "but `incorrect` passed.") in err_msg) @patch("pybuilder_semver_git_tag._get_repo_info", return_value=([_TagInfo('1.2.3', 'commit2', ''), _TagInfo('not_semver1', 'commit1', '')], 'last_commit', False)) def test_dev_version_if_tagged_not_last_commit(self, mock_git_info): # pylint: disable=invalid-name, unused-argument """ Plugin should generate dev version if repo had commit(s) after SemVer tagger commit """ # Test `patch` part self.get_dev_version('patch') self.assertEqual(self.project.version, '1.2.4.dev') # Test `minor` part self.get_dev_version('minor') self.assertEqual(self.project.version, '1.3.0.dev') # Test `major` part self.get_dev_version('major') self.assertEqual(self.project.version, '2.0.0.dev') # Test incorrect part self.project.set_property('semver_git_tag_increment_part', 'incorrect') with self.assertRaises(BuildFailedException) as context: set_version_from_git_tag(self.project, self.logger) err_msg = str(context.exception) self.assertTrue( ("Incorrect value for `semver_git_tag_increment_part` property. " "Has to be in (`major`, `minor`, `patch`), " "but `incorrect` passed.") in err_msg)
class VersionFromGitTests(TestCase): """ Test plugin functionality """ def setUp(self): self.project = Project("basedir") def test__add_dev(self): """ Test _add_dev """ self.assertEquals(_add_dev('1.2.3'), '1.2.3.dev') def test_should_raise_if_git_repo_not_exists(self): # pylint: disable=invalid-name """ Plugin should raise exception if cannot find git root directory""" self.assertRaises(BuildFailedException, version_from_git_tag, self.project, Mock()) @patch("pybuilder_semver_git_tag._get_repo_info", return_value=([ _TagInfo('not_semver2', 'commit2'), _TagInfo('not_semver1', 'commit1') ], 'last_commit', False)) def test_should_warning_if_semver_tag_not_found(self, mock_git_info): # pylint: disable=invalid-name, unused-argument """ Plugin should warning if SemVer tag wasn't found and return""" logger_mock = Mock() version_from_git_tag(self.project, logger_mock) logger_mock.warn.assert_called_once() logger_mock.info.assert_not_called() @patch("pybuilder_semver_git_tag._get_repo_info", return_value=([ _TagInfo('1.2.3', 'last_commit'), _TagInfo('not_semver1', 'commit1') ], 'last_commit', False)) def test_release_version_found(self, mock_git_info): # pylint: disable=invalid-name, unused-argument """ Plugin should find release version""" logger_mock = Mock() version_from_git_tag(self.project, logger_mock) self.assertEqual(logger_mock.info.call_count, 2) self.assertEqual(self.project.version, '1.2.3') def get_dev_version(self, increment_part): """ Util method which call version_from_git_tag with particular level of version increment part """ logger_mock = Mock() self.project.set_property('semver_git_tag_increment_part', increment_part) version_from_git_tag(self.project, logger_mock) self.assertEqual(logger_mock.info.call_count, 2) @patch("pybuilder_semver_git_tag._get_repo_info", return_value=([ _TagInfo('1.2.3', 'last_commit'), _TagInfo('not_semver1', 'commit1') ], 'last_commit', True)) def test_dev_version_if_dirty(self, mock_git_info): # pylint: disable=invalid-name, unused-argument """ Plugin should generate dev version if repo is dirty""" # Test `patch` part self.get_dev_version('patch') self.assertEqual(self.project.version, '1.2.4.dev') # Test `minor` part self.get_dev_version('minor') self.assertEqual(self.project.version, '1.3.0.dev') # Test `major` part self.get_dev_version('major') self.assertEqual(self.project.version, '2.0.0.dev') # Test incorrect part logger_mock = Mock() self.project.set_property('semver_git_tag_increment_part', 'incorrect') self.assertRaises(BuildFailedException, version_from_git_tag, self.project, logger_mock) logger_mock.info.assert_called_once() @patch("pybuilder_semver_git_tag._get_repo_info", return_value=([ _TagInfo('1.2.3', 'commit2'), _TagInfo('not_semver1', 'commit1') ], 'last_commit', False)) def test_dev_version_if_tagged_not_last_commit(self, mock_git_info): # pylint: disable=invalid-name, unused-argument """ Plugin should generate dev version if repo had commit(s) after SemVer tagger commit """ # Test `patch` part self.get_dev_version('patch') self.assertEqual(self.project.version, '1.2.4.dev') # Test `minor` part self.get_dev_version('minor') self.assertEqual(self.project.version, '1.3.0.dev') # Test `major` part self.get_dev_version('major') self.assertEqual(self.project.version, '2.0.0.dev') # Test incorrect part logger_mock = Mock() self.project.set_property('semver_git_tag_increment_part', 'incorrect') self.assertRaises(BuildFailedException, version_from_git_tag, self.project, logger_mock) logger_mock.info.assert_called_once()