Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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')
Esempio n. 5
0
 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')
Esempio n. 6
0
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)
Esempio n. 7
0
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()