示例#1
0
 def test_simple3_bump_errors(self):
     """bad bump commands"""
     v1 = Version('1.2.3', scheme=Simple3VersionScheme)
     assert (not v1.bump(''))
     assert (str(v1) == '1.2.3')
     assert (not v1.bump('foo'))
     assert (str(v1) == '1.2.3')
示例#2
0
def test_four_part():
    string = "1.7.1.3"
    print(string)
    Version.supported_version_schemes = [Pep440VersionScheme, Simple4VersionScheme]
    version = Version(string, scheme=Simple4VersionScheme)
    version.bump()
    # _ = Version(str(next_version), scheme=Simple4VersionScheme)
    print(
        Version(string, scheme=Simple4VersionScheme), version, "simple-4 part (versio)"
    )
示例#3
0
    def test_pep440_bump_pre(self):
        """PEP 440 field bumps that start new version parts"""

        v1 = Version('1.2.3', scheme=Pep440VersionScheme)
        assert (v1.bump('pre', 0), str(v1))
        assert (str(v1) == '1.2.3a1')
        assert (v1.bump('pre', 1), str(v1))
        assert (str(v1) == '1.2.3a2')

        assert (v1.bump('post', 0), str(v1))
        assert (str(v1) == '1.2.3a2.post1')

        assert (v1.bump('dev', 0), str(v1))
        assert (str(v1) == '1.2.3a2.post1.dev1')
示例#4
0
    def test_simple4_bump(self):
        """version bumps"""
        v1 = Version('1.2.3.4', scheme=Simple4VersionScheme)
        assert (v1.bump())
        assert (str(v1) == '1.2.3.5')

        assert (v1.bump('Minor'))
        assert (str(v1) == '1.3.0.0')

        assert (v1.bump('Tiny'))
        assert (str(v1) == '1.3.1.0')

        assert (v1.bump('Tiny2'))
        assert (str(v1) == '1.3.1.1')

        assert (v1.bump('Major'))
        assert (str(v1) == '2.0.0.0')
示例#5
0
def bump_field(field):
    """
    Increment the given field by one.

    :param field: the field name (ex: 'Minor').
    :type field: str
    :return: the new version
    :rtype: str
    """
    original_version_str = get_project_version(project_package=Project.package)
    ver = Version(original_version_str)
    info('ver before bump: %s' % str(ver))
    ver.bump(field)
    info('ver after bump: %s' % str(ver))
    set_project_version(str(ver), project_package=Project.package)
    Project.version = get_project_version(project_package=Project.package)
    info("Bumped version from %s to %s" % (original_version_str, Project.version))
    return str(ver)
示例#6
0
    def test_pep440_bump_subfields(self):
        """PEP 440 subfield bumps"""

        v1 = Version('1.2.3.4', scheme=Pep440VersionScheme)
        v1.bump('Tiny2')
        assert (str(v1) == '1.2.3.5')
        v1.bump('Tiny')
        assert (str(v1) == '1.2.4.0')
        v1.bump('Minor')
        assert (str(v1) == '1.3.0.0')
        v1.bump('Major')
        assert (str(v1) == '2.0.0.0')
    def do(self, ver):
        Debug("do(%s) self.bump: %s" % (ver, self.bump))

        # If bump is a list of bumps to perform, create a new class instance
        # and set its bump, do the bump, then return result
        if isinstance(self.bump, list):
            for item in self.bump:
                classn = self.__class__
                Debug("Creating v2 classn(%s)" % item)
                v2 = classn(item)
                Debug("Running v2.do(%s)" % ver)
                ver = v2.do(str(ver))
                Debug("v2.do() result: %s" % ver)
            return str(ver)

        myver = Version(ver, scheme=self.scheme)
        myver.bump(self.bump)
        Debug("ForceSemanticVer(%s) bump '%s': %s" % (ver, self.bump, myver))
        # Make sure we return a string, not a Version() object
        return str(myver)
示例#8
0
def upversion(version, major, minor, revision, dev, post, final):
    v = Version(version)

    if major:
        v.bump('major')

    if minor:
        v.bump('minor')

    if revision:
        v.bump('tiny')

    if post:
        v.bump('post')

    if dev:
        v.bump('dev')

    if final:
        v.parts = [v.parts[0], None, None, None, None]

    return str(v)
示例#9
0
 def test_simple3_bump(self):
     """version bumps"""
     v1 = Version('1.2.3', scheme=Simple3VersionScheme)
     assert (v1.bump())
     assert (str(v1) == '1.2.4')
     assert (v1.bump('Minor'))
     assert (str(v1) == '1.3.0')
     assert (v1.bump('minor'))
     assert (str(v1) == '1.4.0')
     assert (v1.bump('Tiny'))
     assert (str(v1) == '1.4.1')
     assert (v1.bump('tiny'))
     assert (str(v1) == '1.4.2')
     assert (v1.bump('Major'))
     assert (str(v1) == '2.0.0')
