Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public boolean process(final Set<? extends TypeElement> annotations, final Round
.map(param -> param.asType().toString()).collect(Collectors.toList());
final String name = el.getSimpleName().toString();

final String hash = generateMethodSignatureHash(name, typeParams);
final String hash = generateMethodSignatureHash(el.getEnclosingElement().toString(), name, typeParams);
try {
final FileObject file = filer.createResource(StandardLocation.CLASS_OUTPUT,
"allureDescriptions", hash);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class ProcessDescriptionsTest {

@Test
public void captureDescriptionTest() {
final String expectedMethodSignatureHash = "-tDqkuCipddkDhc3utZvVw==";
final String expectedMethodSignatureHash = "3bfd90093a92af33104abb88bc989a90";

JavaFileObject source = JavaFileObjects.forSourceLines(
"io.qameta.allure.descriptions.test.DescriptionSample",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,11 @@ public static String getLinkTypePatternPropertyName(final String type) {
return String.format("allure.link.%s.pattern", type);
}

public static String generateMethodSignatureHash(final String methodName, final List<String> parameterTypes) {
public static String generateMethodSignatureHash(final String className,
final String methodName,
final List<String> parameterTypes) {
final MessageDigest md = getMd5Digest();
md.update(className.getBytes(StandardCharsets.UTF_8));
md.update(methodName.getBytes(StandardCharsets.UTF_8));
parameterTypes.stream()
.map(string -> string.getBytes(StandardCharsets.UTF_8))
Expand Down Expand Up @@ -263,7 +266,10 @@ public static void processDescription(final ClassLoader classLoader,
.map(Class::getTypeName)
.collect(Collectors.toList());

final String signatureHash = generateMethodSignatureHash(name, parameterTypes);
final String signatureHash = generateMethodSignatureHash(
method.getDeclaringClass().getName(),
name,
parameterTypes);

readResource(classLoader, ALLURE_DESCRIPTIONS_PACKAGE + signatureHash)
.map(desc -> separateLines() ? desc.replace("\n", "<br />") : desc)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,30 @@ public void descriptionsBefores() {
.containsOnly(beforeClassDescription, beforeMethodDescription);
}

@Feature("Descriptions")
@Test(description = "Javadoc descriptions of befores with the same names")
public void javadocDescriptionsOfBeforesWithTheSameNames() {
runTestNgSuites("suites/descriptions-test-two-classes.xml");
List<TestResultContainer> testContainers = results.getTestContainers();

checkBeforeJavadocDescriptions(testContainers, "io.qameta.allure.testng.samples.DescriptionsTest.setUpMethod", "Before method description");
checkBeforeJavadocDescriptions(testContainers, "io.qameta.allure.testng.samples.DescriptionsTest", "Before class description");

checkBeforeJavadocDescriptions(testContainers, "io.qameta.allure.testng.samples.DescriptionsAnotherTest.setUpMethod", "Before method description from DescriptionsAnotherTest");
checkBeforeJavadocDescriptions(testContainers, "io.qameta.allure.testng.samples.DescriptionsAnotherTest", "Before class description from DescriptionsAnotherTest");
}

@Feature("Descriptions")
@Test(description = "Javadoc descriptions of tests with the same names")
public void javadocDescriptionsOfTestsWithTheSameNames() {
runTestNgSuites("suites/descriptions-test-two-classes.xml");
List<TestResult> testResults = results.getTestResults();

checkTestJavadocDescriptions(testResults, "io.qameta.allure.testng.samples.DescriptionsTest.test", "Sample test description");

checkTestJavadocDescriptions(testResults, "io.qameta.allure.testng.samples.DescriptionsAnotherTest.test", "Sample test description from DescriptionsAnotherTest");
}

@Feature("Failed tests")
@Story("Failed")
@Test(description = "Test failing by assertion")
Expand Down Expand Up @@ -980,4 +1004,26 @@ private static void assertBeforeFixtures(String containerName, List<TestResultCo
.flatExtracting(FixtureResult::getName)
.containsExactly(befores);
}

@Step("Check that before fixtures javadoc descriptions refer to correct fixture methods")
private static void checkBeforeJavadocDescriptions(List<TestResultContainer> containers, String methodReference, String expectedDescriptionHtml) {
assertThat(containers).as("Test containers has not been written")
.isNotEmpty()
.filteredOn(container -> !container.getBefores().isEmpty())
.filteredOn(container -> container.getName().equals(methodReference))
.extracting(container -> container.getBefores().get(0).getDescriptionHtml().trim())
.as("Javadoc descriptions of befores have been processed incorrectly")
.containsOnly(expectedDescriptionHtml);
}

@Step("Check that javadoc descriptions of tests refer to correct test methods")
private static void checkTestJavadocDescriptions(List<TestResult> results, String methodReference, String expectedDescriptionHtml) {
assertThat(results).as("Test results has not been written")
.isNotEmpty()
.filteredOn(result -> result.getFullName().equals(methodReference))
.extracting(result -> result.getDescriptionHtml().trim())
.as("Javadoc descriptions of befores have been processed incorrectly")
.containsOnly(expectedDescriptionHtml);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package io.qameta.allure.testng.samples;

import io.qameta.allure.Description;
import io.qameta.allure.Step;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

/**
* @author Sergey Potanin sspotanin@gmail.com
*/
public class DescriptionsAnotherTest {

/**
* Before class description from DescriptionsAnotherTest
*/
@BeforeClass
@Description(useJavaDoc = true)
public void setUpClass() {

}

/**
* Before method description from DescriptionsAnotherTest
*/
@BeforeMethod
@Description(useJavaDoc = true)
public void setUpMethod() {

}

/**
* Sample test description from DescriptionsAnotherTest
*/
@Description(useJavaDoc = true)
@Test
public void test() {
step();
}

/**
* Sample test description from DescriptionsAnotherTest
* - next line
* - another line
*/
@Description(useJavaDoc = true)
@Test
public void testSeparated() {
step();
}

/**
* Sample step description from DescriptionsAnotherTest
*/
@Description(useJavaDoc = true)
@Step("Step one")
private void step() {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Descriptions suite">
<test name="Descriptions test">
<classes>
<class name="io.qameta.allure.testng.samples.DescriptionsTest"/>
<class name="io.qameta.allure.testng.samples.DescriptionsAnotherTest"/>
</classes>
</test>
<listeners>
<listener class-name="io.qameta.allure.testng.AllureTestNg"/>
</listeners>
</suite>