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 @@ -4,7 +4,9 @@

/**
* @author charlie (Dmitry Baev).
* @deprecated scheduled to remove in 3.0.
*/
@Deprecated
public final class AllureUtils {

private AllureUtils() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Objects;

import static io.qameta.allure.AllureUtils.generateTestResultContainerName;
import static io.qameta.allure.AllureUtils.generateTestResultName;
import java.util.UUID;

/**
* @author charlie (Dmitry Baev).
Expand Down Expand Up @@ -76,4 +74,20 @@ private void createDirectories(final Path directory) {
throw new AllureResultsWriteException("Could not create Allure results directory", e);
}
}

private String generateTestResultName() {
return generateTestResultName(UUID.randomUUID().toString());
}

private String generateTestResultName(final String uuid) {
return uuid + AllureConstants.TEST_RESULT_FILE_SUFFIX;
}

private String generateTestResultContainerName() {
return generateTestResultContainerName(UUID.randomUUID().toString());
}

private String generateTestResultContainerName(final String uuid) {
return uuid + AllureConstants.TEST_RESULT_CONTAINER_FILE_SUFFIX;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,23 @@
import io.qameta.allure.Allure;
import io.qameta.allure.AllureLifecycle;
import io.qameta.allure.Step;
import io.qameta.allure.model.Parameter;
import io.qameta.allure.model.Status;
import io.qameta.allure.model.StepResult;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;

import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;

import static io.qameta.allure.util.AspectUtils.getName;
import static io.qameta.allure.util.AspectUtils.getParameters;
import static io.qameta.allure.util.AspectUtils.getParametersMap;
import static io.qameta.allure.util.NamingUtils.processNameTemplate;
import static io.qameta.allure.util.ResultsUtils.getStatus;
import static io.qameta.allure.util.ResultsUtils.getStatusDetails;

Expand All @@ -30,34 +33,44 @@ public class StepsAspects {

private static AllureLifecycle lifecycle;

@SuppressWarnings("PMD.UnnecessaryLocalBeforeReturn")
@Around("@annotation(io.qameta.allure.Step) && execution(* *(..))")
public Object step(final ProceedingJoinPoint joinPoint) throws Throwable {
@Pointcut("@annotation(io.qameta.allure.Step)")
public void withStepAnnotation() {
//pointcut body, should be empty
}

@Pointcut("execution(* *(..))")
public void anyMethod() {
//pointcut body, should be empty
}

@Before("anyMethod() && withStepAnnotation()")
public void stepStart(final JoinPoint joinPoint) {
final MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
final Step step = methodSignature.getMethod().getAnnotation(Step.class);

final String uuid = UUID.randomUUID().toString();
final String name = Optional.of(step.value())
.filter(v -> !v.isEmpty())
.map(value -> processNameTemplate(value, getParametersMap(methodSignature, joinPoint.getArgs())))
.orElse(methodSignature.getName());
final String name = getName(step.value(), methodSignature, joinPoint.getArgs());
final List<Parameter> parameters = getParameters(methodSignature, joinPoint.getArgs());

final StepResult result = new StepResult()
.setName(name)
.setParameters(getParameters(methodSignature, joinPoint.getArgs()));
.setParameters(parameters);

getLifecycle().startStep(uuid, result);
try {
final Object proceed = joinPoint.proceed();
getLifecycle().updateStep(uuid, s -> s.setStatus(Status.PASSED));
return proceed;
} catch (Throwable e) {
getLifecycle().updateStep(uuid, s -> s
.setStatus(getStatus(e).orElse(Status.BROKEN))
.setStatusDetails(getStatusDetails(e).orElse(null)));
throw e;
} finally {
getLifecycle().stopStep(uuid);
}
}

@AfterThrowing(pointcut = "anyMethod() && withStepAnnotation()", throwing = "e")
public void stepFailed(final Throwable e) {
getLifecycle().updateStep(s -> s
.setStatus(getStatus(e).orElse(Status.BROKEN))
.setStatusDetails(getStatusDetails(e).orElse(null)));
getLifecycle().stopStep();
}

@AfterReturning(pointcut = "anyMethod() && withStepAnnotation()")
public void stepStop() {
getLifecycle().updateStep(s -> s.setStatus(Status.PASSED));
getLifecycle().stopStep();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,15 @@

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import static io.qameta.allure.util.NamingUtils.processNameTemplate;

/**
* @author charlie (Dmitry Baev).
*/
Expand All @@ -22,12 +27,13 @@ private AspectUtils() {
throw new IllegalStateException("Do not instance");
}

public static Parameter[] getParameters(final MethodSignature signature, final Object... args) {
return IntStream.range(0, args.length).mapToObj(index -> {
final String name = signature.getParameterNames()[index];
final String value = objectToString(args[index]);
return new Parameter().setName(name).setValue(value);
}).toArray(Parameter[]::new);
public static String getName(final String nameTemplate,
final MethodSignature methodSignature,
final Object... args) {
return Optional.of(nameTemplate)
.filter(v -> !v.isEmpty())
.map(value -> processNameTemplate(value, getParametersMap(methodSignature, args)))
.orElseGet(methodSignature::getName);
}

public static Map<String, Object> getParametersMap(final MethodSignature signature, final Object... args) {
Expand All @@ -41,6 +47,14 @@ public static Map<String, Object> getParametersMap(final MethodSignature signatu
return params;
}

public static List<Parameter> getParameters(final MethodSignature signature, final Object... args) {
return IntStream.range(0, args.length).mapToObj(index -> {
final String name = signature.getParameterNames()[index];
final String value = objectToString(args[index]);
return new Parameter().setName(name).setValue(value);
}).collect(Collectors.toList());
}

public static String objectToString(final Object object) {
try {
if (Objects.nonNull(object) && (object instanceof Object[])) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Arrays;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
Expand All @@ -15,6 +14,7 @@
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

import static io.qameta.allure.util.AspectUtils.objectToString;
import static org.joor.Reflect.on;

/**
Expand Down Expand Up @@ -77,9 +77,6 @@ private static String extractProperties(final Object object, final String[] part
final Object child = on(object).get(parts[index]);
return extractProperties(child, parts, index + 1);
}
if (object instanceof Object[]) {
return Arrays.toString((Object[]) object);
}
return String.valueOf(object);
return objectToString(object);
}
}

This file was deleted.

151 changes: 0 additions & 151 deletions allure-java-commons/src/test/java/io/qameta/allure/StepsTest.java

This file was deleted.

Loading