diff --git a/CHANGELOG.md b/CHANGELOG.md index 5be372a8..57bcc793 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Changelog ## [Unreleased] +### Added +- `Description` annotation, by @HardNorth +- `DisplayName` annotation, by @HardNorth +- `TmsLink` and `TmsLinks` annotations, by @HardNorth +- `Issue` and `ExternalIssue` annotations, by @HardNorth + - `rp.bts.project`, `rp.bts.url`, `rp.bts.issue.url`, `rp.bts.issue.fail` properties, which controls these annotations, by @HardNorth + - `TestFilter`, `TestNameFilter`, `TestParamFilter` annotations to control Issue apply on Parameterized and Dynamic Tests, by @HardNorth +- `ReportPortalClient.getProjectSettings` method, by @HardNorth ## [5.2.5] ### Added diff --git a/README.md b/README.md index 7ec64d04..6200fe4c 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![Maven Central](https://img.shields.io/maven-central/v/com.epam.reportportal/client-java.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/com.epam.reportportal/client-java) [![CI Build](https://github.com/reportportal/client-java/actions/workflows/ci.yml/badge.svg)](https://github.com/reportportal/client-java/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/reportportal/client-java/branch/develop/graph/badge.svg?token=IVTys0o4JT)](https://codecov.io/gh/reportportal/client-java) -[![Join Slack chat!](https://slack.epmrpp.reportportal.io/badge.svg)](https://slack.epmrpp.reportportal.io/) +[![Join Slack chat!](https://img.shields.io/badge/slack-join-brightgreen.svg)](https://slack.epmrpp.reportportal.io/) [![stackoverflow](https://img.shields.io/badge/reportportal-stackoverflow-orange.svg?style=flat)](http://stackoverflow.com/questions/tagged/reportportal) [![Build with Love](https://img.shields.io/badge/build%20with-❤%EF%B8%8F%E2%80%8D-lightgrey.svg)](http://reportportal.io?style=flat) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) diff --git a/README_TEMPLATE.md b/README_TEMPLATE.md index 05aaa930..96806176 100644 --- a/README_TEMPLATE.md +++ b/README_TEMPLATE.md @@ -7,7 +7,7 @@ [![Maven Central](https://img.shields.io/maven-central/v/com.epam.reportportal/client-java.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/com.epam.reportportal/client-java) [![CI Build](https://github.com/reportportal/client-java/actions/workflows/ci.yml/badge.svg)](https://github.com/reportportal/client-java/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/reportportal/client-java/branch/develop/graph/badge.svg?token=IVTys0o4JT)](https://codecov.io/gh/reportportal/client-java) -[![Join Slack chat!](https://slack.epmrpp.reportportal.io/badge.svg)](https://slack.epmrpp.reportportal.io/) +[![Join Slack chat!](https://img.shields.io/badge/slack-join-brightgreen.svg)](https://slack.epmrpp.reportportal.io/) [![stackoverflow](https://img.shields.io/badge/reportportal-stackoverflow-orange.svg?style=flat)](http://stackoverflow.com/questions/tagged/reportportal) [![Build with Love](https://img.shields.io/badge/build%20with-❤%EF%B8%8F%E2%80%8D-lightgrey.svg)](http://reportportal.io?style=flat) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) diff --git a/build.gradle b/build.gradle index 377351ed..a9e4268a 100644 --- a/build.gradle +++ b/build.gradle @@ -80,7 +80,7 @@ dependencies { exclude group: 'org.hamcrest' } testImplementation 'org.apache.commons:commons-io:1.3.2' - testImplementation 'com.epam.reportportal:agent-java-test-utils:0.0.2' + testImplementation 'com.epam.reportportal:agent-java-test-utils:0.0.3' } test { diff --git a/src/main/java/com/epam/reportportal/annotations/Description.java b/src/main/java/com/epam/reportportal/annotations/Description.java new file mode 100644 index 00000000..eef28f15 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/Description.java @@ -0,0 +1,38 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * If put on a method or constructor, or class, overrides or set corresponding Test Item description on ReportPortal. + * This annotation should be handled in priority to other mechanisms of existing test frameworks. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.TYPE }) +public @interface Description { + + /** + * Test Item description as a simple String. + * + * @return new description for a Test Item + */ + String value(); +} diff --git a/src/main/java/com/epam/reportportal/annotations/DisplayName.java b/src/main/java/com/epam/reportportal/annotations/DisplayName.java new file mode 100644 index 00000000..633a4e17 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/DisplayName.java @@ -0,0 +1,38 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * If put on a method or constructor, or class, overrides corresponding Test Item name on ReportPortal. + * This annotation should be handled in priority to other mechanisms of existing test frameworks. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.TYPE }) +public @interface DisplayName { + + /** + * Test Item name as a simple String. + * + * @return new name for a Test Item + */ + String value(); +} diff --git a/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java b/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java new file mode 100644 index 00000000..3310b3ca --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java @@ -0,0 +1,60 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Link current Issue with an Issue posted in External Bug Tracking System. This annotation designed to use within {@link Issue} annotation + * only and does not allow to add it to any other target. + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({}) +public @interface ExternalIssue { + /** + * External System Issue ID + * + * @return Issue ID + */ + String value(); + + /** + * Optional, use custom Bug Tracking System URL instead of one which is set in `reportportal.properties` file. + * + * @return Bug Tracking System URL + */ + String btsUrl() default ""; + + /** + * Optional, use custom Bug Tracking System Project name instead of one which is set in `reportportal.properties` file. + * + * @return Bug Tracking System Project name + */ + String btsProject() default ""; + + /** + * Optional, use custom Bug Tracking System Issue URL pattern instead of one which is set in `reportportal.properties` file. Use + * {issue_id} mark to put it into the result URL. + * + * @return Bug Tracking System Issue URL pattern + */ + String urlPattern() default ""; +} diff --git a/src/main/java/com/epam/reportportal/annotations/Issue.java b/src/main/java/com/epam/reportportal/annotations/Issue.java new file mode 100644 index 00000000..d59b0fa5 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/Issue.java @@ -0,0 +1,60 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.*; + +/** + * This annotation supposed to automatically link failed test items a specific Issue on ReportPortal. + */ +@Documented +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +@Repeatable(Issues.class) +public @interface Issue { + /** + * Type (Locator), Short Name (Abbreviation) or Long Name (Defect name) (specified by priority) of an Issue on ReportPortal for + * the current project. If there is no such issue found in Project Setting the value will be used "as is" and sent as + * Issue Type (Locator). + * + * @return Type (Locator), Short Name (Abbreviation) or Long Name (Defect name) of an Issue + */ + String value(); + + /** + * Arbitrary text describing the issue. + * + * @return issue description + */ + String comment() default ""; + + /** + * Links to External System where this issue is located. + * + * @return External Issue describing object + */ + ExternalIssue[] external() default {}; + + /** + * For Parameterized and Dynamic tests select certain test for Issue applying using filters by certain criteria. Each additional filter + * applies to the set of tests using logical "AND". + * + * @return filter list + */ + TestFilter[] filter() default {}; +} diff --git a/src/main/java/com/epam/reportportal/annotations/Issues.java b/src/main/java/com/epam/reportportal/annotations/Issues.java new file mode 100644 index 00000000..2086db4e --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/Issues.java @@ -0,0 +1,30 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.*; + +/** + * Gathering annotation for {@link Issue} + */ +@Documented +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface Issues { + Issue[] value(); +} diff --git a/src/main/java/com/epam/reportportal/annotations/ParameterKey.java b/src/main/java/com/epam/reportportal/annotations/ParameterKey.java index 1c401989..856daafa 100644 --- a/src/main/java/com/epam/reportportal/annotations/ParameterKey.java +++ b/src/main/java/com/epam/reportportal/annotations/ParameterKey.java @@ -21,23 +21,16 @@ import java.lang.annotation.Target; /** - * Used in parametrized tests. ReportPortal waiting test parameters - * in key - value style. Using the annotation for method parameter + * Used in parametrized tests. ReportPortal waiting test parameters in key - value style. Using the annotation for method parameter * the specific key can be provided. - * - * @author Pavel Bortnik - * @since ReportPortal Api v3.1.0 */ - @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.PARAMETER }) public @interface ParameterKey { - /** * Returns parameter key value * * @return key value */ String value() default ""; - } diff --git a/src/main/java/com/epam/reportportal/annotations/TemplateConfig.java b/src/main/java/com/epam/reportportal/annotations/TemplateConfig.java index 45f096f2..dcaf1855 100644 --- a/src/main/java/com/epam/reportportal/annotations/TemplateConfig.java +++ b/src/main/java/com/epam/reportportal/annotations/TemplateConfig.java @@ -26,7 +26,7 @@ * Template configuration. Required for customizing representation of the parsed collections and arrays. * {@link TemplateConfig#methodNameTemplate()} required to set the current method name template to be included in the result value to * prevent situations when the method argument has the same name as a default {@link TemplateConfiguration#METHOD_NAME_TEMPLATE} - * + *