示例#10
0
    def test_pep440_bump_sequences(self):
        """PEP 440 sequence bumps"""

        v1 = Version('1.2.3a4.post5.dev6', scheme=Pep440VersionScheme)
        assert (not v1.bump('dev', 0))
        assert (str(v1) == '1.2.3a4.post5.dev6')

        assert (not v1.bump('post', 0))
        assert (str(v1) == '1.2.3a4.post5.dev6')

        assert (v1.bump('pre', 0))
        assert (str(v1) == '1.2.3b1')
        assert (v1.bump('pre', 0))
        assert (str(v1) == '1.2.3c1')
        assert (v1.bump('pre', 0))
        assert (str(v1) == '1.2.3rc1')
        assert (not v1.bump('pre', 0))
        assert (str(v1) == '1.2.3rc1')
示例#11
0
    def test_simple5_bump(self):
        """version bumps"""
        v1 = Version('1.2.3.4.5', scheme=Simple5VersionScheme)
        assert (v1.bump())
        assert (str(v1) == '1.2.3.4.6')

        assert (v1.bump('Minor'))
        assert (str(v1) == '1.3.0.0.0')

        assert (v1.bump('Tiny'))
        assert (str(v1) == '1.3.1.0.0')

        assert (v1.bump('Build'))
        assert (str(v1) == '1.3.1.1.0')

        assert (v1.bump('Patch'))
        assert (str(v1) == '1.3.1.1.1')

        assert (v1.bump('Major'))
        assert (str(v1) == '2.0.0.0.0')
示例#12
0
    def test_pep440_bump_errors(self):
        """PEP 440 bump errors"""

        v1 = Version('1.2.3a4.post5.dev6', scheme=Pep440VersionScheme)
        assert (not v1.bump('release', 3))
        assert (str(v1) == '1.2.3a4.post5.dev6')
示例#13
0
    def test_pep440_bump(self):
        """version bumps"""
        v1 = Version('1.2.3a4.post5.dev6+7', scheme=Pep440VersionScheme)

        assert (v1.bump('local'))
        assert (str(v1) == '1.2.3a4.post5.dev6+8')

        assert (not v1.bump('local', 0))        # can't bump '+'
        assert (str(v1) == '1.2.3a4.post5.dev6+8')

        assert (v1.bump('local', 1))
        assert (str(v1) == '1.2.3a4.post5.dev6+9')

        assert (v1.bump('dev'))
        assert (str(v1) == '1.2.3a4.post5.dev7')

        assert (not v1.bump('dev', 0))          # can't bump 'dev'
        assert (str(v1) == '1.2.3a4.post5.dev7')

        assert (v1.bump('dev', 1))
        assert (str(v1) == '1.2.3a4.post5.dev8')

        assert (v1.bump('post'))
        assert (str(v1) == '1.2.3a4.post6')
        assert (not v1.bump('post', 0))         # can't bump 'post'
        assert (str(v1) == '1.2.3a4.post6')
        assert (v1.bump('post', 1))
        assert (str(v1) == '1.2.3a4.post7')

        assert (v1.bump('pre'))
        assert (str(v1) == '1.2.3a5')
        assert (v1.bump('pre', 0))
        assert (str(v1) == '1.2.3b1')
        assert (v1.bump('pre', 0))
        assert (str(v1) == '1.2.3c1')
        assert (v1.bump('pre', 0))
        assert (str(v1) == '1.2.3rc1')
        assert (not v1.bump('pre', 0))
        assert (str(v1) == '1.2.3rc1')

        assert (v1.bump('release'))
        assert (str(v1) == '1.2.4')
        assert (v1.bump('release', 2))
        assert (str(v1) == '1.2.5')
        assert (v1.bump('release', 1))
        assert (str(v1) == '1.3.0')
        assert (v1.bump('release', 0))
        assert (str(v1) == '2.0.0')

        v1 = Version('1.2.3a4.post5.dev6')
        assert (v1.bump('post'))
        assert (str(v1) == '1.2.3a4.post6')

        v1 = Version('1.2.3a4.post5.dev6')
        assert (v1.bump('pre'))
        assert (str(v1) == '1.2.3a5')

        v1 = Version('1.2.3a4.post5.dev6')
        assert (v1.bump('pre', 0))
        assert (str(v1) == '1.2.3b1')

        v1 = Version('1.2.3a4.post5.dev6')
        assert (v1.bump('release'))
        assert (str(v1) == '1.2.4')

        v1 = Version('1.2.3a4.post5.dev6')
        assert (v1.bump('release', 2))
        assert (str(v1) == '1.2.4')

        v1 = Version('1.2.3a4.post5.dev6')
        assert (v1.bump('release', 1))
        assert (str(v1) == '1.3.0')

        v1 = Version('1.2.3a4.post5.dev6')
        assert (v1.bump('release', 0))
        assert (str(v1) == '2.0.0')
