Skip to content

Commit 81a9307

Browse files
committed
Improve API of SpecOrderer.orderFeatures
Use Collection<FeatureInfo> method parameter instead of Collection<SpecInfo>, streamlining method implementations by factoring out looping over SpecInfos into SpecOrderer.process. Relates to #1443.
1 parent 7cf5419 commit 81a9307

File tree

4 files changed

+15
-17
lines changed

4 files changed

+15
-17
lines changed

spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/AnnotatationBasedSpecOrderer.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import spock.lang.Order;
66

77
import java.util.Collection;
8-
import java.util.concurrent.atomic.AtomicInteger;
98

109
public class AnnotatationBasedSpecOrderer extends SpecOrderer {
1110
public AnnotatationBasedSpecOrderer() {
@@ -21,12 +20,10 @@ protected void orderSpecs(Collection<SpecInfo> specs) {
2120
}
2221

2322
@Override
24-
protected void orderFeatures(Collection<SpecInfo> specs) {
25-
for (SpecInfo spec : specs) {
26-
for (FeatureInfo feature : spec.getAllFeatures()) {
27-
Order orderAnnotation = feature.getFeatureMethod().getAnnotation(Order.class);
28-
feature.setExecutionOrder(orderAnnotation == null ? 0 : orderAnnotation.value());
29-
}
23+
protected void orderFeatures(Collection<FeatureInfo> features) {
24+
for (FeatureInfo feature : features) {
25+
Order orderAnnotation = feature.getFeatureMethod().getAnnotation(Order.class);
26+
feature.setExecutionOrder(orderAnnotation == null ? 0 : orderAnnotation.value());
3027
}
3128
}
3229
}

spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/DefaultSpecOrderer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.spockframework.runtime.extension.builtin.orderer;
22

3+
import org.spockframework.runtime.model.FeatureInfo;
34
import org.spockframework.runtime.model.SpecInfo;
45

56
import java.util.Collection;
@@ -13,5 +14,5 @@ public DefaultSpecOrderer() {
1314
protected void orderSpecs(Collection<SpecInfo> specs) { }
1415

1516
@Override
16-
protected void orderFeatures(Collection<SpecInfo> specs) { }
17+
protected void orderFeatures(Collection<FeatureInfo> features) { }
1718
}

spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/RandomSpecOrderer.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import java.util.Collection;
77
import java.util.Random;
8-
import java.util.concurrent.atomic.AtomicInteger;
98

109
public class RandomSpecOrderer extends SpecOrderer {
1110
private final Random random;
@@ -30,10 +29,8 @@ protected void orderSpecs(Collection<SpecInfo> specs) {
3029
}
3130

3231
@Override
33-
protected void orderFeatures(Collection<SpecInfo> specs) {
34-
for (SpecInfo spec : specs) {
35-
for (FeatureInfo feature : spec.getAllFeatures())
36-
feature.setExecutionOrder(random.nextInt());
37-
}
32+
protected void orderFeatures(Collection<FeatureInfo> features) {
33+
for (FeatureInfo feature : features)
34+
feature.setExecutionOrder(random.nextInt());
3835
}
3936
}

spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/SpecOrderer.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@ public SpecOrderer(boolean orderSpecs, boolean orderFeatures) {
1818
public void process(Collection<SpecInfo> specs) {
1919
if (orderSpecs)
2020
orderSpecs(specs);
21-
if (orderFeatures)
22-
orderFeatures(specs);
21+
if (!orderFeatures)
22+
return;
23+
for (SpecInfo spec : specs)
24+
orderFeatures(spec.getAllFeatures());
2325
}
2426

2527
protected abstract void orderSpecs(Collection<SpecInfo> specs);
26-
protected abstract void orderFeatures(Collection<SpecInfo> specs);
28+
29+
protected abstract void orderFeatures(Collection<FeatureInfo> features);
2730

2831
public boolean isOrderSpecs() {
2932
return orderSpecs;

0 commit comments

Comments
 (0)