コード例 #1
0
    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))
コード例 #2
0
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)
コード例 #3
0
ファイル: versiontest.py プロジェクト: btbuxton/pomgen
 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"))
コード例 #4
0
ファイル: versiontest.py プロジェクト: btbuxton/pomgen
 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"))
コード例 #5
0
ファイル: versiontest.py プロジェクト: btbuxton/pomgen
 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"))
コード例 #6
0
ファイル: versiontest.py プロジェクト: btbuxton/pomgen
 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"))
コード例 #7
0
ファイル: versiontest.py プロジェクト: btbuxton/pomgen
 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))
コード例 #8
0
ファイル: versiontest.py プロジェクト: btbuxton/pomgen
 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"))
コード例 #9
0
ファイル: versiontest.py プロジェクト: btbuxton/pomgen
 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"))
コード例 #10
0
ファイル: versiontest.py プロジェクト: btbuxton/pomgen
 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"))
コード例 #11
0
ファイル: buildpomupdate.py プロジェクト: btbuxton/pomgen
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