示例#14
0
    def test_variable_dotted_bump(self):
        """version bumps"""
        v1 = Version('1', scheme=VariableDottedIntegerVersionScheme)
        v2 = Version('1.2', scheme=VariableDottedIntegerVersionScheme)
        v3 = Version('1.2.3', scheme=VariableDottedIntegerVersionScheme)
        v4 = Version('1.2.3.4', scheme=VariableDottedIntegerVersionScheme)
        v5 = Version('1.2.3.4.5', scheme=VariableDottedIntegerVersionScheme)
        assert (v1.bump())
        assert (str(v1) == '2')
        assert (v2.bump())
        assert (str(v2) == '1.3')
        assert (v3.bump())
        assert (str(v3) == '1.2.4')
        assert (v4.bump())
        assert (str(v4) == '1.2.3.5')
        assert (v5.bump())
        assert (str(v5) == '1.2.3.4.6')

        assert (v3.bump(sequence=2))
        assert (str(v3) == '1.2.5')
        assert (v3.bump(sequence=1))
        assert (str(v3) == '1.3.0')
        assert (v3.bump(sequence=0))
        assert (str(v3) == '2.0.0')
        assert (v3.bump(sequence=3))
        assert (str(v3) == '2.0.0.1')

        assert (v1.bump(sequence=3))
        assert (str(v1) == '2.0.0.1')
        assert (v2.bump(sequence=3))
        assert (str(v2) == '1.3.0.1')
        assert (v3.bump(sequence=3))
        assert (str(v3) == '2.0.0.2')
        assert (v4.bump(sequence=3))
        assert (str(v4) == '1.2.3.6')
        assert (v5.bump(sequence=3))
        assert (str(v5) == '1.2.3.5.0')
        assert (v5.bump(sequence=2))
        assert (str(v5) == '1.2.4.0.0')
        assert (v5.bump(sequence=1))
        assert (str(v5) == '1.3.0.0.0')
        assert (v5.bump(sequence=0))
        assert (str(v5) == '2.0.0.0.0')
示例#15
0
文件: versions.py 项目: mbr/unleash
def collect_info():
    release_version = opts.get('release_version')
    dev_version = opts.get('dev_version')

    setup_py = require_setup_py()

    try:
        if release_version is None:
            # try extracting version info
            try:
                release_version = find_assign(setup_py, 'version')
            except ValueError as e:
                issues.error(
                    e, 'There was an issue extracting the version number from '
                    'setup.py. Please make sure there is only a single '
                    'version= assignment in that file.')

            log.debug('Release version automatically determined from setup.py')
        else:
            log.debug('Release version given on commandline.')

        # parse release version string
        release_version = _shorten_version(release_version)

        if dev_version is None:
            # if we're given no dev version, we try to create one by
            # incrementing the release version
            dev_version = Version(str(release_version))
            dev_version.bump('release')
            dev_version.bump('dev')
        else:
            # parse dev version string
            dev_version = Version(dev_version)
    except TypeError as e:
        issues.error(
            'Bad version number: {}'.format(e),
            'The version number "{}" is not a version number that can be '
            'understood by distutils.\n\n'
            'Please correct the different version number and try again.'
            .format(e))

    # get package name
    try:
        pkg_name = find_assign(setup_py, 'name')
    except ValueError as e:
        issues.error(
            e,
            'Could not extract package name from setup.py. Please make sure '
            'there is only a single name= expression in that file.')

    info['pkg_name'] = pkg_name
    info['release_version'] = str(release_version)
    info['dev_version'] = str(dev_version)

    # create the short versions
    info['release_version_short'] = str(_shorten_version(release_version))
    info['dev_version_short'] = str(_shorten_version(dev_version))

    # use provided package dirs or auto-detected one from setup.py
    pkg_paths = set(opts['package_dir'])
    if not pkg_paths:
        pkg_paths = set([info['pkg_name'], info['pkg_name'].replace('-', '_')])

    log.debug('Package paths: {}'.format(pkg_paths))
    init_files = [path + '/__init__.py' for path in pkg_paths]

    init_files = filter(commit.path_exists, init_files)

    if not init_files:
        issues.warn(
            'No __init__.py files found for packages.',
            'While looking for package __init__.py files to update version '
            'information in, none were found. This most often happens if your '
            'package contains only modules or is not named after its primary '
            'Python package.')

    info['init_files'] = init_files