diff --git a/jenkins_jobs/modules/project_maven.py b/jenkins_jobs/modules/project_maven.py index 599589552..df19faf25 100755 --- a/jenkins_jobs/modules/project_maven.py +++ b/jenkins_jobs/modules/project_maven.py @@ -43,6 +43,8 @@ in the :ref:`Job` definition. documentation artifact archiving (default true). * **automatic-fingerprinting** (`bool`): Activate automatic fingerprinting of consumed and produced artifacts (default true). + * **per-module-email** (`bool`): Send an e-mail for each failed module + (default true). * **parallel-build-modules** (`bool`): Build modules in parallel (default false) * **resolve-dependencies** (`bool`): Resolve Dependencies during Pom @@ -78,7 +80,7 @@ CFP Example: .. literalinclude:: /../../tests/general/fixtures/project-maven003.yaml """ - +import pkg_resources import xml.etree.ElementTree as XML from jenkins_jobs.errors import InvalidAttributeError @@ -103,6 +105,11 @@ class Maven(jenkins_jobs.modules.base.Base): xml_parent = XML.Element('maven2-moduleset') if 'maven' not in data: return xml_parent + + # determine version of plugin + plugin_info = self.registry.get_plugin_info("Maven Integration plugin") + version = pkg_resources.parse_version(plugin_info.get('version', '0')) + if 'root-module' in data['maven']: root_module = XML.SubElement(xml_parent, 'rootModule') XML.SubElement(root_module, 'groupId').text = \ @@ -144,6 +151,10 @@ class Maven(jenkins_jobs.modules.base.Base): not data['maven'].get('automatic-site-archiving', True)).lower() XML.SubElement(xml_parent, 'fingerprintingDisabled').text = str( not data['maven'].get('automatic-fingerprinting', True)).lower() + if (version > pkg_resources.parse_version('0') and + version < pkg_resources.parse_version('2.0.1')): + XML.SubElement(xml_parent, 'perModuleEmail').text = str( + data.get('per-module-email', True)).lower() XML.SubElement(xml_parent, 'archivingDisabled').text = str( not data['maven'].get('automatic-archiving', True)).lower() XML.SubElement(xml_parent, 'resolveDependencies').text = str( diff --git a/tests/base.py b/tests/base.py index d97d0febd..7648977ba 100644 --- a/tests/base.py +++ b/tests/base.py @@ -146,23 +146,6 @@ class BaseTestCase(LoggingFixture): expected_xml = self._read_utf8_content() yaml_content = self._read_yaml_content(self.in_filename) - project = None - if ('project-type' in yaml_content): - if (yaml_content['project-type'] == "maven"): - project = project_maven.Maven(None) - elif (yaml_content['project-type'] == "matrix"): - project = project_matrix.Matrix(None) - elif (yaml_content['project-type'] == "flow"): - project = project_flow.Flow(None) - elif (yaml_content['project-type'] == "multijob"): - project = project_multijob.MultiJob(None) - elif (yaml_content['project-type'] == "externaljob"): - project = project_externaljob.ExternalJob(None) - - if project: - xml_project = project.root_xml(yaml_content) - else: - xml_project = XML.Element('project') plugins_info = None if self.plugins_info_filename is not None: @@ -176,6 +159,24 @@ class BaseTestCase(LoggingFixture): pub = self.klass(parser.registry) + project = None + if ('project-type' in yaml_content): + if (yaml_content['project-type'] == "maven"): + project = project_maven.Maven(parser.registry) + elif (yaml_content['project-type'] == "matrix"): + project = project_matrix.Matrix(parser.registry) + elif (yaml_content['project-type'] == "flow"): + project = project_flow.Flow(parser.registry) + elif (yaml_content['project-type'] == "multijob"): + project = project_multijob.MultiJob(parser.registry) + elif (yaml_content['project-type'] == "externaljob"): + project = project_externaljob.ExternalJob(parser.registry) + + if project: + xml_project = project.root_xml(yaml_content) + else: + xml_project = XML.Element('project') + # Generate the XML tree directly with modules/general pub.gen_xml(parser, xml_project, yaml_content) diff --git a/tests/general/fixtures/project-maven001.plugins_info.yaml b/tests/general/fixtures/project-maven001.plugins_info.yaml new file mode 100644 index 000000000..43636f81e --- /dev/null +++ b/tests/general/fixtures/project-maven001.plugins_info.yaml @@ -0,0 +1,3 @@ +- longName: 'Maven Integration plugin' + shortName: 'maven-plugin' + version: "2.0.0" diff --git a/tests/general/fixtures/project-maven001.xml b/tests/general/fixtures/project-maven001.xml index 06d41ce71..db8eba827 100644 --- a/tests/general/fixtures/project-maven001.xml +++ b/tests/general/fixtures/project-maven001.xml @@ -11,6 +11,7 @@ true true false + true true true true