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')
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)" )
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')
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')
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)
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)
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)
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')
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')
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')
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')
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')
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')
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