Skip to content

Commit

Permalink
Test run listeners getting notified for skipped specs/features
Browse files Browse the repository at this point in the history
  • Loading branch information
kriegaex committed May 6, 2023
1 parent 084ddec commit ff50d9c
Showing 1 changed file with 66 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@
package org.spockframework.smoke.extension

import org.spockframework.EmbeddedSpecification
import org.spockframework.runtime.AbstractRunListener
import org.spockframework.runtime.InvalidSpecException
import org.spockframework.runtime.extension.IGlobalExtension
import org.spockframework.runtime.model.FeatureInfo
import org.spockframework.runtime.model.SpecInfo
import spock.lang.Issue

/**
Expand Down Expand Up @@ -188,4 +192,66 @@ class Test extends Bar {
false | 1 + 0 + 3 + 4 | 1
true | 1 | 3
}

static ThreadLocal<SkipListener> injectedSkipListener = ThreadLocal.withInitial { new SkipListener() }

static class SkipReporterExtension implements IGlobalExtension {
@Override
void visitSpec(SpecInfo spec) {
spec.addListener(injectedSkipListener.get())
}
}

static class SkipListener extends AbstractRunListener {
List<String> skipMessages = []

@Override
void specSkipped(SpecInfo spec) {
skipMessages << spec.displayName
}

@Override
void featureSkipped(FeatureInfo feature) {
skipMessages << feature.displayName
}

void clearSkipMessages() {
skipMessages.clear()
}
}

@Issue("https://github.com/spockframework/spock/issues/1662")
def "ignored spec triggers run listener"() {
when:
injectedSkipListener.get().clearSkipMessages()
runner.extensionClasses = [SkipReporterExtension]
runner.runWithImports("""
@Ignore
class Foo extends Specification {
def foo() { expect: false }
def bar() { expect: false }
}
""")

then:
injectedSkipListener.get().skipMessages == ['Foo']
}

@Issue("https://github.com/spockframework/spock/issues/1662")
def "ignored feature triggers run listener"() {
when:
injectedSkipListener.get().clearSkipMessages()
runner.extensionClasses = [SkipReporterExtension]
runner.runWithImports("""
class Foo extends Specification {
@Ignore def foo() { expect: false }
def bar() { expect: true }
@Ignore def zot() { expect: false }
}
""")

then:
injectedSkipListener.get().skipMessages == ['foo', 'zot']
}

}

0 comments on commit ff50d9c

Please sign in to comment.