Skip to content

Commit

Permalink
Starting refactoring towards chain of execution contexts
Browse files Browse the repository at this point in the history
  • Loading branch information
jlink committed Nov 14, 2015
1 parent 902b0ae commit 3222ab7
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 14 deletions.
Expand Up @@ -36,6 +36,10 @@ default Optional<Throwable> getTestException() {
return Optional.empty();
}

default Optional<TestExecutionContext> getParent() {
return Optional.empty();
}

String getDisplayName();

Map<String, Object> getAttributes();
Expand Down
Expand Up @@ -23,6 +23,7 @@
import org.junit.gen5.engine.TestPlanSpecificationElement;
import org.junit.gen5.engine.junit5.descriptor.ClassTestDescriptor;
import org.junit.gen5.engine.junit5.descriptor.SpecificationResolver;
import org.junit.gen5.engine.junit5.execution.EngineTestExecutionNode;
import org.junit.gen5.engine.junit5.execution.TestExecutionNode;
import org.junit.gen5.engine.junit5.execution.TestExecutionNodeResolver;

Expand Down Expand Up @@ -66,22 +67,26 @@ private void applyEngineFilters(List<EngineFilter> engineFilters, EngineDescript
}

@Override
public void execute(EngineExecutionContext context) {
public void execute(EngineExecutionContext request) {

TestExecutionNode rootNode = buildExecutionTree(context.getEngineDescriptor());
rootNode.execute(context);
EngineTestExecutionNode executionNode = buildExecutionTree(request.getEngineDescriptor());
executionNode.executeRequest(request);
}

private TestExecutionNode buildExecutionTree(EngineDescriptor engineDescriptor) {
return buildExecutionNode(engineDescriptor, null);
private EngineTestExecutionNode buildExecutionTree(EngineDescriptor engineDescriptor) {
EngineTestExecutionNode root = new EngineTestExecutionNode(engineDescriptor);
buildChildrenNodes(engineDescriptor, root);
return root;
}

private TestExecutionNode buildExecutionNode(TestDescriptor descriptor, TestExecutionNode parent) {
private void buildExecutionNode(TestDescriptor descriptor, TestExecutionNode parent) {
TestExecutionNode newNode = TestExecutionNodeResolver.forDescriptor(descriptor);
if (parent != null)
parent.addChild(newNode);
descriptor.getChildren().stream().forEach(testDescriptor -> buildExecutionNode(testDescriptor, newNode));
return newNode;
parent.addChild(newNode);
buildChildrenNodes(newNode.getTestDescriptor(), newNode);
}

private void buildChildrenNodes(TestDescriptor parentDescriptor, TestExecutionNode parent) {
parentDescriptor.getChildren().stream().forEach(testDescriptor -> buildExecutionNode(testDescriptor, parent));
}

}
Expand Up @@ -10,14 +10,14 @@

package org.junit.gen5.engine.junit5.execution;

import static org.junit.gen5.commons.util.AnnotationUtils.*;
import static org.junit.gen5.commons.util.AnnotationUtils.findAnnotatedMethods;
import static org.junit.gen5.commons.util.ReflectionUtils.*;

import java.lang.reflect.Method;

import org.junit.gen5.api.AfterAll;
import org.junit.gen5.api.BeforeAll;
import org.junit.gen5.commons.util.ReflectionUtils.MethodSortOrder;
import org.junit.gen5.commons.util.ReflectionUtils.*;
import org.junit.gen5.engine.EngineExecutionContext;
import org.junit.gen5.engine.junit5.descriptor.ClassTestDescriptor;
import org.opentestalliance.TestSkippedException;
Expand Down
Expand Up @@ -18,11 +18,11 @@
* @author Sam Brannen
* @since 5.0
*/
class EngineTestExecutionNode extends TestExecutionNode {
public class EngineTestExecutionNode extends TestExecutionNode {

private final EngineDescriptor testDescriptor;

EngineTestExecutionNode(EngineDescriptor testDescriptor) {
public EngineTestExecutionNode(EngineDescriptor testDescriptor) {
this.testDescriptor = testDescriptor;
}

Expand All @@ -38,4 +38,8 @@ public void execute(EngineExecutionContext context) {
}
}

public void executeRequest(EngineExecutionContext context) {
execute(context);
}

}

0 comments on commit 3222ab7

Please sign in to comment.