def test_get_next_dev_version__incremental_release__snap(self): build_pom_content = self._get_build_pom("major") not_used = version.get_version_increment_strategy( build_pom_content, None) self.assertEqual( "1.0.0-SNAPSHOT", version.get_next_dev_version("1.0.0-SNAPSHOT", not_used, incremental_release=True))
def parse_maven_artifact_def(root_path, package): """ Parses the BUILD.pom file *and* BUILD.pom.released file at the specified path and returns a MavenArtifactDef instance. Returns None if there is no BUILD.pom file at the specified path. """ content, path = mdfiles.read_file(root_path, package, mdfiles.BUILD_POM_FILE_NAME) if content is None: return None maven_artifact_func = code.get_function_block(content, "maven_artifact") try: art_def = eval(maven_artifact_func) pom_generation_mode = pomgenmode.from_string( art_def.pom_generation_mode) if art_def.custom_pom_template_content is not None: # load the template right away template_path = art_def.custom_pom_template_content template_content, _ = mdfiles.read_file(root_path, package, template_path) art_def.custom_pom_template_content = template_content except: print("[ERROR] Cannot parse [%s]: %s" % (path, sys.exc_info())) raise if pom_generation_mode.produces_artifact: rel_art_def = _parse_released_maven_artifact_def(root_path, package) released_pom_content = _read_released_pom(root_path, package) vers_incr_strat = version.get_version_increment_strategy(content, path) return _augment_art_def_values(art_def, rel_art_def, package, released_pom_content, vers_incr_strat, pom_generation_mode) else: return _augment_art_def_values(art_def, rel_art_def=None, bazel_package=package, released_pom_content=None, version_increment_strategy=None, pom_generation_mode=pom_generation_mode)
def test_get_next_version__minor__reset_patch(self): build_pom_content = self._get_build_pom("minor") s = version.get_version_increment_strategy(build_pom_content, None) self.assertEqual("2.1.0", s("2.0.1"))
def test_get_next_version__major_snap_and_qual(self): build_pom_content = self._get_build_pom("major") s = version.get_version_increment_strategy(build_pom_content, None) self.assertEqual("2.0.0-scone_60x-SNAPSHOT", s("1.0.0-scone_60x-SNAPSHOT"))
def test_get_next_version__major_snap__reset_patch(self): build_pom_content = self._get_build_pom("major") s = version.get_version_increment_strategy(build_pom_content, None) self.assertEqual("2.0.0-SNAPSHOT", s("1.2.5-SNAPSHOT"))
def test_get_next_version__major(self): build_pom_content = self._get_build_pom("major") s = version.get_version_increment_strategy(build_pom_content, None) self.assertEqual("2.0.0", s("1.0.0"))
def test_get_next_dev_version__snap(self): build_pom_content = self._get_build_pom("major") s = version.get_version_increment_strategy(build_pom_content, None) self.assertEqual("2.0.0-SNAPSHOT", version.get_next_dev_version("1.0.0-SNAPSHOT", s))
def test_get_next_version__patch_snap_and_qual(self): build_pom_content = self._get_build_pom("patch") s = version.get_version_increment_strategy(build_pom_content, None) self.assertEqual("1.1.1-scone_70x-SNAPSHOT", s("1.1.0-scone_70x-SNAPSHOT"))
def test_get_next_version__patch(self): build_pom_content = self._get_build_pom("patch") s = version.get_version_increment_strategy(build_pom_content, None) self.assertEqual("5.3.1", s("5.3.0"))
def test_get_next_version__minor_qual(self): build_pom_content = self._get_build_pom("minor") s = version.get_version_increment_strategy(build_pom_content, None) self.assertEqual("1.1.0-scone_60x", s("1.0.0-scone_60x"))
def update_build_pom_file(root_path, packages, new_version=None, update_version_using_version_incr_strat=False, new_version_incr_strat=None, set_version_to_last_released_version=False, version_qualifier_to_add=None, new_pom_generation_mode=None, add_pom_generation_mode_if_missing=False): """ If a non-None value is provided, updates the following values in BUILD.pom files in the specified packages: - version (also version qualifier) - version_increment_strategy - pom_generation_mode - pom_generation_mode """ for package in packages: build_pom_content, build_pom_path = mdfiles.read_file( root_path, package, mdfiles.BUILD_POM_FILE_NAME) if build_pom_content is None: raise Exception("Invalid package [%s]" % package) try: current_version = version.parse_build_pom_version( build_pom_content) if current_version is None: # only possible if pom_generation_mode=skip. this isn't quite # right, but we'll just ignore these type of packages # for simplicitly, because there isn't much metadata to # update anyway (only pom_generation_mode is specified) continue updated_version = new_version # increment current version using version increment strategy if updated_version is None and update_version_using_version_incr_strat: vers_incr_strat = version.get_version_increment_strategy( build_pom_content, build_pom_path) updated_version = vers_incr_strat(current_version) # set version back to previously released version if updated_version is None and set_version_to_last_released_version: build_pom_released_content, _ = mdfiles.read_file( root_path, package, "BUILD.pom.released") if build_pom_released_content is None: # if the BUILD.pom.released file cannot be read (because it # doesn't exist (yet), this is a noop - we don't want to # fail here because typical usage is to update many # artifacts at once pass else: updated_version = version.parse_build_pom_released_version( build_pom_released_content) # add version qualifier to current version if updated_version is None and version_qualifier_to_add is not None: update_strategy = _get_version_qualifier_update_strategy( version_qualifier_to_add) updated_version = version.version_update_handler( current_version, update_strategy) if updated_version is not None: build_pom_content = _update_version_in_build_pom_content( build_pom_content, updated_version) if new_version_incr_strat is not None: build_pom_content = _update_version_incr_strategy_in_build_pom_content( build_pom_content, new_version_incr_strat) if new_pom_generation_mode is not None: build_pom_content = _update_pom_generation_mode_in_build_pom_content( build_pom_content, new_pom_generation_mode) if add_pom_generation_mode_if_missing: build_pom_content = _add_pom_generation_mode_if_missing_in_build_pom_content( build_pom_content) mdfiles.write_file(build_pom_content, root_path, package, mdfiles.BUILD_POM_FILE_NAME) except: print("[ERROR] Cannot update BUILD.pom [%s]: %s" % (build_pom_path, sys.exc_info())) raise