From 81a9307728fdd298500b71741b59897b42bccc84 Mon Sep 17 00:00:00 2001 From: Alexander Kriegisch Date: Sun, 16 Apr 2023 15:31:16 +0200 Subject: [PATCH] Improve API of SpecOrderer.orderFeatures Use Collection method parameter instead of Collection, streamlining method implementations by factoring out looping over SpecInfos into SpecOrderer.process. Relates to #1443. --- .../builtin/orderer/AnnotatationBasedSpecOrderer.java | 11 ++++------- .../extension/builtin/orderer/DefaultSpecOrderer.java | 3 ++- .../extension/builtin/orderer/RandomSpecOrderer.java | 9 +++------ .../extension/builtin/orderer/SpecOrderer.java | 9 ++++++--- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/AnnotatationBasedSpecOrderer.java b/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/AnnotatationBasedSpecOrderer.java index ac234e3677..953ee1973b 100644 --- a/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/AnnotatationBasedSpecOrderer.java +++ b/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/AnnotatationBasedSpecOrderer.java @@ -5,7 +5,6 @@ import spock.lang.Order; import java.util.Collection; -import java.util.concurrent.atomic.AtomicInteger; public class AnnotatationBasedSpecOrderer extends SpecOrderer { public AnnotatationBasedSpecOrderer() { @@ -21,12 +20,10 @@ protected void orderSpecs(Collection specs) { } @Override - protected void orderFeatures(Collection specs) { - for (SpecInfo spec : specs) { - for (FeatureInfo feature : spec.getAllFeatures()) { - Order orderAnnotation = feature.getFeatureMethod().getAnnotation(Order.class); - feature.setExecutionOrder(orderAnnotation == null ? 0 : orderAnnotation.value()); - } + protected void orderFeatures(Collection features) { + for (FeatureInfo feature : features) { + Order orderAnnotation = feature.getFeatureMethod().getAnnotation(Order.class); + feature.setExecutionOrder(orderAnnotation == null ? 0 : orderAnnotation.value()); } } } diff --git a/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/DefaultSpecOrderer.java b/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/DefaultSpecOrderer.java index 7d115791ac..b1efc71d51 100644 --- a/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/DefaultSpecOrderer.java +++ b/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/DefaultSpecOrderer.java @@ -1,5 +1,6 @@ package org.spockframework.runtime.extension.builtin.orderer; +import org.spockframework.runtime.model.FeatureInfo; import org.spockframework.runtime.model.SpecInfo; import java.util.Collection; @@ -13,5 +14,5 @@ public DefaultSpecOrderer() { protected void orderSpecs(Collection specs) { } @Override - protected void orderFeatures(Collection specs) { } + protected void orderFeatures(Collection features) { } } diff --git a/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/RandomSpecOrderer.java b/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/RandomSpecOrderer.java index 186a6a9482..5774c06107 100644 --- a/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/RandomSpecOrderer.java +++ b/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/RandomSpecOrderer.java @@ -5,7 +5,6 @@ import java.util.Collection; import java.util.Random; -import java.util.concurrent.atomic.AtomicInteger; public class RandomSpecOrderer extends SpecOrderer { private final Random random; @@ -30,10 +29,8 @@ protected void orderSpecs(Collection specs) { } @Override - protected void orderFeatures(Collection specs) { - for (SpecInfo spec : specs) { - for (FeatureInfo feature : spec.getAllFeatures()) - feature.setExecutionOrder(random.nextInt()); - } + protected void orderFeatures(Collection features) { + for (FeatureInfo feature : features) + feature.setExecutionOrder(random.nextInt()); } } diff --git a/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/SpecOrderer.java b/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/SpecOrderer.java index 70bff7262a..13e33c5540 100644 --- a/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/SpecOrderer.java +++ b/spock-core/src/main/java/org/spockframework/runtime/extension/builtin/orderer/SpecOrderer.java @@ -18,12 +18,15 @@ public SpecOrderer(boolean orderSpecs, boolean orderFeatures) { public void process(Collection specs) { if (orderSpecs) orderSpecs(specs); - if (orderFeatures) - orderFeatures(specs); + if (!orderFeatures) + return; + for (SpecInfo spec : specs) + orderFeatures(spec.getAllFeatures()); } protected abstract void orderSpecs(Collection specs); - protected abstract void orderFeatures(Collection specs); + + protected abstract void orderFeatures(Collection features); public boolean isOrderSpecs() { return orderSpecs;