* {@link TemplateConfig#selfNameTemplate()} required to set the current object name template to be included in the result value to * prevent situations when the method argument has the same name as a default {@link TemplateConfiguration#SELF_NAME_TEMPLATE} */ diff --git a/src/main/java/com/epam/reportportal/annotations/TestFilter.java b/src/main/java/com/epam/reportportal/annotations/TestFilter.java new file mode 100644 index 00000000..9ab33ed8 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TestFilter.java @@ -0,0 +1,45 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Link current Issue with a specific Parameterized or Dynamic test by applying filters. + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({}) +public @interface TestFilter { + + /** + * Specify Test Name filters to select certain test for {@link Issue} applying, suitable for dynamic tests. + * + * @return Test Name filters + */ + TestNameFilter[] name() default {}; + + /** + * Specify Test Parameter filters to select certain test for {@link Issue} applying, suitable for parameterized tests. + * + * @return Test Name filters + */ + TestParamFilter[] param() default {}; +} diff --git a/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java b/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java new file mode 100644 index 00000000..379d056f --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java @@ -0,0 +1,43 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +/** + * Filter Test Set by Test Name. + */ +public @interface TestNameFilter { + /** + * Select a test which name starts with specified String. + * + * @return required prefix + */ + String startsWith() default ""; + + /** + * Select a test which name ends with specified String. + * + * @return required postfix + */ + String endsWith() default ""; + + /** + * Select a test which name should contain specified String. + * + * @return required contents + */ + String contains() default ""; +} diff --git a/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java b/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java new file mode 100644 index 00000000..977c4051 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java @@ -0,0 +1,77 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +/** + * Filter Test Set by Parameter. + */ +public @interface TestParamFilter { + /** + * Parameter index to which this filter should be applied. If it's not specified then the filter try to match every parameter. + * + * @return parameter index + */ + int paramIndex() default -1; + + /** + * Select a test parameter which name starts with specified String. Designed to use with {@link ParameterKey} annotation, since there is + * no parameter names in Java runtime. + * + * @return required prefix + */ + String nameStartsWith() default ""; + + /** + * Select a test parameter which name ends with specified String. Designed to use with {@link ParameterKey} annotation, since there is + * no parameter names in Java runtime. + * + * @return required prefix + */ + String nameEndsWith() default ""; + + /** + * Select a test parameter which name should contain specified String. Designed to use with {@link ParameterKey} annotation, since there + * is no parameter names in Java runtime. + * + * @return required prefix + */ + String nameContains() default ""; + + /** + * Select a test parameter which value starts with specified String. Non-string parameter values convert with {@link Object#toString()}, + * method. + * + * @return required prefix + */ + String valueStartsWith() default ""; + + /** + * Select a test parameter which value ends with specified String. Non-string parameter values convert with {@link Object#toString()}, + * method. + * + * @return required prefix + */ + String valueEndsWith() default ""; + + /** + * Select a test parameter which value should contain specified String. Non-string parameter values convert with + * {@link Object#toString()}, method. + * + * @return required prefix + */ + String valueContains() default ""; +} diff --git a/src/main/java/com/epam/reportportal/annotations/TmsLink.java b/src/main/java/com/epam/reportportal/annotations/TmsLink.java new file mode 100644 index 00000000..f94d25b6 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TmsLink.java @@ -0,0 +1,52 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.*; + +/** + * Add a link to a Test Case located in external Test Management System. + * This annotation appends a hypertext link to a Test Case into the Test Item description. + */ +@Documented +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.TYPE }) +@Repeatable(TmsLinks.class) +public @interface TmsLink { + + /** + * TMS ticket ID. + * + * @return ID as string + */ + String value(); + + /** + * Link text pattern, accepts 'tms_id' parameter. + * + * @return formatted link text + */ + String linkTextPattern() default "TMS #{tms_id}"; + + /** + * Link URL pattern, accepts 'tms_id' parameter. + * + * @return link to a TMS ticket + */ + String urlPattern() default ""; +} diff --git a/src/main/java/com/epam/reportportal/annotations/TmsLinks.java b/src/main/java/com/epam/reportportal/annotations/TmsLinks.java new file mode 100644 index 00000000..f762f96a --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TmsLinks.java @@ -0,0 +1,30 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.*; + +/** + * Gathering annotation for {@link TmsLink} + */ +@Documented +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.TYPE }) +public @interface TmsLinks { + TmsLink[] value(); +} diff --git a/src/main/java/com/epam/reportportal/annotations/attribute/Attributes.java b/src/main/java/com/epam/reportportal/annotations/attribute/Attributes.java index 80fe6ae5..5e509e38 100644 --- a/src/main/java/com/epam/reportportal/annotations/attribute/Attributes.java +++ b/src/main/java/com/epam/reportportal/annotations/attribute/Attributes.java @@ -28,7 +28,7 @@ * @see MultiValueAttribute */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD, ElementType.TYPE}) +@Target({ ElementType.METHOD, ElementType.TYPE }) @Inherited public @interface Attributes { diff --git a/src/main/java/com/epam/reportportal/service/ReportPortalClient.java b/src/main/java/com/epam/reportportal/service/ReportPortalClient.java index 90d8aa91..69c8d3bf 100644 --- a/src/main/java/com/epam/reportportal/service/ReportPortalClient.java +++ b/src/main/java/com/epam/reportportal/service/ReportPortalClient.java @@ -19,6 +19,7 @@ import com.epam.ta.reportportal.ws.model.item.ItemCreatedRS; import com.epam.ta.reportportal.ws.model.launch.*; import com.epam.ta.reportportal.ws.model.log.SaveLogRQ; +import com.epam.ta.reportportal.ws.model.project.config.ProjectSettingsResource; import io.reactivex.Maybe; import okhttp3.MultipartBody; import retrofit2.http.*; @@ -60,4 +61,7 @@ public interface ReportPortalClient { @GET("v1/{projectName}/item/uuid/{itemUuid}") Maybe getItemByUuid(@Path("itemUuid") String itemUuid); + + @GET("v1/{projectName}/settings") + Maybe getProjectSettings(); } diff --git a/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java b/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java index 1fad7de5..4708f36b 100644 --- a/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java +++ b/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java @@ -15,6 +15,9 @@ */ package com.epam.reportportal.utils.properties; +import com.epam.reportportal.annotations.ExternalIssue; +import com.epam.reportportal.annotations.Issue; + /** * Describe properties names */ @@ -113,7 +116,29 @@ public enum ListenerProperty { TRUNCATE_FIELDS("rp.truncation.field", false), TRUNCATE_REPLACEMENT("rp.truncation.replacement", false), TRUNCATE_ITEM_NAME_LIMIT("rp.truncation.item.name.limit", false), - TRUNCATE_ATTRIBUTE_LIMIT("rp.truncation.attribute.limit", false); + TRUNCATE_ATTRIBUTE_LIMIT("rp.truncation.attribute.limit", false), + + // Issue reporting properties + /** + * Bug Tracking System Project name to use along with {@link ExternalIssue} annotation. Should be the same as in corresponding + * integration. + */ + BTS_PROJECT("rp.bts.project", false), + /** + * Bug Tracking System base URL to use along with {@link ExternalIssue} annotation. Should be the same as in corresponding integration. + */ + BTS_URL("rp.bts.url", false), + /** + * Bug Tracking System URL Pattern for Issues to use along with {@link ExternalIssue} annotation. Use {issue_id} and + * {bts_project} placeholders to mark a place where to put Issue ID and Bug Tracking System Project name. The result URL + * should point on the Issue. + */ + BTS_ISSUE_URL("rp.bts.issue.url", false), + /** + * Fail tests marked with {@link Issue} annotation if they passed. Default value: true. Designed to not miss the moment + * when the issue got fixed but test is still marked by annotation. + */ + BTS_ISSUE_FAIL("rp.bts.issue.fail", false); //formatter:on private final String propertyName; diff --git a/src/main/resources/META-INF/aop-ajc.xml b/src/main/resources/META-INF/aop-ajc.xml index 4f45411f..9bfa23eb 100644 --- a/src/main/resources/META-INF/aop-ajc.xml +++ b/src/main/resources/META-INF/aop-ajc.xml @@ -1,4 +1,21 @@ + + +