From a24a547de03e5243eccbffeb890f9a51fc1e9f4c Mon Sep 17 00:00:00 2001 From: Eren ATAS <eatas.contractor@libertyglobal.com> Date: Mon, 20 Jul 2020 17:02:56 +0200 Subject: [PATCH] Updated ext-email support Added also a test case for version specific changes Change-Id: I5213dccffc441037c63ee7c042aee4a8a84d9732 Signed-off-by: Eren ATAS <eatas.contractor@libertyglobal.com> --- jenkins_jobs/modules/publishers.py | 139 ++++++- .../fixtures/email-ext001.plugins_info.yaml | 3 + tests/publishers/fixtures/email-ext001.xml | 48 --- .../fixtures/email-ext002.plugins_info.yaml | 3 + .../fixtures/email-ext003.plugins_info.yaml | 3 + .../fixtures/email-ext004.plugins_info.yaml | 3 + tests/publishers/fixtures/email-ext004.xml | 345 ++++++++++++++++++ tests/publishers/fixtures/email-ext004.yaml | 39 ++ .../fixtures/email-ext005.plugins_info.yaml | 3 + tests/publishers/fixtures/email-ext005.xml | 65 ++++ tests/publishers/fixtures/email-ext005.yaml | 17 + ...e_project_level_defaults.plugins_info.yaml | 3 + 12 files changed, 603 insertions(+), 68 deletions(-) create mode 100644 tests/publishers/fixtures/email-ext001.plugins_info.yaml create mode 100644 tests/publishers/fixtures/email-ext002.plugins_info.yaml create mode 100644 tests/publishers/fixtures/email-ext003.plugins_info.yaml create mode 100644 tests/publishers/fixtures/email-ext004.plugins_info.yaml create mode 100644 tests/publishers/fixtures/email-ext004.xml create mode 100644 tests/publishers/fixtures/email-ext004.yaml create mode 100644 tests/publishers/fixtures/email-ext005.plugins_info.yaml create mode 100644 tests/publishers/fixtures/email-ext005.xml create mode 100644 tests/publishers/fixtures/email-ext005.yaml create mode 100644 tests/yamlparser/fixtures/template_override_project_level_defaults.plugins_info.yaml diff --git a/jenkins_jobs/modules/publishers.py b/jenkins_jobs/modules/publishers.py index ca446a158..1b37a5804 100755 --- a/jenkins_jobs/modules/publishers.py +++ b/jenkins_jobs/modules/publishers.py @@ -2454,37 +2454,124 @@ def base_email_ext(registry, xml_parent, data, ttype): trigger = XML.SubElement( xml_parent, "hudson.plugins.emailext.plugins.trigger." + ttype ) + + info = registry.get_plugin_info("email-ext") + plugin_version = pkg_resources.parse_version(info.get("version", str(sys.maxsize))) + email = XML.SubElement(trigger, "email") - XML.SubElement(email, "recipientList").text = "" + + if plugin_version < pkg_resources.parse_version("2.39"): + XML.SubElement(email, "recipientList").text = "" XML.SubElement(email, "subject").text = "$PROJECT_DEFAULT_SUBJECT" XML.SubElement(email, "body").text = "$PROJECT_DEFAULT_CONTENT" + if plugin_version >= pkg_resources.parse_version("2.39"): + XML.SubElement(email, "replyTo").text = "$PROJECT_DEFAULT_REPLYTO" + XML.SubElement(email, "contentType").text = "project" if "send-to" in data: - XML.SubElement(email, "sendToDevelopers").text = str( - "developers" in data["send-to"] - ).lower() - XML.SubElement(email, "sendToRequester").text = str( - "requester" in data["send-to"] - ).lower() - XML.SubElement(email, "includeCulprits").text = str( - "culprits" in data["send-to"] - ).lower() - XML.SubElement(email, "sendToRecipientList").text = str( - "recipients" in data["send-to"] - ).lower() - if "upstream-committers" in data["send-to"]: + recipient_providers = None + if plugin_version < pkg_resources.parse_version("2.39"): + XML.SubElement(email, "sendToDevelopers").text = str( + "developers" in data["send-to"] + ).lower() + XML.SubElement(email, "sendToRequester").text = str( + "requester" in data["send-to"] + ).lower() + XML.SubElement(email, "includeCulprits").text = str( + "culprits" in data["send-to"] + ).lower() + XML.SubElement(email, "sendToRecipientList").text = str( + "recipients" in data["send-to"] + ).lower() + else: + for recipient in data["send-to"]: + if "developers" == recipient: + if recipient_providers is None: + recipient_providers = XML.SubElement( + email, "recipientProviders" + ) + XML.SubElement( + recipient_providers, + "hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider", + ).text = "" + elif "requester" == recipient: + if recipient_providers is None: + recipient_providers = XML.SubElement( + email, "recipientProviders" + ) + XML.SubElement( + recipient_providers, + "hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider", + ).text = "" + elif "culprits" == recipient: + if recipient_providers is None: + recipient_providers = XML.SubElement( + email, "recipientProviders" + ) + XML.SubElement( + recipient_providers, + "hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider", + ).text = "" + elif "recipients" == recipient: + if recipient_providers is None: + recipient_providers = XML.SubElement( + email, "recipientProviders" + ) + XML.SubElement( + recipient_providers, + "hudson.plugins.emailext.plugins.recipients.ListRecipientProvider", + ).text = "" + elif "failing-test-suspects-recipients" == recipient: + if recipient_providers is None: + recipient_providers = XML.SubElement( + email, "recipientProviders" + ) + XML.SubElement( + recipient_providers, + "hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider", + ).text = "" + elif "first-failing-build-suspects-recipients" == recipient: + if recipient_providers is None: + recipient_providers = XML.SubElement( + email, "recipientProviders" + ) + XML.SubElement( + recipient_providers, + "hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider", + ).text = "" + # `failureCount` is deprecated and has no effect + # on email, but the element has been created + # in order to match the XML generated via UI. + failure_count_supporters = ["FirstFailureTrigger", "SecondFailureTrigger"] + if ttype in failure_count_supporters: + XML.SubElement(trigger, "failureCount").text = "0" + if "upstream-committers" in data["send-to"]: + if recipient_providers is None: + recipient_providers = XML.SubElement(email, "recipientProviders") + XML.SubElement( + recipient_providers, + "hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider", + ).text = "" + else: + if plugin_version < pkg_resources.parse_version("2.39"): + XML.SubElement(email, "sendToRequester").text = "false" + XML.SubElement(email, "sendToDevelopers").text = "false" + XML.SubElement(email, "includeCulprits").text = "false" + XML.SubElement(email, "sendToRecipientList").text = "true" + else: recipient_providers = XML.SubElement(email, "recipientProviders") XML.SubElement( recipient_providers, - "hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider", + "hudson.plugins.emailext.plugins.recipients.ListRecipientProvider", ).text = "" - else: - XML.SubElement(email, "sendToRequester").text = "false" - XML.SubElement(email, "sendToDevelopers").text = "false" - XML.SubElement(email, "includeCulprits").text = "false" - XML.SubElement(email, "sendToRecipientList").text = "true" + if ttype == "ScriptTrigger": XML.SubElement(trigger, "triggerScript").text = data["trigger-script"] + if plugin_version >= pkg_resources.parse_version("2.39"): + XML.SubElement(email, "attachmentsPattern").text = "" + XML.SubElement(email, "attachBuildLog").text = "false" + XML.SubElement(email, "compressBuildLog").text = "false" + def email_ext(registry, xml_parent, data): """yaml: email-ext @@ -2501,6 +2588,8 @@ def email_ext(registry, xml_parent, data): (default '$DEFAULT_RECIPIENTS') :arg str reply-to: Comma separated list of email addresses that should be in the Reply-To header for this project (default '$DEFAULT_REPLYTO') + :arg str from: Email address that should be + in the From header for this project (default '') :arg str content-type: The content type of the emails sent. If not set, the Jenkins plugin uses the value set on the main configuration page. Possible values: 'html', 'text', 'both-html-text' or 'default' @@ -2561,6 +2650,8 @@ def email_ext(registry, xml_parent, data): * **culprits** (disabled by default) * **recipients** (enabled by default) * **upstream-committers** (>=2.39) (disabled by default) + * **failing-test-suspects-recipients** (>=2.39) (disabled by default) + * **first-failing-build-suspects-recipients** (>=2.39) (disabled by default) Example: @@ -2571,6 +2662,10 @@ def email_ext(registry, xml_parent, data): emailext = XML.SubElement( xml_parent, "hudson.plugins.emailext.ExtendedEmailPublisher" ) + + info = registry.get_plugin_info("email-ext") + plugin_version = pkg_resources.parse_version(info.get("version", str(sys.maxsize))) + if "recipients" in data: XML.SubElement(emailext, "recipientList").text = data["recipients"] else: @@ -2634,6 +2729,10 @@ def email_ext(registry, xml_parent, data): ("disable-publisher", "disabled", False), ("reply-to", "replyTo", "$DEFAULT_REPLYTO"), ] + + if plugin_version >= pkg_resources.parse_version("2.39"): + mappings.append(("from", "from", "")) + helpers.convert_mapping_to_xml(emailext, data, mappings, fail_required=True) matrix_dict = { diff --git a/tests/publishers/fixtures/email-ext001.plugins_info.yaml b/tests/publishers/fixtures/email-ext001.plugins_info.yaml new file mode 100644 index 000000000..f8e15c56b --- /dev/null +++ b/tests/publishers/fixtures/email-ext001.plugins_info.yaml @@ -0,0 +1,3 @@ +- longName: 'Extended Email Publisher' + shortName: 'email-ext' + version: "2.38" diff --git a/tests/publishers/fixtures/email-ext001.xml b/tests/publishers/fixtures/email-ext001.xml index 48f3fc8a9..a735ad6f1 100644 --- a/tests/publishers/fixtures/email-ext001.xml +++ b/tests/publishers/fixtures/email-ext001.xml @@ -13,9 +13,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.AlwaysTrigger> <hudson.plugins.emailext.plugins.trigger.UnstableTrigger> @@ -27,9 +24,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.UnstableTrigger> <hudson.plugins.emailext.plugins.trigger.FirstFailureTrigger> @@ -41,9 +35,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.FirstFailureTrigger> <hudson.plugins.emailext.plugins.trigger.FirstUnstableTrigger> @@ -55,9 +46,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.FirstUnstableTrigger> <hudson.plugins.emailext.plugins.trigger.NotBuiltTrigger> @@ -69,9 +57,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.NotBuiltTrigger> <hudson.plugins.emailext.plugins.trigger.AbortedTrigger> @@ -83,9 +68,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.AbortedTrigger> <hudson.plugins.emailext.plugins.trigger.RegressionTrigger> @@ -97,9 +79,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.RegressionTrigger> <hudson.plugins.emailext.plugins.trigger.FailureTrigger> @@ -111,9 +90,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.FailureTrigger> <hudson.plugins.emailext.plugins.trigger.SecondFailureTrigger> @@ -125,9 +101,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.SecondFailureTrigger> <hudson.plugins.emailext.plugins.trigger.ImprovementTrigger> @@ -139,9 +112,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.ImprovementTrigger> <hudson.plugins.emailext.plugins.trigger.StillFailingTrigger> @@ -153,9 +123,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.StillFailingTrigger> <hudson.plugins.emailext.plugins.trigger.SuccessTrigger> @@ -167,9 +134,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.SuccessTrigger> <hudson.plugins.emailext.plugins.trigger.FixedTrigger> @@ -181,9 +145,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.FixedTrigger> <hudson.plugins.emailext.plugins.trigger.FixedUnhealthyTrigger> @@ -195,9 +156,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.FixedUnhealthyTrigger> <hudson.plugins.emailext.plugins.trigger.StillUnstableTrigger> @@ -209,9 +167,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.StillUnstableTrigger> <hudson.plugins.emailext.plugins.trigger.PreBuildTrigger> @@ -223,9 +178,6 @@ <sendToRequester>true</sendToRequester> <includeCulprits>true</includeCulprits> <sendToRecipientList>true</sendToRecipientList> - <recipientProviders> - <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> - </recipientProviders> </email> </hudson.plugins.emailext.plugins.trigger.PreBuildTrigger> </configuredTriggers> diff --git a/tests/publishers/fixtures/email-ext002.plugins_info.yaml b/tests/publishers/fixtures/email-ext002.plugins_info.yaml new file mode 100644 index 000000000..f8e15c56b --- /dev/null +++ b/tests/publishers/fixtures/email-ext002.plugins_info.yaml @@ -0,0 +1,3 @@ +- longName: 'Extended Email Publisher' + shortName: 'email-ext' + version: "2.38" diff --git a/tests/publishers/fixtures/email-ext003.plugins_info.yaml b/tests/publishers/fixtures/email-ext003.plugins_info.yaml new file mode 100644 index 000000000..f8e15c56b --- /dev/null +++ b/tests/publishers/fixtures/email-ext003.plugins_info.yaml @@ -0,0 +1,3 @@ +- longName: 'Extended Email Publisher' + shortName: 'email-ext' + version: "2.38" diff --git a/tests/publishers/fixtures/email-ext004.plugins_info.yaml b/tests/publishers/fixtures/email-ext004.plugins_info.yaml new file mode 100644 index 000000000..38e9fcc3f --- /dev/null +++ b/tests/publishers/fixtures/email-ext004.plugins_info.yaml @@ -0,0 +1,3 @@ +- longName: 'Extended Email Publisher' + shortName: 'email-ext' + version: "2.54" diff --git a/tests/publishers/fixtures/email-ext004.xml b/tests/publishers/fixtures/email-ext004.xml new file mode 100644 index 000000000..2dce3b76e --- /dev/null +++ b/tests/publishers/fixtures/email-ext004.xml @@ -0,0 +1,345 @@ +<?xml version="1.0" encoding="utf-8"?> +<project> + <publishers> + <hudson.plugins.emailext.ExtendedEmailPublisher> + <recipientList>foo@example.com, bar@example.com</recipientList> + <configuredTriggers> + <hudson.plugins.emailext.plugins.trigger.AlwaysTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.AlwaysTrigger> + <hudson.plugins.emailext.plugins.trigger.UnstableTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.UnstableTrigger> + <hudson.plugins.emailext.plugins.trigger.FirstFailureTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + <failureCount>0</failureCount> + </hudson.plugins.emailext.plugins.trigger.FirstFailureTrigger> + <hudson.plugins.emailext.plugins.trigger.FirstUnstableTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.FirstUnstableTrigger> + <hudson.plugins.emailext.plugins.trigger.NotBuiltTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.NotBuiltTrigger> + <hudson.plugins.emailext.plugins.trigger.AbortedTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.AbortedTrigger> + <hudson.plugins.emailext.plugins.trigger.RegressionTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.RegressionTrigger> + <hudson.plugins.emailext.plugins.trigger.FailureTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.FailureTrigger> + <hudson.plugins.emailext.plugins.trigger.SecondFailureTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + <failureCount>0</failureCount> + </hudson.plugins.emailext.plugins.trigger.SecondFailureTrigger> + <hudson.plugins.emailext.plugins.trigger.ImprovementTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.ImprovementTrigger> + <hudson.plugins.emailext.plugins.trigger.StillFailingTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.StillFailingTrigger> + <hudson.plugins.emailext.plugins.trigger.SuccessTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.SuccessTrigger> + <hudson.plugins.emailext.plugins.trigger.FixedTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.FixedTrigger> + <hudson.plugins.emailext.plugins.trigger.FixedUnhealthyTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.FixedUnhealthyTrigger> + <hudson.plugins.emailext.plugins.trigger.StillUnstableTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.StillUnstableTrigger> + <hudson.plugins.emailext.plugins.trigger.PreBuildTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.CulpritsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FailingTestSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.FirstFailingBuildSuspectsRecipientProvider/> + <hudson.plugins.emailext.plugins.recipients.UpstreamComitterRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.PreBuildTrigger> + </configuredTriggers> + <contentType>text/html</contentType> + <defaultSubject>Subject for Build ${BUILD_NUMBER}</defaultSubject> + <defaultContent>The build has finished</defaultContent> + <attachmentsPattern>*/foo*.log</attachmentsPattern> + <presendScript>cancel=true</presendScript> + <postsendScript>cancel=true</postsendScript> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + <saveOutput>true</saveOutput> + <disabled>false</disabled> + <replyTo>foo@example.com</replyTo> + <from>lorem@ipsum.dolor</from> + <matrixTriggerMode>ONLY_CONFIGURATIONS</matrixTriggerMode> + </hudson.plugins.emailext.ExtendedEmailPublisher> + </publishers> +</project> diff --git a/tests/publishers/fixtures/email-ext004.yaml b/tests/publishers/fixtures/email-ext004.yaml new file mode 100644 index 000000000..bf32a2010 --- /dev/null +++ b/tests/publishers/fixtures/email-ext004.yaml @@ -0,0 +1,39 @@ +publishers: + - email-ext: + recipients: foo@example.com, bar@example.com + reply-to: foo@example.com + from: lorem@ipsum.dolor + content-type: html + subject: Subject for Build ${BUILD_NUMBER} + body: The build has finished + attach-build-log: false + compress-log: false + attachments: "*/foo*.log" + always: true + unstable: true + first-failure: true + first-unstable: true + not-built: true + aborted: true + regression: true + failure: true + second-failure: true + improvement: true + still-failing: true + success: true + fixed: true + fixed-unhealthy: true + still-unstable: true + pre-build: true + matrix-trigger: only-configurations + presend-script: "cancel=true" + postsend-script: "cancel=true" + save-output: true + send-to: + - developers + - requester + - culprits + - recipients + - upstream-committers + - failing-test-suspects-recipients + - first-failing-build-suspects-recipients diff --git a/tests/publishers/fixtures/email-ext005.plugins_info.yaml b/tests/publishers/fixtures/email-ext005.plugins_info.yaml new file mode 100644 index 000000000..38e9fcc3f --- /dev/null +++ b/tests/publishers/fixtures/email-ext005.plugins_info.yaml @@ -0,0 +1,3 @@ +- longName: 'Extended Email Publisher' + shortName: 'email-ext' + version: "2.54" diff --git a/tests/publishers/fixtures/email-ext005.xml b/tests/publishers/fixtures/email-ext005.xml new file mode 100644 index 000000000..37951fa0c --- /dev/null +++ b/tests/publishers/fixtures/email-ext005.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8"?> +<project> + <publishers> + <hudson.plugins.emailext.ExtendedEmailPublisher> + <recipientList>foo@example.com, bar@example.com</recipientList> + <configuredTriggers> + <hudson.plugins.emailext.plugins.trigger.AlwaysTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.AlwaysTrigger> + <hudson.plugins.emailext.plugins.trigger.UnstableTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.UnstableTrigger> + <hudson.plugins.emailext.plugins.trigger.FailureTrigger> + <email> + <subject>$PROJECT_DEFAULT_SUBJECT</subject> + <body>$PROJECT_DEFAULT_CONTENT</body> + <replyTo>$PROJECT_DEFAULT_REPLYTO</replyTo> + <contentType>project</contentType> + <recipientProviders> + <hudson.plugins.emailext.plugins.recipients.ListRecipientProvider/> + </recipientProviders> + <attachmentsPattern/> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + </email> + </hudson.plugins.emailext.plugins.trigger.FailureTrigger> + </configuredTriggers> + <contentType>text/html</contentType> + <defaultSubject>Subject for Build ${BUILD_NUMBER}</defaultSubject> + <defaultContent>The build has finished</defaultContent> + <attachmentsPattern>*/foo*.log</attachmentsPattern> + <presendScript>cancel=true</presendScript> + <postsendScript>cancel=true</postsendScript> + <attachBuildLog>false</attachBuildLog> + <compressBuildLog>false</compressBuildLog> + <saveOutput>true</saveOutput> + <disabled>false</disabled> + <replyTo>foo@example.com</replyTo> + <from>lorem@ipsum.dolor</from> + <matrixTriggerMode>ONLY_CONFIGURATIONS</matrixTriggerMode> + </hudson.plugins.emailext.ExtendedEmailPublisher> + </publishers> +</project> diff --git a/tests/publishers/fixtures/email-ext005.yaml b/tests/publishers/fixtures/email-ext005.yaml new file mode 100644 index 000000000..4d333dee5 --- /dev/null +++ b/tests/publishers/fixtures/email-ext005.yaml @@ -0,0 +1,17 @@ +publishers: + - email-ext: + recipients: foo@example.com, bar@example.com + reply-to: foo@example.com + from: lorem@ipsum.dolor + content-type: html + subject: Subject for Build ${BUILD_NUMBER} + body: The build has finished + attach-build-log: false + compress-log: false + attachments: "*/foo*.log" + always: true + unstable: true + matrix-trigger: only-configurations + presend-script: "cancel=true" + postsend-script: "cancel=true" + save-output: true diff --git a/tests/yamlparser/fixtures/template_override_project_level_defaults.plugins_info.yaml b/tests/yamlparser/fixtures/template_override_project_level_defaults.plugins_info.yaml new file mode 100644 index 000000000..f8e15c56b --- /dev/null +++ b/tests/yamlparser/fixtures/template_override_project_level_defaults.plugins_info.yaml @@ -0,0 +1,3 @@ +- longName: 'Extended Email Publisher' + shortName: 'email-ext' + version: "2.38"