Ejemplo n.º 1
0
    def test_get_xml_element_none_existent_file(self):
        """Test get xml element but file does not exist."""
        with self.assertRaisesRegex(
                ValueError,
                r"Given xml file does not exist: does_not_exist/pom.xml"):

            # pylint: disable=expression-not-assigned
            get_xml_element('does_not_exist/pom.xml', 'version').text
Ejemplo n.º 2
0
    def test_get_xml_element_element_does_not_exist(self):
        """Test get xml element but does not exist."""
        with TempDirectory() as temp_dir:
            pom = b'''<project>
                          <modelVersion>4.0.0</modelVersion>
                          <groupId>com.mycompany.app</groupId>
                          <artifactId>my-app</artifactId>
                          <version>42.1</version>
                      </project>'''

            temp_dir.write('pom.xml', pom)
            pom_file_path = path.join(temp_dir.path, 'pom.xml')

            with self.assertRaisesRegex(
                    ValueError,
                    r"Given xml file \(.*\) does not have ./does-not-exist element"):

                get_xml_element(pom_file_path, 'does-not-exist')
Ejemplo n.º 3
0
    def test_get_xml_element_from_pom_file(self):
        """Test getting an xml element from the pom file."""
        with TempDirectory() as temp_dir:
            pom = b'''<project>
                        <modelVersion>4.0.0</modelVersion>
                        <groupId>com.mycompany.app</groupId>
                        <artifactId>my-app</artifactId>
                        <version>42.1</version>
                    </project>'''
            temp_dir.write('pom.xml', pom)
            pom_file_path = path.join(temp_dir.path, 'pom.xml')

            version = get_xml_element(pom_file_path, 'version').text
            artifact_id = get_xml_element(pom_file_path, 'artifactId').text
            group_id = get_xml_element(pom_file_path, 'groupId').text

            assert version == '42.1'
            assert artifact_id == 'my-app'
            assert group_id == 'com.mycompany.app'
Ejemplo n.º 4
0
    def test_get_xml_element_from_pom_file_with_namespace(self):
        """Test get xml element from pom file with namespace."""
        with TempDirectory() as temp_dir:
            pom = b'''<?xml version="1.0"?>
                      <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
                          xmlns="http://maven.apache.org/POM/4.0.0"
                          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                          <modelVersion>4.0.0</modelVersion>
                          <groupId>com.mycompany.app</groupId>
                          <artifactId>my-app</artifactId>
                          <version>42.1</version>
                      </project>'''

            temp_dir.write('pom.xml', pom)
            pom_file_path = path.join(temp_dir.path, 'pom.xml')

            version = get_xml_element(pom_file_path, 'version').text
            artifact_id = get_xml_element(pom_file_path, 'artifactId').text
            group_id = get_xml_element(pom_file_path, 'groupId').text

            assert version == '42.1'
            assert artifact_id == 'my-app'
            assert group_id == 'com.mycompany.app'
Ejemplo n.º 5
0
    def _run_step(self):
        """Runs the TSSC step implemented by this StepImplementer.

        Returns
        -------
        dict
            Results of running this step.
        """
        pom_file = self.get_config_value('pom-file')

        # verify runtime config
        if not os.path.exists(pom_file):
            raise ValueError('Given pom file does not exist: ' + pom_file)

        pom_version_element = get_xml_element(pom_file, 'version')
        pom_version = pom_version_element.text

        results = {'app-version': pom_version}

        return results
Ejemplo n.º 6
0
    def _run_step(self):
        """Runs the TSSC step implemented by this StepImplementer.

        Returns
        -------
        dict
            Results of running this step.
        """
        pom_file = self.get_config_value('pom-file')
        artifact_extensions = self.get_config_value('artifact-extensions')
        artifact_parent_dir = self.get_config_value('artifact-parent-dir')

        if not os.path.exists(pom_file):
            raise ValueError('Given pom file does not exist: ' + pom_file)

        settings_file = self._generate_maven_settings()

        try:
            sh.mvn(  # pylint: disable=no-member,
                'clean',
                'install',
                '-f',
                pom_file,
                '-s',
                settings_file,
                _out=sys.stdout,
                _err=sys.stderr)
        except sh.ErrorReturnCode as error:
            raise RuntimeError(f'Error invoking mvn: {error}') from error

        # find the artifacts
        artifact_file_names = []
        artifact_parent_dir_full_path = \
            os.listdir(os.path.join(
                os.path.dirname(os.path.abspath(pom_file)),
                artifact_parent_dir))
        for filename in artifact_parent_dir_full_path:
            if any(filename.endswith(ext) for ext in artifact_extensions):
                artifact_file_names.append(filename)

        # error if we find more then one artifact
        # see https://projects.engineering.redhat.com/browse/NAPSSPO-546
        if len(artifact_file_names) > 1:
            raise ValueError(
                'pom resulted in multiple artifacts with expected artifact extensions '
                + '({artifact_extensions}), this is unsupported'.format(
                    artifact_extensions=artifact_extensions))

        if len(artifact_file_names) < 1:
            raise ValueError(
                'pom resulted in 0 with expected artifact extensions ' +
                '({artifact_extensions}), this is unsupported'.format(
                    artifact_extensions=artifact_extensions))

        artifact_id = get_xml_element(pom_file, 'artifactId').text
        group_id = get_xml_element(pom_file, 'groupId').text
        try:
            package_type = get_xml_element(pom_file, 'package').text
        except ValueError:
            package_type = 'jar'

        results = {
            'artifacts': [{
                'path':
                os.path.join(os.path.dirname(os.path.abspath(pom_file)),
                             artifact_parent_dir, artifact_file_names[0]),
                'artifact-id':
                artifact_id,
                'group-id':
                group_id,
                'package-type':
                package_type,
                'pom-path':
                pom_file
            }]
        }
        return results