├── .editorconfig
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ ├── config.yml
│ └── feature_request.yml
├── actions
│ ├── setup-build-env
│ │ └── action.yml
│ └── setup-jdks
│ │ └── action.yml
├── codecov.yml
├── renovate.json5
└── workflows
│ ├── README.adoc
│ ├── branches-and-prs.main.kts
│ ├── branches-and-prs.yaml
│ ├── codeql-analysis.main.kts
│ ├── codeql-analysis.yaml
│ ├── common.main.kts
│ ├── docs-pr.main.kts
│ ├── docs-pr.yaml
│ ├── release.main.kts
│ └── release.yaml
├── .idea
├── codeStyleSettings.xml
├── copyright
│ ├── ASLv2.xml
│ └── profiles_settings.xml
├── groovyc.xml
├── icon.png
└── vcs.xml
├── CONTRIBUTING.adoc
├── LICENSE
├── NOTICE
├── README.adoc
├── allVariants
├── allVariants.bat
├── build-logic
├── asciidoc-extensions
│ ├── asciidoc-extensions.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── org
│ │ │ └── spockframework
│ │ │ └── plugins
│ │ │ └── asciidoctor
│ │ │ ├── IncludedSourceLinker.java
│ │ │ ├── SpockExtension.java
│ │ │ ├── SpockIssueInlineMacroProcessor.java
│ │ │ └── SpockPullInlineMacroProcessor.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── org.asciidoctor.jruby.extension.spi.ExtensionRegistry
├── base
│ ├── base.gradle
│ └── src
│ │ ├── main
│ │ └── groovy
│ │ │ └── org
│ │ │ └── spockframework
│ │ │ └── gradle
│ │ │ ├── AsciiDocLinkVerifier.groovy
│ │ │ ├── JacocoJavaagentProvider.groovy
│ │ │ ├── SpockBasePlugin.groovy
│ │ │ └── SpockConfigArgumentProvider.groovy
│ │ └── test
│ │ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── gradle
│ │ ├── AsciiDocLinkVerifierTest.groovy
│ │ └── SpockBasePluginSpec.groovy
├── build-logic.gradle
├── preprocess-workflows
│ ├── preprocess-workflows.gradle
│ └── src
│ │ └── main
│ │ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── gradle
│ │ ├── DetermineImportedFiles.groovy
│ │ ├── DetermineImportedFilesWorkAction.groovy
│ │ ├── PreprocessGithubWorkflow.groovy
│ │ ├── PreprocessGithubWorkflowWorkAction.groovy
│ │ └── PreprocessWorkflowsPlugin.groovy
└── settings.gradle
├── build.gradle
├── config
├── code-signing-secring.gpg
└── nohttp
│ ├── allowlist.lines
│ └── checkstyle.xml
├── docs
├── all_in_one.adoc
├── data_driven_testing.adoc
├── docinfo.html
├── extensions.adoc
├── faq.adoc
├── getting_started.adoc
├── images
│ ├── Blocks2Phases.png
│ ├── Spock Logo Use Guidelines.txt
│ ├── spock-main-logo.png
│ ├── spock-main-logo.svg
│ ├── spock_interceptors.png
│ └── spock_interceptors.svg
├── include.adoc
├── index.adoc
├── interaction_based_testing.adoc
├── introduction.adoc
├── known_issues.adoc
├── migration_guide.adoc
├── module_spring.adoc
├── modules.adoc
├── parallel_execution.adoc
├── release_notes.adoc
├── spock_primer.adoc
└── utilities.adoc
├── gradle.properties
├── gradle
├── ide.gradle
├── libs.versions.toml
├── publishMaven.gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── javadoc
├── hamcrest-2.2
│ └── package-list
└── java-8
│ └── package-list
├── jitpack.yml
├── settings.gradle
├── spock-bom
└── bom.gradle
├── spock-core
├── CoreConsole.groovy
├── core.gradle
└── src
│ └── main
│ ├── groovy
│ ├── org
│ │ └── spockframework
│ │ │ └── util
│ │ │ └── GroovyUtil.groovy
│ └── spock
│ │ └── util
│ │ ├── EmbeddedSpecCompiler.groovy
│ │ ├── EmbeddedSpecRunner.groovy
│ │ ├── SourceToAstNodeAndSourceTranspiler.groovy
│ │ ├── concurrent
│ │ └── BlockingVariables.groovy
│ │ └── matcher
│ │ ├── HamcrestMatchers.groovy
│ │ └── IsCloseTo.groovy
│ ├── java
│ ├── org
│ │ └── spockframework
│ │ │ ├── builder
│ │ │ ├── AddSlotFactory.java
│ │ │ ├── BuilderHelper.java
│ │ │ ├── ClosureBlueprint.java
│ │ │ ├── CollectionSlot.java
│ │ │ ├── CollectionSlotFactory.java
│ │ │ ├── DelegatingScript.java
│ │ │ ├── DelegatingScriptBlueprint.java
│ │ │ ├── GestaltBuilder.java
│ │ │ ├── IBlueprint.java
│ │ │ ├── IGestalt.java
│ │ │ ├── ISlot.java
│ │ │ ├── ISlotFactory.java
│ │ │ ├── PojoBuilder.java
│ │ │ ├── PojoGestalt.java
│ │ │ ├── PropertySlot.java
│ │ │ ├── Sculpturer.java
│ │ │ ├── SetterLikeSlot.java
│ │ │ ├── SetterSlotFactory.java
│ │ │ └── SpockConfigurationGestalt.java
│ │ │ ├── buildsupport
│ │ │ ├── AsmClassReader.java
│ │ │ ├── EmptyAnnotationVisitor.java
│ │ │ ├── SpecClassFileFinder.java
│ │ │ └── SpecClassFileVisitor.java
│ │ │ ├── compat
│ │ │ └── groovy2
│ │ │ │ └── GroovyCodeVisitorCompat.java
│ │ │ ├── compiler
│ │ │ ├── AbstractDeepBlockRewriter.java
│ │ │ ├── AbstractSpecVisitor.java
│ │ │ ├── AstNodeCache.java
│ │ │ ├── AstUtil.java
│ │ │ ├── ConditionRewriter.java
│ │ │ ├── DeepBlockRewriter.java
│ │ │ ├── ErrorReporter.java
│ │ │ ├── ErrorRethrowerUsageDetector.java
│ │ │ ├── ExpressionReplacingVisitorSupport.java
│ │ │ ├── FieldInitializationExpression.java
│ │ │ ├── IRewriteResources.java
│ │ │ ├── ISpecRewriteResources.java
│ │ │ ├── ISpecialMethodCall.java
│ │ │ ├── InstanceFieldAccessChecker.java
│ │ │ ├── InteractionRewriter.java
│ │ │ ├── InvalidSpecCompileException.java
│ │ │ ├── NoSpecialMethodCall.java
│ │ │ ├── OldValueExpression.java
│ │ │ ├── SourceLookup.java
│ │ │ ├── SpecAnnotator.java
│ │ │ ├── SpecParser.java
│ │ │ ├── SpecRewriter.java
│ │ │ ├── SpecialMethodCall.java
│ │ │ ├── SpockNames.java
│ │ │ ├── SpockTransform.java
│ │ │ ├── StatementReplacingVisitorSupport.java
│ │ │ ├── WhereBlockRewriter.java
│ │ │ ├── condition
│ │ │ │ ├── BaseVerifyMethodRewriter.java
│ │ │ │ ├── BaseVerifyMethodTransform.java
│ │ │ │ ├── DefaultConditionErrorRecorders.java
│ │ │ │ ├── DefaultConditionRewriterResources.java
│ │ │ │ ├── IConditionErrorRecorders.java
│ │ │ │ ├── IVerifyMethodRewriter.java
│ │ │ │ ├── ImplicitConditionsUtils.java
│ │ │ │ ├── VerifyAllMethodRewriter.java
│ │ │ │ ├── VerifyAllMethodTransform.java
│ │ │ │ ├── VerifyMethodRewriter.java
│ │ │ │ └── VerifyMethodTransform.java
│ │ │ └── model
│ │ │ │ ├── AnonymousBlock.java
│ │ │ │ ├── Block.java
│ │ │ │ ├── BlockParseInfo.java
│ │ │ │ ├── CleanupBlock.java
│ │ │ │ ├── ExpectBlock.java
│ │ │ │ ├── FeatureMethod.java
│ │ │ │ ├── Field.java
│ │ │ │ ├── FilterBlock.java
│ │ │ │ ├── FixtureMethod.java
│ │ │ │ ├── HelperMethod.java
│ │ │ │ ├── ISpecVisitor.java
│ │ │ │ ├── Method.java
│ │ │ │ ├── Node.java
│ │ │ │ ├── SetupBlock.java
│ │ │ │ ├── Spec.java
│ │ │ │ ├── ThenBlock.java
│ │ │ │ ├── WhenBlock.java
│ │ │ │ └── WhereBlock.java
│ │ │ ├── lang
│ │ │ ├── ConditionBlock.java
│ │ │ ├── ISpecificationContext.java
│ │ │ ├── SpecInternals.java
│ │ │ ├── SpreadWildcard.java
│ │ │ └── Wildcard.java
│ │ │ ├── mock
│ │ │ ├── CallRealMethodResponse.java
│ │ │ ├── CannotCreateMockException.java
│ │ │ ├── CannotInvokeRealMethodException.java
│ │ │ ├── ClosureParameterTypeFromVariableType.java
│ │ │ ├── DefaultCompareToInteraction.java
│ │ │ ├── DefaultEqualsInteraction.java
│ │ │ ├── DefaultFinalizeInteraction.java
│ │ │ ├── DefaultHashCodeInteraction.java
│ │ │ ├── DefaultInteraction.java
│ │ │ ├── DefaultJavaLangObjectInteractions.java
│ │ │ ├── DefaultToStringInteraction.java
│ │ │ ├── EmptyOrDummyResponse.java
│ │ │ ├── IArgumentConstraint.java
│ │ │ ├── IChainableResponseGenerator.java
│ │ │ ├── IDefaultResponse.java
│ │ │ ├── IInteractionAware.java
│ │ │ ├── IInteractionScope.java
│ │ │ ├── IInvocationConstraint.java
│ │ │ ├── IMockConfiguration.java
│ │ │ ├── IMockController.java
│ │ │ ├── IMockFactory.java
│ │ │ ├── IMockInteraction.java
│ │ │ ├── IMockInvocation.java
│ │ │ ├── IMockMethod.java
│ │ │ ├── IMockObject.java
│ │ │ ├── IResponseGenerator.java
│ │ │ ├── ISpockMockObject.java
│ │ │ ├── IThreadAwareMockController.java
│ │ │ ├── InteractionNotSatisfiedError.java
│ │ │ ├── MockImplementation.java
│ │ │ ├── MockNature.java
│ │ │ ├── MockUtil.java
│ │ │ ├── TooFewInvocationsError.java
│ │ │ ├── TooManyInvocationsError.java
│ │ │ ├── WrongInvocationOrderError.java
│ │ │ ├── ZeroOrNullResponse.java
│ │ │ ├── codegen
│ │ │ │ └── Target.java
│ │ │ ├── constraint
│ │ │ │ ├── CodeArgumentConstraint.java
│ │ │ │ ├── EqualArgumentConstraint.java
│ │ │ │ ├── EqualMethodNameConstraint.java
│ │ │ │ ├── EqualPropertyNameConstraint.java
│ │ │ │ ├── NamedArgumentListConstraint.java
│ │ │ │ ├── NegatingArgumentConstraint.java
│ │ │ │ ├── PositionalArgumentListConstraint.java
│ │ │ │ ├── PropertyNameConstraint.java
│ │ │ │ ├── RegexMethodNameConstraint.java
│ │ │ │ ├── RegexPropertyNameConstraint.java
│ │ │ │ ├── SpreadWildcardArgumentConstraint.java
│ │ │ │ ├── TargetConstraint.java
│ │ │ │ ├── TypeArgumentConstraint.java
│ │ │ │ ├── WildcardArgumentConstraint.java
│ │ │ │ └── WildcardMethodNameConstraint.java
│ │ │ ├── package-info.java
│ │ │ ├── response
│ │ │ │ ├── CodeResponseGenerator.java
│ │ │ │ ├── ConstantResponseGenerator.java
│ │ │ │ ├── DefaultResponseGenerator.java
│ │ │ │ ├── IterableResponseGenerator.java
│ │ │ │ ├── ResponseGeneratorChain.java
│ │ │ │ ├── SingleResponseGenerator.java
│ │ │ │ └── WildcardResponseGenerator.java
│ │ │ └── runtime
│ │ │ │ ├── BaseMockInterceptor.java
│ │ │ │ ├── ByteBuddyInterceptorAdapter.java
│ │ │ │ ├── ByteBuddyInvoker.java
│ │ │ │ ├── ByteBuddyMethodInvoker.java
│ │ │ │ ├── ByteBuddyMockFactory.java
│ │ │ │ ├── ByteBuddyMockInteractionValidator.java
│ │ │ │ ├── ByteBuddyMockMaker.java
│ │ │ │ ├── CglibMockFactory.java
│ │ │ │ ├── CglibMockInterceptorAdapter.java
│ │ │ │ ├── CglibMockMaker.java
│ │ │ │ ├── CglibRealMethodInvoker.java
│ │ │ │ ├── CompositeMockFactory.java
│ │ │ │ ├── DefaultMethodInvoker.java
│ │ │ │ ├── DelegatingMockInvocation.java
│ │ │ │ ├── DynamicMockMethod.java
│ │ │ │ ├── FailingRealMethodInvoker.java
│ │ │ │ ├── GroovyMockFactory.java
│ │ │ │ ├── GroovyMockInterceptor.java
│ │ │ │ ├── GroovyMockMetaClass.java
│ │ │ │ ├── GroovyRealMethodInvoker.java
│ │ │ │ ├── IMockInteractionValidator.java
│ │ │ │ ├── IMockMaker.java
│ │ │ │ ├── IProxyBasedMockInterceptor.java
│ │ │ │ ├── InteractionBuilder.java
│ │ │ │ ├── InteractionScope.java
│ │ │ │ ├── JavaMockFactory.java
│ │ │ │ ├── JavaMockInterceptor.java
│ │ │ │ ├── JavaProxyMockInterceptorAdapter.java
│ │ │ │ ├── JavaProxyMockMaker.java
│ │ │ │ ├── MockConfiguration.java
│ │ │ │ ├── MockController.java
│ │ │ │ ├── MockCreationSettings.java
│ │ │ │ ├── MockInstantiator.java
│ │ │ │ ├── MockInteraction.java
│ │ │ │ ├── MockInteractionDecorator.java
│ │ │ │ ├── MockInvocation.java
│ │ │ │ ├── MockMakerConfiguration.java
│ │ │ │ ├── MockMakerRegistry.java
│ │ │ │ ├── MockObject.java
│ │ │ │ ├── ObjectMethodInvoker.java
│ │ │ │ ├── SpecificationAttachable.java
│ │ │ │ ├── StaticMockMethod.java
│ │ │ │ └── mockito
│ │ │ │ ├── MockitoMockMaker.java
│ │ │ │ ├── MockitoMockMakerImpl.java
│ │ │ │ └── MockitoMockMakerSettings.java
│ │ │ ├── report
│ │ │ └── log
│ │ │ │ └── ReportLogConfiguration.java
│ │ │ ├── runtime
│ │ │ ├── AbstractRunListener.java
│ │ │ ├── AsyncRunListener.java
│ │ │ ├── AsyncStandardStreamsListener.java
│ │ │ ├── ClassSelectorResolver.java
│ │ │ ├── Condition.java
│ │ │ ├── ConditionFailedWithExceptionError.java
│ │ │ ├── ConditionNotSatisfiedError.java
│ │ │ ├── ConfigurationBuilder.java
│ │ │ ├── ConfigurationScriptLoader.java
│ │ │ ├── DataIteratorFactory.java
│ │ │ ├── DataVariablesIterationNameProvider.java
│ │ │ ├── DefaultParallelExecutionConfiguration.java
│ │ │ ├── DummyStackTraceFilter.java
│ │ │ ├── ErrorCollector.java
│ │ │ ├── ErrorContext.java
│ │ │ ├── ErrorInfoCollector.java
│ │ │ ├── ErrorRethrower.java
│ │ │ ├── ErrorSpecNode.java
│ │ │ ├── ExpressionComparisonRenderer.java
│ │ │ ├── ExpressionInfoBuilder.java
│ │ │ ├── ExpressionInfoConverter.java
│ │ │ ├── ExpressionInfoRenderer.java
│ │ │ ├── ExpressionInfoValueRenderer.java
│ │ │ ├── ExtensionClassesLoader.java
│ │ │ ├── ExtensionRunner.java
│ │ │ ├── FailedEqualityComparisonRenderer.java
│ │ │ ├── FailedInstanceOfComparisonRenderer.java
│ │ │ ├── FailedSetEqualityComparisonRenderer.java
│ │ │ ├── FailedStringComparisonRenderer.java
│ │ │ ├── FeatureNode.java
│ │ │ ├── GlobalExtensionRegistry.java
│ │ │ ├── GroovyRuntimeUtil.java
│ │ │ ├── HamcrestFacade.java
│ │ │ ├── IConfigurationRegistry.java
│ │ │ ├── IDataIterator.java
│ │ │ ├── IExtensionRegistry.java
│ │ │ ├── IFeatureFilter.java
│ │ │ ├── IFeatureSortOrder.java
│ │ │ ├── IMethodNameMapper.java
│ │ │ ├── IRunListener.java
│ │ │ ├── IRunSupervisor.java
│ │ │ ├── IStackTraceFilter.java
│ │ │ ├── IStandardStreamsListener.java
│ │ │ ├── InvalidSpecException.java
│ │ │ ├── IterationNode.java
│ │ │ ├── MasterRunListener.java
│ │ │ ├── MasterRunSupervisor.java
│ │ │ ├── MethodSelectorResolver.java
│ │ │ ├── NamespacedExtensionStore.java
│ │ │ ├── ParameterizedFeatureChildExecutor.java
│ │ │ ├── ParameterizedFeatureNode.java
│ │ │ ├── PlatformParameterizedSpecRunner.java
│ │ │ ├── PlatformSpecRunner.java
│ │ │ ├── RunContext.java
│ │ │ ├── RunStatus.java
│ │ │ ├── SafeIterationNameProvider.java
│ │ │ ├── SimpleFeatureNode.java
│ │ │ ├── SpecInfoBuilder.java
│ │ │ ├── SpecNode.java
│ │ │ ├── SpecRunHistory.java
│ │ │ ├── SpecUtil.java
│ │ │ ├── SpecificationContext.java
│ │ │ ├── SpockAssertionError.java
│ │ │ ├── SpockComparisonFailure.java
│ │ │ ├── SpockEngine.java
│ │ │ ├── SpockEngineDescriptor.java
│ │ │ ├── SpockEngineDiscoveryPostProcessor.java
│ │ │ ├── SpockException.java
│ │ │ ├── SpockExecution.java
│ │ │ ├── SpockExecutionContext.java
│ │ │ ├── SpockExecutionException.java
│ │ │ ├── SpockMultipleFailuresError.java
│ │ │ ├── SpockNode.java
│ │ │ ├── SpockRuntime.java
│ │ │ ├── SpockTimeoutError.java
│ │ │ ├── StackTraceFilter.java
│ │ │ ├── StandardStreamsCapturer.java
│ │ │ ├── StoreProvider.java
│ │ │ ├── UnallowedExceptionThrownError.java
│ │ │ ├── ValueRecorder.java
│ │ │ ├── WrongExceptionThrownError.java
│ │ │ ├── condition
│ │ │ │ ├── DiffedArrayRenderer.java
│ │ │ │ ├── DiffedClassRenderer.java
│ │ │ │ ├── DiffedCollectionRenderer.java
│ │ │ │ ├── DiffedMapRenderer.java
│ │ │ │ ├── DiffedObjectAsBeanRenderer.java
│ │ │ │ ├── DiffedObjectAsStringRenderer.java
│ │ │ │ ├── DiffedSetRenderer.java
│ │ │ │ ├── EditDistance.java
│ │ │ │ ├── EditOperation.java
│ │ │ │ ├── EditPathRenderer.java
│ │ │ │ ├── IObjectRenderer.java
│ │ │ │ ├── IObjectRendererService.java
│ │ │ │ ├── LineBuilder.java
│ │ │ │ └── ObjectRendererService.java
│ │ │ ├── extension
│ │ │ │ ├── AbstractAnnotationDrivenExtension.java
│ │ │ │ ├── AbstractGlobalExtension.java
│ │ │ │ ├── AbstractMethodInterceptor.java
│ │ │ │ ├── ExtensionAnnotation.java
│ │ │ │ ├── ExtensionException.java
│ │ │ │ ├── ExtensionUtil.java
│ │ │ │ ├── IAnnotationDrivenExtension.java
│ │ │ │ ├── IBlockListener.java
│ │ │ │ ├── IDataDriver.java
│ │ │ │ ├── IDefaultValueProviderExtension.java
│ │ │ │ ├── IGlobalExtension.java
│ │ │ │ ├── IIterationRunner.java
│ │ │ │ ├── IMethodInterceptor.java
│ │ │ │ ├── IMethodInvocation.java
│ │ │ │ ├── ISpockExecution.java
│ │ │ │ ├── IStatelessAnnotationDrivenExtension.java
│ │ │ │ ├── IStore.java
│ │ │ │ ├── IStoreProvider.java
│ │ │ │ ├── MethodInvocation.java
│ │ │ │ ├── ParameterResolver.java
│ │ │ │ ├── RepeatedExtensionAnnotations.java
│ │ │ │ └── builtin
│ │ │ │ │ ├── AutoCleanupExtension.java
│ │ │ │ │ ├── AutoCleanupInterceptor.java
│ │ │ │ │ ├── ConditionalExtension.java
│ │ │ │ │ ├── ConfineMetaClassChangesExtension.java
│ │ │ │ │ ├── ConfineMetaClassChangesInterceptor.java
│ │ │ │ │ ├── ExecutionExtension.java
│ │ │ │ │ ├── FailsWithExtension.java
│ │ │ │ │ ├── FailsWithInterceptor.java
│ │ │ │ │ ├── GlobalTimeoutExtension.java
│ │ │ │ │ ├── IgnoreExtension.java
│ │ │ │ │ ├── IgnoreIfExtension.java
│ │ │ │ │ ├── IgnoreRestExtension.java
│ │ │ │ │ ├── IncludeExcludeExtension.java
│ │ │ │ │ ├── IsolatedExtension.java
│ │ │ │ │ ├── IssueExtension.java
│ │ │ │ │ ├── NarrativeExtension.java
│ │ │ │ │ ├── OptimizeRunOrderExtension.java
│ │ │ │ │ ├── PendingFeatureBaseInterceptor.java
│ │ │ │ │ ├── PendingFeatureExtension.java
│ │ │ │ │ ├── PendingFeatureIfExtension.java
│ │ │ │ │ ├── PendingFeatureInterceptor.java
│ │ │ │ │ ├── PendingFeatureIterationInterceptor.java
│ │ │ │ │ ├── PendingFeatureSuccessfulError.java
│ │ │ │ │ ├── PreconditionContext.java
│ │ │ │ │ ├── RepeatUntilFailureExtension.java
│ │ │ │ │ ├── RequiresExtension.java
│ │ │ │ │ ├── ResourceLockExtension.java
│ │ │ │ │ ├── RestoreSystemPropertiesExtension.java
│ │ │ │ │ ├── RestoreSystemPropertiesInterceptor.java
│ │ │ │ │ ├── RetryBaseInterceptor.java
│ │ │ │ │ ├── RetryConditionContext.java
│ │ │ │ │ ├── RetryExtension.java
│ │ │ │ │ ├── RetryFeatureInterceptor.java
│ │ │ │ │ ├── RetryIterationInterceptor.java
│ │ │ │ │ ├── RevertMetaClassRunListener.java
│ │ │ │ │ ├── SeeExtension.java
│ │ │ │ │ ├── SnapshotConfig.java
│ │ │ │ │ ├── SnapshotExtension.java
│ │ │ │ │ ├── StepwiseExtension.java
│ │ │ │ │ ├── TagExtension.java
│ │ │ │ │ ├── TempDirExtension.java
│ │ │ │ │ ├── TempDirInterceptor.java
│ │ │ │ │ ├── ThreadDumpUtility.java
│ │ │ │ │ ├── ThreadDumpUtilityType.java
│ │ │ │ │ ├── TimeoutConfiguration.java
│ │ │ │ │ ├── TimeoutExtension.java
│ │ │ │ │ ├── TimeoutInterceptor.java
│ │ │ │ │ ├── TitleExtension.java
│ │ │ │ │ ├── UnrollConfiguration.java
│ │ │ │ │ ├── UnrollExtension.java
│ │ │ │ │ ├── UnrollIterationNameProvider.java
│ │ │ │ │ ├── UseExtension.java
│ │ │ │ │ └── UseInterceptor.java
│ │ │ └── model
│ │ │ │ ├── Attachment.java
│ │ │ │ ├── BlockInfo.java
│ │ │ │ ├── BlockKind.java
│ │ │ │ ├── BlockMetadata.java
│ │ │ │ ├── DataProcessorMetadata.java
│ │ │ │ ├── DataProviderInfo.java
│ │ │ │ ├── DataProviderMetadata.java
│ │ │ │ ├── DataVariableMultiplication.java
│ │ │ │ ├── DataVariableMultiplicationFactor.java
│ │ │ │ ├── ErrorInfo.java
│ │ │ │ ├── ExecutionResult.java
│ │ │ │ ├── ExpressionInfo.java
│ │ │ │ ├── FeatureInfo.java
│ │ │ │ ├── FeatureMetadata.java
│ │ │ │ ├── FieldInfo.java
│ │ │ │ ├── FieldMetadata.java
│ │ │ │ ├── IAttachmentContainer.java
│ │ │ │ ├── IErrorContext.java
│ │ │ │ ├── IExcludable.java
│ │ │ │ ├── IInterceptable.java
│ │ │ │ ├── INameable.java
│ │ │ │ ├── IParallelInfo.java
│ │ │ │ ├── ISkippable.java
│ │ │ │ ├── ITaggable.java
│ │ │ │ ├── ITestTaggable.java
│ │ │ │ ├── Invoker.java
│ │ │ │ ├── IterationFilter.java
│ │ │ │ ├── IterationInfo.java
│ │ │ │ ├── MethodInfo.java
│ │ │ │ ├── MethodKind.java
│ │ │ │ ├── NameProvider.java
│ │ │ │ ├── NodeInfo.java
│ │ │ │ ├── ParameterInfo.java
│ │ │ │ ├── SpecElementInfo.java
│ │ │ │ ├── SpecInfo.java
│ │ │ │ ├── SpecMetadata.java
│ │ │ │ ├── Tag.java
│ │ │ │ ├── TestTag.java
│ │ │ │ ├── TextPosition.java
│ │ │ │ ├── TextRegion.java
│ │ │ │ └── parallel
│ │ │ │ ├── ExclusiveResource.java
│ │ │ │ ├── ExecutionMode.java
│ │ │ │ ├── ResourceAccessMode.java
│ │ │ │ └── Resources.java
│ │ │ ├── tempdir
│ │ │ └── TempDirConfiguration.java
│ │ │ └── util
│ │ │ ├── AbstractExpressionConverter.java
│ │ │ ├── AbstractMultiset.java
│ │ │ ├── Assert.java
│ │ │ ├── Beta.java
│ │ │ ├── Checks.java
│ │ │ ├── CollectionUtil.java
│ │ │ ├── ConsoleUtil.java
│ │ │ ├── DataVariableMap.java
│ │ │ ├── ExceptionUtil.java
│ │ │ ├── Filter.java
│ │ │ ├── GenericTypeReflectorUtil.java
│ │ │ ├── GroovyReleaseInfo.java
│ │ │ ├── HashMultiset.java
│ │ │ ├── IFunction.java
│ │ │ ├── IMatcher.java
│ │ │ ├── IMultiset.java
│ │ │ ├── IStoppable.java
│ │ │ ├── IThrowableBiConsumer.java
│ │ │ ├── IThrowableFunction.java
│ │ │ ├── Identifiers.java
│ │ │ ├── Immutable.java
│ │ │ ├── IncompatibleGroovyVersionException.java
│ │ │ ├── InternalIdentifiers.java
│ │ │ ├── InternalSpockError.java
│ │ │ ├── IoUtil.java
│ │ │ ├── JavaProcessThreadDumpCollector.java
│ │ │ ├── JsonWriter.java
│ │ │ ├── LinkedHashMultiset.java
│ │ │ ├── Matchers.java
│ │ │ ├── MopUtil.java
│ │ │ ├── NotThreadSafe.java
│ │ │ ├── Nullable.java
│ │ │ ├── ObjectUtil.java
│ │ │ ├── Pair.java
│ │ │ ├── ReflectionUtil.java
│ │ │ ├── RenderUtil.java
│ │ │ ├── SpockDocLinks.java
│ │ │ ├── SpockReleaseInfo.java
│ │ │ ├── SpockUserHomeUtil.java
│ │ │ ├── StringMessagePrintStream.java
│ │ │ ├── TeePrintStream.java
│ │ │ ├── TextUtil.java
│ │ │ ├── ThreadSafe.java
│ │ │ ├── ThreadSupport.java
│ │ │ ├── TimeUtil.java
│ │ │ ├── UnreachableCodeError.java
│ │ │ ├── VersionChecker.java
│ │ │ ├── VersionNumber.java
│ │ │ ├── WrappedException.java
│ │ │ └── inspector
│ │ │ ├── AstInspector.java
│ │ │ ├── AstInspectorException.java
│ │ │ └── Inspect.java
│ └── spock
│ │ ├── config
│ │ ├── ConfigurationException.java
│ │ ├── ConfigurationObject.java
│ │ ├── IncludeExcludeCriteria.java
│ │ ├── ParallelConfiguration.java
│ │ ├── RunnerConfiguration.java
│ │ └── package-info.java
│ │ ├── lang
│ │ ├── AutoCleanup.java
│ │ ├── Execution.java
│ │ ├── FailsWith.java
│ │ ├── Ignore.java
│ │ ├── IgnoreIf.java
│ │ ├── IgnoreRest.java
│ │ ├── Isolated.java
│ │ ├── Issue.java
│ │ ├── Narrative.java
│ │ ├── PendingFeature.java
│ │ ├── PendingFeatureIf.java
│ │ ├── RepeatUntilFailure.java
│ │ ├── Requires.java
│ │ ├── ResourceLock.java
│ │ ├── Retry.java
│ │ ├── Rollup.java
│ │ ├── See.java
│ │ ├── Shared.java
│ │ ├── Snapshot.java
│ │ ├── Snapshotter.java
│ │ ├── Specification.java
│ │ ├── Stepwise.java
│ │ ├── Subject.java
│ │ ├── Tag.java
│ │ ├── TempDir.java
│ │ ├── Timeout.java
│ │ ├── Title.java
│ │ ├── Unroll.java
│ │ ├── Verify.java
│ │ ├── VerifyAll.java
│ │ └── package-info.java
│ │ ├── mock
│ │ ├── AutoAttach.java
│ │ ├── AutoAttachExtension.java
│ │ ├── DetachedMockFactory.java
│ │ ├── IMockMakerSettings.java
│ │ ├── MockFactory.java
│ │ ├── MockMakerId.java
│ │ ├── MockMakers.java
│ │ └── MockingApi.java
│ │ └── util
│ │ ├── Exceptions.java
│ │ ├── concurrent
│ │ ├── AsyncConditions.java
│ │ ├── BlockingVariable.java
│ │ ├── BlockingVariablesImpl.java
│ │ ├── PollingConditions.java
│ │ └── package-info.java
│ │ ├── environment
│ │ ├── Jvm.java
│ │ ├── OperatingSystem.java
│ │ ├── RestoreSystemProperties.java
│ │ └── package-info.java
│ │ ├── io
│ │ ├── DirectoryFixture.java
│ │ └── FileSystemFixture.java
│ │ ├── matcher
│ │ ├── HamcrestSupport.java
│ │ └── package-info.java
│ │ ├── mop
│ │ ├── ConfineMetaClassChanges.java
│ │ ├── Use.java
│ │ └── package-info.java
│ │ └── time
│ │ └── MutableClock.java
│ └── resources
│ ├── META-INF
│ └── services
│ │ ├── org.codehaus.groovy.transform.ASTTransformation
│ │ ├── org.junit.platform.engine.TestEngine
│ │ ├── org.spockframework.mock.runtime.IMockMaker
│ │ ├── org.spockframework.runtime.extension.IGlobalExtension
│ │ └── spock.config.ConfigurationObject
│ ├── dsld
│ └── spock_tests.dsld
│ └── org
│ └── spockframework
│ ├── idea
│ └── spock.gdsl
│ └── util
│ └── SpockReleaseInfo.properties
├── spock-groovy2-compat
├── groovy2-compat.gradle
└── src
│ └── main
│ └── java
│ └── org
│ └── codehaus
│ └── groovy
│ └── ast
│ └── expr
│ ├── LambdaExpression.java
│ └── MethodReferenceExpression.java
├── spock-guice
├── guice.gradle
└── src
│ ├── main
│ └── java
│ │ ├── org
│ │ └── spockframework
│ │ │ └── guice
│ │ │ ├── GuiceExtension.java
│ │ │ ├── GuiceExtensionException.java
│ │ │ └── GuiceInterceptor.java
│ │ └── spock
│ │ └── guice
│ │ ├── UseModules.java
│ │ └── package-info.java
│ └── test
│ └── groovy
│ └── org
│ └── spockframework
│ └── guice
│ ├── BindingAnnotation1.groovy
│ ├── BindingAnnotation2.groovy
│ ├── GuiceMultiAnnotations.groovy
│ ├── GuiceMultiModules.groovy
│ ├── GuiceSpecInheritance.groovy
│ ├── IService1.groovy
│ ├── IService2.groovy
│ ├── InjectionExamples.groovy
│ ├── MockModule.groovy
│ ├── MockSpec.groovy
│ ├── Module1.groovy
│ ├── Module2.groovy
│ ├── Service1.groovy
│ └── Service2.groovy
├── spock-junit4
├── junit4.gradle
└── src
│ ├── main
│ ├── java
│ │ └── org
│ │ │ └── spockframework
│ │ │ └── junit4
│ │ │ ├── AbstractRuleExtension.java
│ │ │ ├── AbstractRuleInterceptor.java
│ │ │ ├── ClassRuleExtension.java
│ │ │ ├── ClassRuleInterceptor.java
│ │ │ ├── ExceptionAdapterExtension.java
│ │ │ ├── ExceptionAdapterInterceptor.java
│ │ │ ├── JUnit4AnnotationLifecycleMethodsExtension.java
│ │ │ ├── JUnitDescriptionGenerator.java
│ │ │ ├── MethodRuleInterceptor.java
│ │ │ ├── RuleExtension.java
│ │ │ └── TestRuleInterceptor.java
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── org.spockframework.runtime.extension.IGlobalExtension
│ ├── test-groovy-le-3.0
│ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── smoke
│ │ └── groovy
│ │ └── UsageOfDeprecatedNotYetImplemented.groovy
│ └── test
│ └── groovy
│ └── org
│ └── spockframework
│ ├── groovy
│ └── AstInspectorTest.groovy
│ ├── junit
│ ├── Base.java
│ ├── Derived.java
│ ├── HelloSpockWithJUnit.java
│ └── StringComparison.java
│ ├── junit4
│ └── junit
│ │ ├── ExceptionAdapterSpec.groovy
│ │ ├── HandlingOfAssumptionViolatedException.groovy
│ │ ├── JUnitBaseSpec.groovy
│ │ ├── JUnitClassRules.groovy
│ │ ├── JUnitCompliance.groovy
│ │ ├── JUnitDescriptionGeneratorSpec.groovy
│ │ ├── JUnitFixtureMethods.groovy
│ │ ├── JUnitMethodRuleOrder.groovy
│ │ ├── JUnitRules.groovy
│ │ ├── JUnitTestRuleOrder.groovy
│ │ ├── RulesAndInheritance.groovy
│ │ ├── UseJUnitClassRule.groovy
│ │ ├── UseJUnitTestNameRule.groovy
│ │ └── UseJUnitTimeoutRule.groovy
│ ├── smoke
│ └── traits
│ │ ├── BasicTraitUsageWithJUnit4Annotations.groovy
│ │ └── MyTraitWithJUnit4Annotations.groovy
│ └── util
│ └── IoUtilSpec.groovy
├── spock-specs
├── SpockTestConfig.groovy
├── mock-integration
│ ├── mock-integration.gradle
│ └── src
│ │ └── test
│ │ └── groovy
│ │ └── MockingIntegrationSpec.groovy
├── specs.gradle
└── src
│ ├── main
│ ├── groovy
│ │ └── org
│ │ │ └── spockframework
│ │ │ └── specs
│ │ │ ├── extension
│ │ │ └── SpockSnapshotter.groovy
│ │ │ └── jacoco
│ │ │ └── JacocoAstDumpTrigger.groovy
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── org.codehaus.groovy.transform.ASTTransformation
│ ├── test-groovy-ge-3.0
│ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── smoke
│ │ ├── ArrayInitializer.groovy
│ │ ├── UsageOfNotYetImplemented.groovy
│ │ └── lamba
│ │ └── LambdaSpec.groovy
│ ├── test-groovy-ge-4.0
│ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── smoke
│ │ └── condition
│ │ └── ConditionG4Spec.groovy
│ ├── test-java-ge-17
│ └── java
│ │ └── org
│ │ └── spockframework
│ │ └── smoke
│ │ └── mock
│ │ ├── IEither.java
│ │ └── IMaybe.java
│ ├── test-java-le-11
│ └── java
│ │ └── org
│ │ └── spockframework
│ │ └── smoke
│ │ └── mock
│ │ ├── IEither.java
│ │ └── IMaybe.java
│ └── test
│ ├── groovy
│ ├── org
│ │ └── spockframework
│ │ │ ├── EmbeddedSpecification.groovy
│ │ │ ├── builder
│ │ │ └── PojoBuilderSpec.groovy
│ │ │ ├── buildsupport
│ │ │ └── SpecClassFileFinderSpec.groovy
│ │ │ ├── datapipes
│ │ │ └── DataPipesIteratorSpec.groovy
│ │ │ ├── docs
│ │ │ ├── datadriven
│ │ │ │ ├── DataSpec.groovy
│ │ │ │ ├── v1
│ │ │ │ │ └── MathSpec.groovy
│ │ │ │ ├── v2
│ │ │ │ │ └── MathSpec.groovy
│ │ │ │ ├── v3
│ │ │ │ │ └── MathSpec.groovy
│ │ │ │ ├── v4
│ │ │ │ │ └── MathSpec.groovy
│ │ │ │ ├── v5
│ │ │ │ │ └── MathSpec.groovy
│ │ │ │ ├── v6
│ │ │ │ │ └── MathSpec.groovy
│ │ │ │ └── v7
│ │ │ │ │ └── MathSpec.groovy
│ │ │ ├── extension
│ │ │ │ ├── ConfineMetaClassChangesDocSpec.groovy
│ │ │ │ ├── ExtensionStoreSpec.groovy
│ │ │ │ ├── FancyMockMaker.java
│ │ │ │ ├── FancyMockMakerDocSpec.groovy
│ │ │ │ ├── IgnoreIfDocSpec.groovy
│ │ │ │ ├── InterceptorSpec.groovy
│ │ │ │ ├── IssueDocSpec.groovy
│ │ │ │ ├── MockMakerConfigurationDocSpec.groovy
│ │ │ │ ├── ParameterInjectionSpec.groovy
│ │ │ │ ├── PendingFeatureIfDocSpec.groovy
│ │ │ │ ├── RequiresDocSpec.groovy
│ │ │ │ ├── SeeDocSpec.groovy
│ │ │ │ ├── SnapshotDocSpec.groovy
│ │ │ │ ├── StepwiseDocSpec.groovy
│ │ │ │ ├── SubjectDocSpec.groovy
│ │ │ │ ├── TagDocSpec.groovy
│ │ │ │ ├── TempDirDocSpec.groovy
│ │ │ │ └── UseDocSpec.groovy
│ │ │ ├── interaction
│ │ │ │ ├── BuilderExampleSpec.groovy
│ │ │ │ ├── DetachedMockFactoryDocSpec.groovy
│ │ │ │ ├── GlobalMockDocSpec.groovy
│ │ │ │ ├── InteractionDocSpec.groovy
│ │ │ │ ├── MockMakerDocSpec.groovy
│ │ │ │ └── StaticSpyDocSpec.groovy
│ │ │ ├── parallel
│ │ │ │ └── ParallelConfigDoc.groovy
│ │ │ ├── primer
│ │ │ │ ├── ConditionsSpec.groovy
│ │ │ │ ├── VerifyEachDocSpec.groovy
│ │ │ │ └── VerifyMethodsDocSpec.groovy
│ │ │ ├── timeout
│ │ │ │ └── TimeoutConfigurationDoc.groovy
│ │ │ └── utilities
│ │ │ │ ├── AgeFilter.java
│ │ │ │ ├── CollectionConditions.groovy
│ │ │ │ ├── ConditionBlockSpec.groovy
│ │ │ │ ├── FileSystemFixtureSpec.groovy
│ │ │ │ ├── MutableClockDocSpec.groovy
│ │ │ │ └── OldMethodSpec.groovy
│ │ │ ├── example
│ │ │ └── FeatureUnrolling.groovy
│ │ │ ├── groovy
│ │ │ ├── AssertStatementSourcePositionTest.groovy
│ │ │ ├── DGMMatcherIterator.groovy
│ │ │ ├── FieldInitializers.groovy
│ │ │ ├── GroovyMopExploration.groovy
│ │ │ ├── GroovyVarArgs.groovy
│ │ │ ├── PackageNames.groovy
│ │ │ ├── ReturnStatementSourcePositionTest.groovy
│ │ │ ├── SourcePositionPhaseConversion.groovy
│ │ │ ├── SourcePositionPhaseSemanticAnalysis.groovy
│ │ │ └── VarArgsSpec.groovy
│ │ │ ├── idea
│ │ │ └── IntelliJIdeaSpec.groovy
│ │ │ ├── mock
│ │ │ ├── AccessProtectedPropsSpec.groovy
│ │ │ ├── AdditionalInterfaceResponseSpec.groovy
│ │ │ ├── AutoAttachInvalidUsageSpec.groovy
│ │ │ ├── AutoAttachSpec.groovy
│ │ │ ├── DetachedMockFactorySpec.groovy
│ │ │ ├── DetachedMockSpec.groovy
│ │ │ ├── MockDetectorSpec.groovy
│ │ │ ├── MockMapDelegateSpec.groovy
│ │ │ ├── MockSpecInfoAnnotationSpec.groovy
│ │ │ ├── UnattachedMockSpec.groovy
│ │ │ ├── response
│ │ │ │ ├── IterableResponseGeneratorSpec.groovy
│ │ │ │ └── MockPrimitiveTypeResponsesSpec.groovy
│ │ │ └── runtime
│ │ │ │ ├── ByteBuddyMockFactoryConcurrentSpec.groovy
│ │ │ │ ├── ByteBuddyMockMakerSpec.groovy
│ │ │ │ ├── ByteBuddyTestClassLoader.java
│ │ │ │ ├── CglibMockMakerSpec.groovy
│ │ │ │ ├── JavaMockFactorySpec.groovy
│ │ │ │ ├── JavaProxyMockMakerSpec.groovy
│ │ │ │ ├── MockConfigurationSpec.groovy
│ │ │ │ ├── MockMakerRegistrySpec.groovy
│ │ │ │ └── mockito
│ │ │ │ ├── AccessProtectedJavaBaseClass.java
│ │ │ │ ├── MockitoMockMakerSpec.groovy
│ │ │ │ └── MockitoStaticMocksSpec.groovy
│ │ │ ├── runtime
│ │ │ ├── AsyncRunListenerSpec.groovy
│ │ │ ├── BlockListenerSpec.groovy
│ │ │ ├── ClosingOfDataProviders.groovy
│ │ │ ├── ConfigurationScriptLoaderSpec.groovy
│ │ │ ├── DataVariablesIterationNameProviderSpec.groovy
│ │ │ ├── ErrorSpecNodeSpec.groovy
│ │ │ ├── EstimatedNumberOfIterations.groovy
│ │ │ ├── ExtensionClassesLoaderSpec.groovy
│ │ │ ├── GlobalExtensionRegistrySpec.groovy
│ │ │ ├── GroovyMethods.groovy
│ │ │ ├── GroovyRuntimeUtilIsVoidMethodSpec.groovy
│ │ │ ├── GroovyRuntimeUtilSpec.groovy
│ │ │ ├── NamespacedExtensionStoreSpec.groovy
│ │ │ ├── RunContextEmbeddedSpec.groovy
│ │ │ ├── RunContextSpec.groovy
│ │ │ ├── RunListenerSpec.groovy
│ │ │ ├── SafeIterationNameProviderSpec.groovy
│ │ │ ├── SpecUtilSpec.groovy
│ │ │ ├── StandardStreamsCapturerSpec.groovy
│ │ │ ├── StoreSpec.groovy
│ │ │ ├── condition
│ │ │ │ ├── EditDistanceSpec.groovy
│ │ │ │ └── EditPathRendererSpec.groovy
│ │ │ ├── extension
│ │ │ │ ├── AnnotationDrivenExtensionSpec.groovy
│ │ │ │ └── builtin
│ │ │ │ │ ├── ThreadDumpUtilityTypeTest.groovy
│ │ │ │ │ └── UnrollIterationNameProviderSpec.groovy
│ │ │ └── model
│ │ │ │ ├── IterationFilterSpec.groovy
│ │ │ │ ├── SpecInfoHierarchySpec.groovy
│ │ │ │ ├── SpecInfoSpec.groovy
│ │ │ │ └── TestTagTest.groovy
│ │ │ ├── serialization
│ │ │ └── ErrorSerializationTest.groovy
│ │ │ ├── smoke
│ │ │ ├── AccessingOldValues.groovy
│ │ │ ├── AnonymousInnerClasses.groovy
│ │ │ ├── AssertionErrorMessages.groovy
│ │ │ ├── Blocks.groovy
│ │ │ ├── BuiltInMembersOfClassSpecification.groovy
│ │ │ ├── CleanupBlocks.groovy
│ │ │ ├── CompileTimeErrorReporting.groovy
│ │ │ ├── DisambiguationInConditions.groovy
│ │ │ ├── DisambiguationInConditionsTestee.java
│ │ │ ├── ExpectBlocks.groovy
│ │ │ ├── FeatureFiltering.groovy
│ │ │ ├── FeatureMethods.groovy
│ │ │ ├── FinalFields.groovy
│ │ │ ├── FixtureMethods.groovy
│ │ │ ├── GroovyCallChain.groovy
│ │ │ ├── InteractionsAndExceptionConditions.groovy
│ │ │ ├── Interceptors.groovy
│ │ │ ├── MethodAccessibility.groovy
│ │ │ ├── MethodExecutionOrder.groovy
│ │ │ ├── MisspelledFixtureMethods.groovy
│ │ │ ├── MixingExpectAndWhenThenBlocks.groovy
│ │ │ ├── NameClashes.groovy
│ │ │ ├── RecorderScope.groovy
│ │ │ ├── SetupBlocks.groovy
│ │ │ ├── SharedFields.groovy
│ │ │ ├── SharedFieldsInSuperclass.groovy
│ │ │ ├── SharedVsStaticFields.groovy
│ │ │ ├── SpecFields.groovy
│ │ │ ├── SpecInheritance.groovy
│ │ │ ├── SpecRecognition.groovy
│ │ │ ├── SpecWithoutFeatures.groovy
│ │ │ ├── StackTraceFiltering.groovy
│ │ │ ├── StaticMethodsInSpecifications.groovy
│ │ │ ├── StaticTypeChecking.groovy
│ │ │ ├── VerifyAllMethodsSpecification.groovy
│ │ │ ├── VerifyEachBlocks.groovy
│ │ │ ├── VerifyMethodsSpecification.groovy
│ │ │ ├── VoidGroovyStaticMethod.groovy
│ │ │ ├── VoidMethodCallsInExpectBlocks.groovy
│ │ │ ├── VoidMethodCallsInThenBlocks.groovy
│ │ │ ├── WhenThenBlocks.groovy
│ │ │ ├── WithBlockFailingConditions.groovy
│ │ │ ├── WithBlockPassingConditions.groovy
│ │ │ ├── WithBlocks.groovy
│ │ │ ├── WithBlocksStatic.groovy
│ │ │ ├── ast
│ │ │ │ ├── AstSpec.groovy
│ │ │ │ ├── BlocksAst.groovy
│ │ │ │ ├── CleanupBlocksAstSpec.groovy
│ │ │ │ ├── DataAstSpec.groovy
│ │ │ │ ├── DataTablesAstSpec.groovy
│ │ │ │ ├── condition
│ │ │ │ │ ├── BaseVerifyMethodsAstSpec.groovy
│ │ │ │ │ ├── CollectionConditionAstSpec.groovy
│ │ │ │ │ ├── ConditionMethodsAstSpec.groovy
│ │ │ │ │ ├── ExceptionConditionsAstSpec.groovy
│ │ │ │ │ ├── VerifyAllMethodsAstSpec.groovy
│ │ │ │ │ └── VerifyMethodsAstSpec.groovy
│ │ │ │ └── mock
│ │ │ │ │ └── MocksAstSpec.groovy
│ │ │ ├── condition
│ │ │ │ ├── ArrayComparisonRendering.groovy
│ │ │ │ ├── CollectionConditionRendering.groovy
│ │ │ │ ├── ConditionEvaluation.groovy
│ │ │ │ ├── ConditionNotSatisfiedErrors.groovy
│ │ │ │ ├── ConditionRendering.groovy
│ │ │ │ ├── ConditionRenderingSpec.groovy
│ │ │ │ ├── ConditionsAndGroovyTruth.groovy
│ │ │ │ ├── DiffedObjectRendering.groovy
│ │ │ │ ├── EqualityComparisonRendering.groovy
│ │ │ │ ├── ExceptionConditions.groovy
│ │ │ │ ├── ExceptionsInConditions.groovy
│ │ │ │ ├── ExplicitConditionsInFeatureMethods.groovy
│ │ │ │ ├── ExplicitConditionsInFields.groovy
│ │ │ │ ├── ExplicitConditionsInFixtureMethods.groovy
│ │ │ │ ├── ExplicitConditionsInHelperMethods.groovy
│ │ │ │ ├── ExplicitConditionsInNestedPositions.groovy
│ │ │ │ ├── ExplicitConditionsWithMessage.groovy
│ │ │ │ ├── ImplicitClosureCallRendering.groovy
│ │ │ │ ├── InvalidConditions.groovy
│ │ │ │ ├── IsRenderedExtension.groovy
│ │ │ │ ├── MatcherConditionRendering.groovy
│ │ │ │ ├── MatcherConditions.groovy
│ │ │ │ ├── MethodConditionEvaluation.groovy
│ │ │ │ ├── NegativeExceptionConditions.groovy
│ │ │ │ ├── PartialConditionEvaluation.groovy
│ │ │ │ ├── SetComparisonRendering.groovy
│ │ │ │ ├── StringComparisonRendering.groovy
│ │ │ │ └── ValueRendering.groovy
│ │ │ ├── extension
│ │ │ │ ├── AutoCleanupExtension.groovy
│ │ │ │ ├── ConditionallyIgnoreFeature.groovy
│ │ │ │ ├── FailsWithExtension.groovy
│ │ │ │ ├── Fast.groovy
│ │ │ │ ├── GlobalTimeoutExtension.groovy
│ │ │ │ ├── IgnoreExtension.groovy
│ │ │ │ ├── IgnoreIfExtension.groovy
│ │ │ │ ├── IgnoreRestExtension.groovy
│ │ │ │ ├── ImpliedFeatureSpec.groovy
│ │ │ │ ├── IncludeExcludeFeatures.groovy
│ │ │ │ ├── IncludeExcludeFeaturesWithInheritance.groovy
│ │ │ │ ├── IncludeExcludeSpecs.groovy
│ │ │ │ ├── IncludeExcludeSpecsAndFeatures.groovy
│ │ │ │ ├── IncludeExcludeSpecsWithInheritance.groovy
│ │ │ │ ├── IssueExtension.groovy
│ │ │ │ ├── MixedSpecSkippingExtensions.groovy
│ │ │ │ ├── NarrativeExtension.groovy
│ │ │ │ ├── ParallelSpec.groovy
│ │ │ │ ├── PendingFeatureExtensionSpec.groovy
│ │ │ │ ├── PendingFeatureIfExtensionSpec.groovy
│ │ │ │ ├── RepeatUntilFailureExtensionSpec.groovy
│ │ │ │ ├── RepeatableLocalExtensionsSpec.groovy
│ │ │ │ ├── RequiresExtension.groovy
│ │ │ │ ├── RestoreSystemPropertiesExtension.groovy
│ │ │ │ ├── RetryFeatureExtensionSpec.groovy
│ │ │ │ ├── SeeExtension.groovy
│ │ │ │ ├── Slow.groovy
│ │ │ │ ├── SnapshotterSpec.groovy
│ │ │ │ ├── StepwiseFeatures.groovy
│ │ │ │ ├── StepwiseSpecs.groovy
│ │ │ │ ├── StepwiseSpecsAndFeatures.groovy
│ │ │ │ ├── TagExtension.groovy
│ │ │ │ ├── TempDirExtensionSpec.groovy
│ │ │ │ ├── TimeoutExtension.groovy
│ │ │ │ └── TitleExtension.groovy
│ │ │ ├── issues
│ │ │ │ └── StackFrameReproducer.groovy
│ │ │ ├── mock
│ │ │ │ ├── AdditionalInterfaces.groovy
│ │ │ │ ├── ArgumentCapturing.groovy
│ │ │ │ ├── ArgumentMatching.groovy
│ │ │ │ ├── ChainedResponseGenerators.groovy
│ │ │ │ ├── CompletableFutureSpec.groovy
│ │ │ │ ├── DefaultValueProvider.groovy
│ │ │ │ ├── ErrorReporting.groovy
│ │ │ │ ├── ExplicitInteractions.groovy
│ │ │ │ ├── GenericMockInvocations.groovy
│ │ │ │ ├── GlobalInteractions.groovy
│ │ │ │ ├── GroovyMockAbstractGlobalClass.groovy
│ │ │ │ ├── GroovyMockFinalClass.groovy
│ │ │ │ ├── GroovyMockGlobalClass.groovy
│ │ │ │ ├── GroovyMocks.groovy
│ │ │ │ ├── GroovyMocksForGroovyClasses.groovy
│ │ │ │ ├── GroovyMocksForInterfaces.groovy
│ │ │ │ ├── GroovySpies.groovy
│ │ │ │ ├── GroovySpiesThatAreGlobal.groovy
│ │ │ │ ├── InteractionScopes.groovy
│ │ │ │ ├── InteractionsReferencingFieldsAndProperties.groovy
│ │ │ │ ├── InteractionsWithPropertySyntax.groovy
│ │ │ │ ├── InvalidMockCreation.groovy
│ │ │ │ ├── InvalidStubInteraction.groovy
│ │ │ │ ├── InvokingMocksFromMultipleThreads.groovy
│ │ │ │ ├── JavaFinalMocks.groovy
│ │ │ │ ├── JavaMocksDefaultBehavior.groovy
│ │ │ │ ├── JavaMocksForGroovyClasses.groovy
│ │ │ │ ├── JavaSpies.groovy
│ │ │ │ ├── JavaStubs.groovy
│ │ │ │ ├── MethodMatching.groovy
│ │ │ │ ├── MockBasics.groovy
│ │ │ │ ├── MockCreationWithClosure.groovy
│ │ │ │ ├── MockDefaultResponses.groovy
│ │ │ │ ├── MockNames.groovy
│ │ │ │ ├── MockProxyCaching.groovy
│ │ │ │ ├── MockingAndBridgeMethods.groovy
│ │ │ │ ├── MockingClosures.groovy
│ │ │ │ ├── MockingMethodsWithNamedParameters.groovy
│ │ │ │ ├── MockingMethodsWithVarArgParameters.groovy
│ │ │ │ ├── MockingOfVarArgParametersUserContributedSpec.groovy
│ │ │ │ ├── MultiThreaded.groovy
│ │ │ │ ├── OptionalSpec.groovy
│ │ │ │ ├── OrderedInteractions.groovy
│ │ │ │ ├── OverlappingInteractions.groovy
│ │ │ │ ├── PartialMocking.groovy
│ │ │ │ ├── PartialMockingInterfacesWithDefaultMethods.groovy
│ │ │ │ ├── ResponseGenerators.groovy
│ │ │ │ ├── SpreadWildcardUsage.groovy
│ │ │ │ ├── SpyBasics.groovy
│ │ │ │ ├── StreamSpec.groovy
│ │ │ │ ├── StubBasics.groovy
│ │ │ │ ├── StubBuilderSupport.groovy
│ │ │ │ ├── StubDefaultResponses.groovy
│ │ │ │ ├── StubDefaultResponsesWithGenericMethods.groovy
│ │ │ │ ├── TargetMatching.groovy
│ │ │ │ ├── TooFewInvocations.groovy
│ │ │ │ ├── TooManyInvocations.groovy
│ │ │ │ ├── ValidMockCreation.groovy
│ │ │ │ ├── ValidMockCreationInDerivedClass.groovy
│ │ │ │ └── WildcardUsages.groovy
│ │ │ ├── parameterization
│ │ │ │ ├── DataProviders.groovy
│ │ │ │ ├── DataTables.groovy
│ │ │ │ ├── InvalidWhereBlocks.groovy
│ │ │ │ ├── MethodParameters.groovy
│ │ │ │ ├── ParameterizationScopes.groovy
│ │ │ │ ├── Parameterizations.groovy
│ │ │ │ ├── ParameterizedFeatureNodeStatuses.groovy
│ │ │ │ ├── SqlDataSource.groovy
│ │ │ │ ├── UnrolledFeatureMethods.groovy
│ │ │ │ └── UprolledFeatureMethods.groovy
│ │ │ └── traits
│ │ │ │ ├── BasicTraitUsage.groovy
│ │ │ │ └── MyTrait.groovy
│ │ │ ├── util
│ │ │ ├── AbstractMultisetSpec.groovy
│ │ │ ├── CollectionUtilSpec.groovy
│ │ │ ├── ConsoleUtilSpec.groovy
│ │ │ ├── DataVariableMapTest.groovy
│ │ │ ├── ExceptionUtilSpec.groovy
│ │ │ ├── GenericTypeReflectorUtilSpec.groovy
│ │ │ ├── GroovyUtilSpec.groovy
│ │ │ ├── HashMultisetSpec.groovy
│ │ │ ├── JsonWriterSpec.groovy
│ │ │ ├── LinkedHashMultisetSpec.groovy
│ │ │ ├── ObjectUtilSpec.groovy
│ │ │ ├── ReflectionUtilSpec.groovy
│ │ │ ├── SpockReleaseInfoSpec.groovy
│ │ │ ├── StringMessagePrintStreamSpec.groovy
│ │ │ ├── TeePrintStreamSpec.groovy
│ │ │ ├── TextUtilSpec.groovy
│ │ │ ├── ThreadSupportSpec.groovy
│ │ │ ├── TimeUtilSpec.groovy
│ │ │ ├── VersionCheckerSpec.groovy
│ │ │ └── VersionNumberSpec.groovy
│ │ │ └── verifyall
│ │ │ └── VerifyAllSpecification.groovy
│ └── spock
│ │ ├── config
│ │ ├── ConfigSupport.groovy
│ │ └── ParallelConfigurationSpec.groovy
│ │ ├── mock
│ │ ├── MockMakerIdSpec.groovy
│ │ └── MockingApiInvalidUsageSpec.groovy
│ │ ├── timeout
│ │ └── BaseTimeoutExtensionSpecification.groovy
│ │ └── util
│ │ ├── EmbeddedSpecRunnerClassLoaderSpec.groovy
│ │ ├── ExceptionsSpec.groovy
│ │ ├── JvmSpec.groovy
│ │ ├── OperatingSystemSpec.groovy
│ │ ├── concurrent
│ │ ├── AsyncConditionsSpec.groovy
│ │ ├── BlockingVariableSpec.groovy
│ │ ├── BlockingVariablesSpec.groovy
│ │ └── PollingConditionsSpec.groovy
│ │ ├── matcher
│ │ └── IsCloseToSpec.groovy
│ │ ├── mop
│ │ ├── ConfineMetaClassChangesSpec.groovy
│ │ └── UseSpec.groovy
│ │ └── time
│ │ └── MutableClockSpec.groovy
│ ├── java
│ └── org
│ │ └── spockframework
│ │ ├── groovy
│ │ └── JavaVarArgs.java
│ │ ├── mock
│ │ ├── AccessProtectedJavaBaseClass.java
│ │ ├── FinalClass.java
│ │ ├── FinalClassDefaultValueProvider.java
│ │ ├── FinalJavaPerson.java
│ │ ├── FinalMethodsJavaPerson.java
│ │ ├── InterfaceWithNestedClass.java
│ │ └── Issue520Repository.java
│ │ ├── runtime
│ │ └── JavaMethods.java
│ │ └── smoke
│ │ ├── CallChainException.java
│ │ ├── JavaCallChain.java
│ │ └── mock
│ │ ├── DiscountedItem.java
│ │ ├── DiscountedPublicItem.java
│ │ ├── IDeposit.java
│ │ ├── IQuarterlyCompoundedDeposit.java
│ │ ├── ISquare.java
│ │ ├── Item.java
│ │ ├── JavaCaller.java
│ │ ├── MaybeDefaultValueProvider.java
│ │ └── PublicItem.java
│ └── resources
│ ├── META-INF
│ └── services
│ │ ├── org.spockframework.mock.runtime.IMockMaker
│ │ └── org.spockframework.runtime.extension.IDefaultValueProviderExtension
│ ├── org
│ └── spockframework
│ │ ├── runtime
│ │ ├── InvalidConfig.txt
│ │ ├── ValidConfig.txt
│ │ └── extensionDescriptor
│ │ └── smoke
│ │ └── extension
│ │ └── SampleFile.txt
│ └── snapshots
│ ├── .editorconfig
│ └── org
│ └── spockframework
│ ├── docs
│ ├── extension
│ │ └── SnapshotDocSpec
│ │ │ ├── custom_matching.txt
│ │ │ ├── multi_snapshot-otherId.txt
│ │ │ ├── multi_snapshot.txt
│ │ │ ├── using_field_based_snapshot.txt
│ │ │ └── using_parameter_based_snapshot.txt
│ └── primer
│ │ └── VerifyEachDocSpec
│ │ ├── verifyEach_method.txt
│ │ ├── verifyEach_with_index_method.txt
│ │ └── verifyEach_with_namer_method.txt
│ ├── runtime
│ └── StoreSpec
│ │ └── store_is_created_and_cleaned_for_each_level.txt
│ └── smoke
│ ├── Interceptors
│ ├── interceptors_are_called_in_the_correct_order_and_with_the_correct_context_information.txt
│ └── non_method_interceptors_are_called_even_without_the_respective_method.txt
│ ├── VerifyEachBlocks
│ ├── rendering_of_the_item_can_be_customized_with_the_namer.txt
│ ├── verifyEach_fails_handles_nested_exceptions.txt
│ ├── verifyEach_handles_a_single_failed_element_verification.txt
│ └── verifyEach_handles_multiple_failed_element_verifications.txt
│ ├── ast
│ ├── AstSpec
│ │ ├── Primitive_types_are_used_in_AST_transformation_Groovy____3.txt
│ │ ├── Primitive_types_are_used_in_AST_transformation_Groovy____4.txt
│ │ ├── astToSourceFeatureBody_can_render_everything.groovy
│ │ ├── astToSourceFeatureBody_can_render_everything__Groovy_4_0_2__.groovy
│ │ ├── astToSourceFeatureBody_renders_only_methods_and_its_annotation_by_default.groovy
│ │ ├── astToSourceFeatureBody_shows_compile_error_in_source.txt
│ │ ├── astToSourceSpecBody_renders_only_methods__fields__properties__object_initializers_and_their_annotation_by_default.groovy
│ │ ├── enums-groovy4.groovy
│ │ ├── enums.groovy
│ │ ├── full_feature_exercise.groovy
│ │ └── groovy_3_language_features.groovy
│ ├── BlocksAst
│ │ ├── all_observable_blocks_with_GString_labels.groovy
│ │ ├── all_observable_blocks_with_empty_labels.groovy
│ │ └── all_observable_blocks_with_labels_and_blocks.groovy
│ ├── CleanupBlocksAstSpec
│ │ ├── cleanup_rewrite_keeps_correct_method_reference.groovy
│ │ └── cleanup_rewrite_keeps_correct_method_reference_for_multi_assignments.groovy
│ ├── DataAstSpec
│ │ ├── multi_parameterization.groovy
│ │ └── nested_multi_parameterization.groovy
│ ├── DataTablesAstSpec
│ │ ├── data_tables_with__separators_can_be_combined-[0].groovy
│ │ ├── data_tables_with__separators_can_be_combined-[1].groovy
│ │ ├── data_tables_with__separators_can_be_combined-[2].groovy
│ │ ├── filter_block_becomes_its_own_method.groovy
│ │ └── using_a_variable_in_a_cell_multiple_times_compiles.groovy
│ ├── condition
│ │ ├── CollectionConditionAstSpec
│ │ │ ├── collection_condition_matchCollectionsAsSet_is_transformed_correctly.groovy
│ │ │ ├── collection_condition_matchCollectionsInAnyOrder_is_transformed_correctly.groovy
│ │ │ ├── regex_find_conditions_are_transformed_correctly.groovy
│ │ │ └── regex_match_conditions_are_transformed_correctly.groovy
│ │ ├── ConditionMethodsAstSpec
│ │ │ ├── GDK_method_that_looks_like_built_in_method_as_explicit_condition.groovy
│ │ │ ├── GDK_method_that_looks_like_built_in_method_as_implicit_condition.groovy
│ │ │ ├── condition_method__conditionMethod-[0].groovy
│ │ │ ├── condition_method__conditionMethod-[1].groovy
│ │ │ ├── condition_method__conditionMethod-[2].groovy
│ │ │ ├── condition_method__conditionMethod_with_exception-[0].groovy
│ │ │ ├── condition_method__conditionMethod_with_exception-[1].groovy
│ │ │ ├── condition_method__conditionMethod_with_exception-[2].groovy
│ │ │ ├── condition_method__conditionMethod_with_only_exception-[0].groovy
│ │ │ ├── condition_method__conditionMethod_with_only_exception-[1].groovy
│ │ │ ├── condition_method__conditionMethod_with_only_exception-[2].groovy
│ │ │ ├── condition_method__conditionMethod_within_condition_method__conditionMethod-[0].groovy
│ │ │ ├── condition_method__conditionMethod_within_condition_method__conditionMethod-[1].groovy
│ │ │ ├── condition_method__conditionMethod_within_condition_method__conditionMethod-[2].groovy
│ │ │ ├── condition_method__conditionMethod_within_condition_method__conditionMethod_with_exception-[0].groovy
│ │ │ ├── condition_method__conditionMethod_within_condition_method__conditionMethod_with_exception-[1].groovy
│ │ │ ├── condition_method__conditionMethod_within_condition_method__conditionMethod_with_exception-[2].groovy
│ │ │ ├── condition_method__conditionMethod_within_condition_method__conditionMethod_with_only_exception-[0].groovy
│ │ │ ├── condition_method__conditionMethod_within_condition_method__conditionMethod_with_only_exception-[1].groovy
│ │ │ └── condition_method__conditionMethod_within_condition_method__conditionMethod_with_only_exception-[2].groovy
│ │ ├── ExceptionConditionsAstSpec
│ │ │ ├── thrown_rewrite_keeps_correct_method_reference.groovy
│ │ │ └── thrown_rewrite_keeps_correct_method_reference_for_multi_assignments.groovy
│ │ ├── VerifyAllMethodsAstSpec
│ │ │ ├── ignores_conditions_in_overwritten_methods.groovy
│ │ │ ├── ignores_methods_without_annotation.groovy
│ │ │ ├── methods_without_condition_declarations_stay_unchanged.groovy
│ │ │ ├── transforms_conditions_at_all_nesting_levels.groovy
│ │ │ ├── transforms_conditions_in_methods_inside_spec_classes.groovy
│ │ │ ├── transforms_conditions_in_methods_outside_of_spec_classes.groovy
│ │ │ ├── transforms_conditions_in_private_methods.groovy
│ │ │ ├── transforms_conditions_in_static_methods.groovy
│ │ │ └── transforms_explicit_conditions.groovy
│ │ └── VerifyMethodsAstSpec
│ │ │ ├── ignores_conditions_in_overwritten_methods.groovy
│ │ │ ├── ignores_methods_without_annotation.groovy
│ │ │ ├── methods_without_condition_declarations_stay_unchanged.groovy
│ │ │ ├── transforms_conditions_at_all_nesting_levels.groovy
│ │ │ ├── transforms_conditions_in_methods_inside_spec_classes.groovy
│ │ │ ├── transforms_conditions_in_methods_outside_of_spec_classes.groovy
│ │ │ ├── transforms_conditions_in_private_methods.groovy
│ │ │ ├── transforms_conditions_in_static_methods.groovy
│ │ │ └── transforms_explicit_conditions.groovy
│ └── mock
│ │ └── MocksAstSpec
│ │ └── simple_interaction.groovy
│ ├── condition
│ └── ConditionEvaluation
│ │ ├── collection_conditions_work_with_nulls-[0].txt
│ │ ├── collection_conditions_work_with_nulls-[1].txt
│ │ ├── collection_conditions_work_with_nulls-[2].txt
│ │ ├── collection_conditions_work_with_nulls-[3].txt
│ │ ├── strict_collection_conditions_work_with_nulls-[0].txt
│ │ ├── strict_collection_conditions_work_with_nulls-[1].txt
│ │ ├── strict_collection_conditions_work_with_nulls-[2].txt
│ │ └── strict_collection_conditions_work_with_nulls-[3].txt
│ └── parameterization
│ ├── DataProviders
│ ├── data_provider_with_asserting_closure_produces_error_rethrower_variable_in_data_provider_method.groovy
│ └── data_variable_with_asserting_closure_produces_error_rethrower_variable_in_data_processor_method.groovy
│ ├── DataTables
│ └── filtered_iterations_are_logged.txt
│ └── InvalidWhereBlocks
│ ├── using_combined_label_between_data_pipe_and_derived_data_variable_is_not_allowed.txt
│ ├── using_combined_label_between_data_pipe_and_derived_data_variable_is_not_allowed_even_with_separator.txt
│ ├── using_combined_label_between_data_pipe_and_derived_data_variable_is_not_allowed_even_with_separator_in_front.txt
│ ├── using_combined_label_between_data_table_and_derived_data_variable_is_not_allowed.txt
│ ├── using_combined_label_between_derived_data_variable_and_data_pipe_is_not_allowed.txt
│ ├── using_combined_label_between_derived_data_variable_and_data_pipe_is_not_allowed_even_with_separator.txt
│ ├── using_combined_label_between_derived_data_variable_and_data_pipe_is_not_allowed_even_with_separator_in_front.txt
│ ├── using_combined_label_between_derived_data_variable_and_data_table_is_not_allowed.txt
│ ├── using_combined_label_outside_where_block_is_not_allowed.txt
│ ├── using_combined_label_within_semicolon_data_table_row_is_not_allowed.txt
│ └── using_filter_label_before_where_block_is_not_allowed.txt
├── spock-spring
├── boot2-test
│ ├── boot2-test.gradle
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ │ └── spockframework
│ │ │ │ └── boot2
│ │ │ │ ├── SimpleBootApp.java
│ │ │ │ ├── jpa
│ │ │ │ ├── Book.java
│ │ │ │ └── BookRepository.java
│ │ │ │ ├── service
│ │ │ │ ├── HelloWorldService.java
│ │ │ │ └── ScopedHelloWorldService.java
│ │ │ │ └── web
│ │ │ │ └── HelloWorldController.java
│ │ └── resources
│ │ │ └── application.properties
│ │ └── test
│ │ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── boot2
│ │ ├── DataJpaTestIntegrationSpec.groovy
│ │ ├── SimpleBootAppIntegrationSpec.groovy
│ │ ├── SpringBeanIntegrationSpec.groovy
│ │ ├── SpringBootTestAnnotationIntegrationSpec.groovy
│ │ ├── SpringBootTestAnnotationScopedMockSpec.groovy
│ │ ├── SpringBootTestAnnotationScopedProxyMockSpec.groovy
│ │ └── WebMvcTestIntegrationSpec.groovy
├── boot3-test
│ ├── boot3-test.gradle
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ │ └── spockframework
│ │ │ │ └── boot3
│ │ │ │ ├── SimpleBootApp.java
│ │ │ │ ├── jpa
│ │ │ │ ├── Book.java
│ │ │ │ └── BookRepository.java
│ │ │ │ ├── service
│ │ │ │ ├── HelloWorldService.java
│ │ │ │ └── ScopedHelloWorldService.java
│ │ │ │ └── web
│ │ │ │ └── HelloWorldController.java
│ │ └── resources
│ │ │ └── application.properties
│ │ └── test
│ │ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── boot3
│ │ ├── DataJpaTestIntegrationSpec.groovy
│ │ ├── SimpleBootAppIntegrationSpec.groovy
│ │ ├── SpringBeanIntegrationSpec.groovy
│ │ ├── SpringBootTestAnnotationIntegrationSpec.groovy
│ │ ├── SpringBootTestAnnotationScopedMockSpec.groovy
│ │ ├── SpringBootTestAnnotationScopedProxyMockSpec.groovy
│ │ └── WebMvcTestIntegrationSpec.groovy
├── spring.gradle
├── spring3-test
│ ├── spring3-test.gradle
│ └── src
│ │ └── test
│ │ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── spring3
│ │ ├── RuntimeCompatibilitySpec.groovy
│ │ └── TestConfig.groovy
├── spring5-test
│ ├── spring5-test.gradle
│ └── src
│ │ └── test
│ │ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── spring5
│ │ ├── NoMockConfig.groovy
│ │ ├── RuntimeCompatibilitySpec.groovy
│ │ ├── SpringBeanTest.groovy
│ │ ├── SpringRunnerTest.java
│ │ └── TestConfig.groovy
├── spring6-test
│ ├── spring6-test.gradle
│ └── src
│ │ └── test
│ │ └── groovy
│ │ └── org
│ │ └── spockframework
│ │ └── spring6
│ │ ├── NoMockConfig.groovy
│ │ ├── RuntimeCompatibilitySpec.groovy
│ │ ├── SpringBeanTest.groovy
│ │ ├── SpringRunnerTest.java
│ │ └── TestConfig.groovy
└── src
│ ├── main
│ ├── java
│ │ └── org
│ │ │ └── spockframework
│ │ │ └── spring
│ │ │ ├── AbstractSpringTestExecutionListener.java
│ │ │ ├── EnableSharedInjection.java
│ │ │ ├── ScanScopedBeans.java
│ │ │ ├── SpringBean.java
│ │ │ ├── SpringExtension.java
│ │ │ ├── SpringExtensionException.java
│ │ │ ├── SpringInterceptor.java
│ │ │ ├── SpringMockTestExecutionListener.java
│ │ │ ├── SpringSpy.java
│ │ │ ├── SpringTestContext.java
│ │ │ ├── SpringTestContextManager.java
│ │ │ ├── StubBeans.java
│ │ │ ├── UnwrapAopProxy.java
│ │ │ ├── UnwrapAopProxyExtension.java
│ │ │ ├── mock
│ │ │ ├── BackwardsCompatibleInstantiationAwareBeanPostProcessorAdapter.java
│ │ │ ├── Definition.java
│ │ │ ├── DefinitionsParser.java
│ │ │ ├── DelegatingInterceptor.java
│ │ │ ├── FieldDefinition.java
│ │ │ ├── MockDefinition.java
│ │ │ ├── QualifierDefinition.java
│ │ │ ├── SpockContextCustomizer.java
│ │ │ ├── SpockContextCustomizerFactory.java
│ │ │ ├── SpockDefinition.java
│ │ │ ├── SpockMockPostprocessor.java
│ │ │ ├── SpockSpringProxyCreator.java
│ │ │ ├── SpyDefinition.java
│ │ │ ├── StubDefinition.java
│ │ │ └── package-info.java
│ │ │ └── xml
│ │ │ ├── MockBeanDefinitionParser.java
│ │ │ ├── SpockMockFactoryBean.java
│ │ │ ├── SpockNamespaceHandler.java
│ │ │ ├── SpockSpyBeanPostProcessor.java
│ │ │ └── WrapWithSpyBeanDefinitionParser.java
│ └── resources
│ │ ├── META-INF
│ │ ├── services
│ │ │ └── org.spockframework.runtime.extension.IGlobalExtension
│ │ ├── spring.factories
│ │ ├── spring.handlers
│ │ └── spring.schemas
│ │ └── org
│ │ └── spockframework
│ │ └── spock.xsd
│ └── test
│ ├── groovy
│ └── org
│ │ └── spockframework
│ │ └── spring
│ │ ├── AlwaysThrowScope.java
│ │ ├── ContextHierarchyExample.groovy
│ │ ├── DirtiesContextExample.groovy
│ │ ├── ErrorHandling.groovy
│ │ ├── IService1.groovy
│ │ ├── IService2.groovy
│ │ ├── InjectionExamples.groovy
│ │ ├── LazyBeans.groovy
│ │ ├── MockInjectionExample.groovy
│ │ ├── MockInjectionWithEmbeddedConfig.groovy
│ │ ├── ScopedBeans.groovy
│ │ ├── Service1.groovy
│ │ ├── Service2.groovy
│ │ ├── SharedFieldsInjection.groovy
│ │ ├── SpringSpecInheritance.groovy
│ │ ├── TransactionalExample.groovy
│ │ ├── TransactionalGroovySqlExample.groovy
│ │ ├── docs
│ │ ├── DetachedJavaConfig.groovy
│ │ ├── GreeterService.groovy
│ │ ├── GreeterServiceImpl.groovy
│ │ ├── MockExamples.groovy
│ │ ├── SpringBeanExamples.groovy
│ │ ├── SpringSpyExamples.groovy
│ │ └── StubBeansExamples.groovy
│ │ └── mock
│ │ ├── ComplexUsageSpec.groovy
│ │ ├── DemoMockContext.groovy
│ │ ├── InvalidUsageSpec.groovy
│ │ ├── SpringBeanSpec.groovy
│ │ ├── SpringBeanWIthSinglePrimaryBeanSpec.groovy
│ │ ├── SpringBeanWithManyOrNoPrimarySpec.groovy
│ │ ├── SpringBeansWithExceptionsSpec.groovy
│ │ ├── SpringSpyDirtiesContextSpec.groovy
│ │ ├── SpringSpyForCircularBeansSpec.groovy
│ │ ├── SpringSpySpec.groovy
│ │ ├── SpyMockContext.groovy
│ │ ├── StubBeansOverrideSpec.groovy
│ │ └── imported
│ │ ├── SpringBeanOnTestFieldForExistingBeanCacheIntegrationSpec.groovy
│ │ ├── SpringBeanOnTestFieldForExistingBeanConfig.groovy
│ │ ├── SpringBeanOnTestFieldForExistingBeanIntegrationSpec.groovy
│ │ ├── SpringBeanOnTestFieldForExistingBeanWithQualifierIntegrationSpec.groovy
│ │ ├── SpringBeanOnTestFieldForNewBeanIntegrationSpec.groovy
│ │ ├── SpringBeanWithAopProxySpec.groovy
│ │ ├── SpringBeanWithAsyncInterfaceMethodIntegrationSpec.groovy
│ │ ├── SpringBeanWithGenericsOnTestFieldForNewBeanIntegrationSpec.groovy
│ │ ├── SpringBeanWithInjectedFieldIntegrationSpec.groovy
│ │ ├── SpringSpyOnTestFieldForExistingBeanCacheIntegrationTests.groovy
│ │ ├── SpringSpyOnTestFieldForExistingBeanConfig.groovy
│ │ ├── SpringSpyOnTestFieldForExistingBeanIntegrationTests.groovy
│ │ ├── SpringSpyOnTestFieldForExistingGenericBeanIntegrationTests.groovy
│ │ ├── SpringSpyOnTestFieldForMultipleExistingBeansWithOnePrimaryIntegrationTests.groovy
│ │ ├── SpringSpyWithAopProxyTests.groovy
│ │ ├── SpringSpyWithNameOnTestFieldForMultipleExistingBeansTests.groovy
│ │ └── SpyBeanWithAopProxyAndNotProxyTargetAwareTests.groovy
│ ├── java
│ └── org
│ │ └── spockframework
│ │ └── spring
│ │ └── mock
│ │ └── imported
│ │ └── example
│ │ ├── CustomQualifier.java
│ │ ├── CustomQualifierExampleService.java
│ │ ├── DeclaredException.java
│ │ ├── ExampleExtraInterface.java
│ │ ├── ExampleGenericService.java
│ │ ├── ExampleGenericServiceCaller.java
│ │ ├── ExampleGenericStringServiceCaller.java
│ │ ├── ExampleService.java
│ │ ├── ExampleServiceCaller.java
│ │ ├── FailingExampleService.java
│ │ ├── RealExampleService.java
│ │ ├── ServiceWithDeclaredException.java
│ │ ├── SimpleExampleIntegerGenericService.java
│ │ ├── SimpleExampleService.java
│ │ ├── SimpleExampleStringGenericService.java
│ │ └── UndeclaredException.java
│ └── resources
│ ├── log4j.properties
│ └── org
│ └── spockframework
│ └── spring
│ ├── InjectionExamples-context.xml
│ ├── MockExamples-context.xml
│ ├── ScopedBeansMock-context.xml
│ ├── ScopedBeansThrowing-context.xml
│ ├── TransactionalExample-context.xml
│ ├── TransactionalGroovySqlExample-context.xml
│ └── docs
│ └── MockDocu-context.xml
├── spock-tapestry
├── src
│ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ │ └── spockframework
│ │ │ │ └── tapestry
│ │ │ │ ├── ExtensionModule.java
│ │ │ │ ├── SpockTapestry.java
│ │ │ │ ├── TapestryExtension.java
│ │ │ │ └── TapestryInterceptor.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ └── services
│ │ │ └── org.spockframework.runtime.extension.IGlobalExtension
│ └── test
│ │ ├── groovy
│ │ └── org
│ │ │ └── spockframework
│ │ │ └── tapestry
│ │ │ ├── BeforeRegistryCreatedMethod.groovy
│ │ │ ├── InjectionExamples.groovy
│ │ │ ├── InjectionExamplesWithImportModule.groovy
│ │ │ └── TapestrySpecInheritance.groovy
│ │ └── java
│ │ └── org
│ │ └── spockframework
│ │ └── tapestry
│ │ ├── IService1.java
│ │ ├── IService2.java
│ │ ├── IService3.java
│ │ ├── Module1.java
│ │ ├── Module2.java
│ │ ├── Service1.java
│ │ ├── Service2.java
│ │ └── Service3.java
└── tapestry.gradle
├── spock-testkit
├── src
│ └── test
│ │ └── groovy
│ │ └── spock
│ │ ├── platform
│ │ ├── DontSwallowErrorTest.java
│ │ ├── InheritedTest.java
│ │ ├── SpockEngineBase.java
│ │ ├── SpockHelloWorldTest.java
│ │ └── TagCompatibilityTest.groovy
│ │ └── testkit
│ │ ├── oom
│ │ └── OomSpec.groovy
│ │ └── testsources
│ │ ├── ChildTagSpec.groovy
│ │ ├── CleanupTestCase.groovy
│ │ ├── ErrorTestCase.groovy
│ │ ├── ExampleTestCase.groovy
│ │ ├── InheritedChildTestCase.groovy
│ │ ├── InheritedParentTestCase.groovy
│ │ ├── SetupCleanupTestCase.groovy
│ │ ├── SharedSetupCleanupTestCase.groovy
│ │ ├── SimpleTagSpec.groovy
│ │ ├── StepwiseTestCase.groovy
│ │ └── UnrollTestCase.groovy
└── testkit.gradle
└── spock-unitils
├── src
├── main
│ └── java
│ │ ├── org
│ │ └── spockframework
│ │ │ └── unitils
│ │ │ ├── UnitilsExtension.java
│ │ │ └── UnitilsInterceptor.java
│ │ └── spock
│ │ └── unitils
│ │ ├── UnitilsSupport.java
│ │ └── package-info.java
└── test
│ ├── groovy
│ └── org
│ │ └── spockframework
│ │ └── unitils
│ │ └── dbunit
│ │ ├── User.groovy
│ │ ├── UserDao.groovy
│ │ └── UserDaoSpec.groovy
│ ├── java
│ └── org
│ │ └── unitils
│ │ └── core
│ │ └── dbsupport
│ │ └── H2DbSupport.java
│ └── resources
│ ├── org
│ └── spockframework
│ │ └── unitils
│ │ └── dbunit
│ │ └── UserDaoSpec.xml
│ └── unitils.properties
└── unitils.gradle
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | end_of_line = lf
6 | insert_final_newline = true
7 | trim_trailing_whitespace = true
8 |
9 | [*.{java,groovy,gradle,xml,html,js}]
10 | indent_style = space
11 | indent_size = 2
12 |
13 | [**/StringComparisonRendering.groovy]
14 | # The file contains important whitespace at the end of the line in a multi-line string.
15 | # and editorconfig doesn't seem to respect multi-line strings.
16 | trim_trailing_whitespace = false
17 |
18 | [*.{kt,kts}]
19 | indent_size = 4
20 | ij_kotlin_allow_trailing_comma = false
21 | ij_kotlin_allow_trailing_comma_on_call_site = false
22 | ktlint_code_style = intellij_idea
23 | ktlint_standard_function-signature = disabled
24 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: true
2 | contact_links:
3 | - name: Spock Gitter Chat
4 | url: https://gitter.im/spockframework/spock
5 | about: Come here to chat, hang out, and ask smaller questions
6 | - name: Stack Overflow
7 | url: https://stackoverflow.com/questions/tagged/spock
8 | about: For questions of the type "why isn't this working"
9 | - name: Spock GitHub Discussions
10 | url: https://github.com/spockframework/spock/discussions
11 | about: For other questions and discussions
12 |
--------------------------------------------------------------------------------
/.github/actions/setup-build-env/action.yml:
--------------------------------------------------------------------------------
1 | name: Setup Gradle and JDKs
2 | description: Sets up Gradle and JDKs
3 | inputs:
4 | additional-java-version:
5 | required: false
6 | description: Additional Java version to install
7 | default: '8'
8 |
9 | runs:
10 | using: "composite"
11 | steps:
12 | - name: 'Set up JDKs'
13 | uses: ./.github/actions/setup-jdks
14 | with:
15 | additional-java-version: ${{ inputs.additional-java-version }}
16 | - name: Init Gradle Build Action
17 | uses: gradle/actions/setup-gradle@v4
18 | with:
19 | cache-read-only: ${{ github.ref != 'refs/heads/master' }}
20 | - name: 'Gradle javaToolchains'
21 | run: ./gradlew --show-version javaToolchains
22 | shell: bash
23 |
--------------------------------------------------------------------------------
/.github/codecov.yml:
--------------------------------------------------------------------------------
1 | codecov:
2 | max_report_age: off
3 |
4 | comment:
5 | layout: "reach, diff, flags, files"
6 | after_n_builds: 18
7 |
--------------------------------------------------------------------------------
/.idea/copyright/ASLv2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/spockframework/spock/a88b966bed0f9073f6e32d2f4fd0ca186ec54388/.idea/icon.png
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/NOTICE:
--------------------------------------------------------------------------------
1 | =========================================================================
2 | == NOTICE file corresponding to the section 4 d of ==
3 | == the Apache License, Version 2.0, ==
4 | == in this case for the Spock distribution. ==
5 | =========================================================================
6 |
7 | This product includes software developed by
8 | The Apache Software Foundation (https://www.apache.org/).
9 |
10 | For licenses see the LICENSE file.
11 |
12 | If any software distributed with Spock does not have an Apache 2 License, its license is explicitly listed in the
13 | LICENSE file.
14 |
--------------------------------------------------------------------------------
/allVariants:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | for var in 2.5 3.0 4.0; do
3 | ./gradlew -Dvariant="$var" "$@"
4 | done
5 |
--------------------------------------------------------------------------------
/allVariants.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | for %%v in (2.5 3.0 4.0) do (
3 | gradlew.bat -Dvariant=%%v %*
4 | )
5 |
--------------------------------------------------------------------------------
/build-logic/asciidoc-extensions/asciidoc-extensions.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'java-library'
3 | id 'idea'
4 | }
5 |
6 | dependencies {
7 | compileOnly libs.asciidoctorj
8 | }
9 |
10 | java {
11 | toolchain {
12 | // IntelliJ currently doesn't support running classes compiled with Java 21 in its preview viewer
13 | languageVersion = JavaLanguageVersion.of(17)
14 | }
15 | }
16 |
17 | tasks.register('installAsciidocExtension', Copy) {
18 | from(tasks.named('jar'))
19 | into('../../.asciidoctor/lib')
20 | }
21 |
22 | tasks.named('ideaModule') {
23 | it.dependsOn('installAsciidocExtension')
24 | }
25 |
--------------------------------------------------------------------------------
/build-logic/asciidoc-extensions/src/main/java/org/spockframework/plugins/asciidoctor/SpockExtension.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.plugins.asciidoctor;
2 |
3 | import org.asciidoctor.Asciidoctor;
4 | import org.asciidoctor.jruby.extension.spi.ExtensionRegistry;
5 |
6 | public class SpockExtension implements ExtensionRegistry {
7 |
8 | @Override
9 | public void register(Asciidoctor asciidoctor) {
10 | var registry = asciidoctor.javaExtensionRegistry();
11 | registry.inlineMacro(SpockIssueInlineMacroProcessor.class);
12 | registry.inlineMacro(SpockPullInlineMacroProcessor.class);
13 | new IncludedSourceLinker().register(registry);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/build-logic/asciidoc-extensions/src/main/java/org/spockframework/plugins/asciidoctor/SpockIssueInlineMacroProcessor.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.plugins.asciidoctor;
2 |
3 | import org.asciidoctor.ast.ContentNode;
4 | import org.asciidoctor.ast.PhraseNode;
5 | import org.asciidoctor.ast.StructuralNode;
6 | import org.asciidoctor.extension.InlineMacroProcessor;
7 | import org.asciidoctor.extension.Name;
8 |
9 | import java.util.HashMap;
10 | import java.util.Map;
11 |
12 | @Name("spockIssue")
13 | public class SpockIssueInlineMacroProcessor extends InlineMacroProcessor {
14 |
15 | @Override
16 | public PhraseNode process(StructuralNode parent, String target, Map attributes) {
17 |
18 | String href = parent.getDocument().getAttribute("github-base") + "/issues/" + target;
19 |
20 | Map options = new HashMap<>();
21 | options.put("type", ":link");
22 | options.put("target", href);
23 | return createPhraseNode(parent, "anchor", "#" + target, attributes, options);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/build-logic/asciidoc-extensions/src/main/java/org/spockframework/plugins/asciidoctor/SpockPullInlineMacroProcessor.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.plugins.asciidoctor;
2 |
3 | import org.asciidoctor.ast.ContentNode;
4 | import org.asciidoctor.ast.PhraseNode;
5 | import org.asciidoctor.ast.StructuralNode;
6 | import org.asciidoctor.extension.InlineMacroProcessor;
7 | import org.asciidoctor.extension.Name;
8 |
9 | import java.util.HashMap;
10 | import java.util.Map;
11 |
12 | @Name("spockPull")
13 | public class SpockPullInlineMacroProcessor extends InlineMacroProcessor {
14 |
15 | @Override
16 | public PhraseNode process(StructuralNode parent, String target, Map attributes) {
17 |
18 | String href = parent.getDocument().getAttribute("github-base") + "/pull/" + target;
19 |
20 | Map options = new HashMap<>();
21 | options.put("type", ":link");
22 | options.put("target", href);
23 | return createPhraseNode(parent, "anchor", "#" + target, attributes, options);
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/build-logic/asciidoc-extensions/src/main/resources/META-INF/services/org.asciidoctor.jruby.extension.spi.ExtensionRegistry:
--------------------------------------------------------------------------------
1 | org.spockframework.plugins.asciidoctor.SpockExtension
2 |
--------------------------------------------------------------------------------
/build-logic/base/base.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'groovy-gradle-plugin'
3 | id 'idea'
4 | }
5 |
6 | gradlePlugin {
7 | plugins {
8 | spockBasePlugin {
9 | id = 'org.spockframework.base'
10 | implementationClass = 'org.spockframework.gradle.SpockBasePlugin'
11 | }
12 | }
13 | }
14 |
15 | dependencies {
16 | implementation('org.ccil.cowan.tagsoup:tagsoup:1.2.1')
17 | }
18 |
19 | testing {
20 | suites {
21 | test {
22 | useSpock('2.4-M6-groovy-3.0')
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/build-logic/build-logic.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | group = 'spockbuild'
3 | }
4 |
--------------------------------------------------------------------------------
/build-logic/preprocess-workflows/preprocess-workflows.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'groovy-gradle-plugin'
3 | id 'idea'
4 | }
5 |
6 | dependencies {
7 | compileOnly(libs.workflows.kotlin.compilerEmbeddable)
8 | }
9 |
10 | gradlePlugin {
11 | plugins {
12 | preprocessWorkflowsPlugin {
13 | id = 'org.spockframework.preprocess-workflows'
14 | implementationClass = 'org.spockframework.gradle.PreprocessWorkflowsPlugin'
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/build-logic/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | mavenCentral()
4 | gradlePluginPortal()
5 | }
6 | }
7 |
8 | rootProject.name = "build-logic"
9 | rootProject.buildFileName = 'build-logic.gradle'
10 |
11 | dependencyResolutionManagement {
12 | versionCatalogs {
13 | create("libs") {
14 | from(files("../gradle/libs.versions.toml"))
15 | }
16 | }
17 | repositories {
18 | mavenCentral()
19 | }
20 | }
21 |
22 | include("base")
23 | include("preprocess-workflows")
24 | include("asciidoc-extensions")
25 |
26 | nameBuildScriptsAfterProjectNames(rootProject.children)
27 |
28 | def nameBuildScriptsAfterProjectNames(projects) {
29 | for (prj in projects) {
30 | prj.buildFileName = prj.name + ".gradle"
31 | nameBuildScriptsAfterProjectNames(prj.children)
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/config/code-signing-secring.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/spockframework/spock/a88b966bed0f9073f6e32d2f4fd0ca186ec54388/config/code-signing-secring.gpg
--------------------------------------------------------------------------------
/config/nohttp/allowlist.lines:
--------------------------------------------------------------------------------
1 | // Unitils website doesn't have https support yet.
2 | ^http://www.unitils.org/?$
3 |
4 | // SVG
5 | ^http://www.inkscape.org/$
6 | ^http://purl.org/dc/dcmitype/StillImage$
7 |
8 | // XMLNS
9 | ^http://www.spockframework.org/spring$
10 |
11 | // Spring schemas from the Spring library classpath
12 | ^http://www.springframework.org/schema/beans/spring-beans.xsd$
13 | ^http://www.springframework.org/schema/beans/spring-beans-2.5.xsd$
14 |
--------------------------------------------------------------------------------
/config/nohttp/checkstyle.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/all_in_one.adoc:
--------------------------------------------------------------------------------
1 | = Spock Framework Reference Documentation
2 | :toc: left
3 | :toclevels: 3
4 | include::include.adoc[]
5 |
6 | include::introduction.adoc[leveloffset=+1]
7 |
8 | include::getting_started.adoc[leveloffset=+1]
9 |
10 | include::spock_primer.adoc[leveloffset=+1]
11 |
12 | include::data_driven_testing.adoc[leveloffset=+1]
13 |
14 | include::interaction_based_testing.adoc[leveloffset=+1]
15 |
16 | include::extensions.adoc[leveloffset=+1]
17 |
18 | include::utilities.adoc[leveloffset=+1]
19 |
20 | include::parallel_execution.adoc[leveloffset=+1]
21 |
22 | include::modules.adoc[leveloffset=+1]
23 |
24 | include::release_notes.adoc[leveloffset=+1]
25 |
26 | include::migration_guide.adoc[leveloffset=+1]
27 |
28 | include::faq.adoc[leveloffset=+1]
29 |
30 | include::known_issues.adoc[leveloffset=+1]
31 |
--------------------------------------------------------------------------------
/docs/docinfo.html:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/Blocks2Phases.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/spockframework/spock/a88b966bed0f9073f6e32d2f4fd0ca186ec54388/docs/images/Blocks2Phases.png
--------------------------------------------------------------------------------
/docs/images/spock-main-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/spockframework/spock/a88b966bed0f9073f6e32d2f4fd0ca186ec54388/docs/images/spock-main-logo.png
--------------------------------------------------------------------------------
/docs/images/spock-main-logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/images/spock_interceptors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/spockframework/spock/a88b966bed0f9073f6e32d2f4fd0ca186ec54388/docs/images/spock_interceptors.png
--------------------------------------------------------------------------------
/docs/index.adoc:
--------------------------------------------------------------------------------
1 | = Spock Framework Reference Documentation
2 | include::include.adoc[]
3 |
4 | . <>
5 | . <>
6 | . <>
7 | . <>
8 | . <>
9 | . <>
10 | . <>
11 | . <>
12 | . <>
13 | . <>
14 | . <>
15 | . <>
16 | . <>
17 |
18 | <>
19 |
--------------------------------------------------------------------------------
/docs/introduction.adoc:
--------------------------------------------------------------------------------
1 | = Introduction
2 | include::include.adoc[]
3 |
4 | image::images/spock-main-logo.png[Spock Logo, align=center, width=20%]
5 |
6 | Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd
7 | is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most
8 | IDEs, build tools, and continuous integration servers. Spock is inspired from https://junit.org/[JUnit],
9 | https://www.jmock.org/[jMock], https://rspec.info/[RSpec], https://groovy-lang.org/[Groovy], https://scala-lang.org/[Scala],
10 | https://en.wikipedia.org/wiki/Vulcan_(Star_Trek)[Vulcans], and other fascinating life forms.
11 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright 2018 the original author or authors.
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # https://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 | #
16 |
17 | org.gradle.java.installations.auto-download=false
18 | org.gradle.java.installations.fromEnv=JDK8,JDK11,JDK17,JDK21,JDK23
19 |
20 | org.gradle.parallel=true
21 | org.gradle.caching=true
22 |
23 | javaVersionsList=8, 11, 17, 21
24 | variantsList=2.5, 3.0, 4.0
25 | kotlin.code.style=official
26 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/spockframework/spock/a88b966bed0f9073f6e32d2f4fd0ca186ec54388/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionSha256Sum=61ad310d3c7d3e5da131b76bbf22b5a4c0786e9d892dae8c1658d4b484de3caa
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
5 | networkTimeout=10000
6 | validateDistributionUrl=true
7 | zipStoreBase=GRADLE_USER_HOME
8 | zipStorePath=wrapper/dists
9 |
--------------------------------------------------------------------------------
/javadoc/hamcrest-2.2/package-list:
--------------------------------------------------------------------------------
1 | org.hamcrest
2 | org.hamcrest.beans
3 | org.hamcrest.collection
4 | org.hamcrest.comparator
5 | org.hamcrest.core
6 | org.hamcrest.internal
7 | org.hamcrest.io
8 | org.hamcrest.number
9 | org.hamcrest.object
10 | org.hamcrest.text
11 | org.hamcrest.xml
12 |
--------------------------------------------------------------------------------
/jitpack.yml:
--------------------------------------------------------------------------------
1 | before_install:
2 | - sdk install java 8.0.345-tem
3 | - sdk install java 11.0.16-tem
4 | - sdk use java 11.0.16-tem
5 | - export JAVA8=`sdk home java 8.0.345-tem`
6 | - export JAVA11=`sdk home java 11.0.16-tem`
7 | install:
8 | - ./gradlew build publishToMavenLocal -Dvariant=2.5
9 | - ./gradlew build publishToMavenLocal -Dvariant=3.0
10 | - ./gradlew build publishToMavenLocal -Dvariant=4.0
11 |
--------------------------------------------------------------------------------
/spock-bom/bom.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id('java-platform')
3 | }
4 | apply from: script('publishMaven')
5 |
6 | (rootProject.subprojects - project).each {
7 | evaluationDependsOn(it.path)
8 | }
9 |
10 | dependencies {
11 | constraints {
12 | def mvnProjects = rootProject.subprojects.findAll { it.plugins.hasPlugin('maven-publish') } // find all published projects
13 | mvnProjects -= project // don't self reference
14 | mvnProjects.each {
15 | api("${it.group}:${it.name}:${it.version}")
16 | }
17 | }
18 | }
19 |
20 | ext.displayName = 'Spock Framework - Bill of Materials'
21 | description = 'This bill of materials provides managed spock dependencies.'
22 | ext.packaging = 'pom'
23 |
--------------------------------------------------------------------------------
/spock-core/CoreConsole.groovy:
--------------------------------------------------------------------------------
1 | import spock.lang.*
2 |
3 | class AClass extends Specification {
4 | def "atest"() {
5 | expect:
6 | true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/builder/GestaltBuilder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | package org.spockframework.builder;
16 |
17 | public class GestaltBuilder {
18 | public void build(IGestalt root) {
19 | new Sculpturer().$form(root);
20 | }
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/builder/IBlueprint.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | package org.spockframework.builder;
16 |
17 | import org.spockframework.util.Nullable;
18 |
19 | public interface IBlueprint {
20 | @Nullable
21 | Object getThisObject();
22 |
23 | void setDelegate(Object delegate);
24 |
25 | void evaluate();
26 | }
27 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/builder/ISlot.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | package org.spockframework.builder;
16 |
17 | import java.lang.reflect.Type;
18 |
19 | public interface ISlot {
20 | Type getType();
21 | void write(Object value);
22 | }
23 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/builder/ISlotFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | package org.spockframework.builder;
16 |
17 | import java.lang.reflect.Type;
18 |
19 | import org.spockframework.util.Nullable;
20 |
21 | public interface ISlotFactory {
22 | @Nullable ISlot create(Object owner, Type ownerType, String name);
23 | }
24 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/compiler/condition/IVerifyMethodRewriter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2025 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 | package org.spockframework.compiler.condition;
15 |
16 | public interface IVerifyMethodRewriter {
17 |
18 | void rewrite();
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/lang/SpreadWildcard.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2011 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | package org.spockframework.lang;
16 |
17 | public class SpreadWildcard {
18 | public static final SpreadWildcard INSTANCE = new SpreadWildcard();
19 |
20 | private SpreadWildcard() {}
21 |
22 | @Override
23 | public String toString() {
24 | return "*_";
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/IArgumentConstraint.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2009 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.spockframework.mock;
18 |
19 | /**
20 | * A constraint on an invocation argument.
21 | *
22 | * @author Peter Niederwieser
23 | */
24 | public interface IArgumentConstraint {
25 | boolean isSatisfiedBy(Object arg);
26 | String describeMismatch(Object arg);
27 | }
28 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/IDefaultResponse.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.spockframework.mock;
18 |
19 | /**
20 | * A strategy for responding to unexpected method calls. Each
21 | * mock object can have its own strategy.
22 | */
23 | public interface IDefaultResponse extends IResponseGenerator {}
24 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/IInteractionAware.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2009 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.spockframework.mock;
18 |
19 | public interface IInteractionAware {
20 | void setInteraction(IMockInteraction interaction);
21 | }
22 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/IInvocationConstraint.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2009 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.spockframework.mock;
18 |
19 | /**
20 | *
21 | * @author Peter Niederwieser
22 | */
23 | public interface IInvocationConstraint {
24 | boolean isSatisfiedBy(IMockInvocation invocation);
25 | String describeMismatch(IMockInvocation invocation);
26 | }
27 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/IMockController.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2009 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.spockframework.mock;
18 |
19 | /**
20 | * @author Peter Niederwieser
21 | */
22 | public interface IMockController {
23 | Object handle(IMockInvocation invocation);
24 | }
25 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/codegen/Target.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.mock.codegen;
2 |
3 | /**
4 | * Serves as a reference point for method handle based class loading and is makes the containing package
5 | * non-empty so generated classes can be legally defined inside of it.
6 | */
7 | public class Target {
8 | private Target() {
9 | // never called
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/constraint/PropertyNameConstraint.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.mock.constraint;
2 |
3 | import org.spockframework.mock.*;
4 | import org.spockframework.runtime.GroovyRuntimeUtil;
5 |
6 | public abstract class PropertyNameConstraint implements IInvocationConstraint {
7 | protected String getPropertyName(IMockInvocation invocation) {
8 | IMockMethod method = invocation.getMethod();
9 | return GroovyRuntimeUtil.getterMethodToPropertyName(
10 | method.getName(), method.getParameterTypes(), method.getReturnType());
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2009 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /**
18 | * Spock's built-in mocking framework.
19 | */
20 | package org.spockframework.mock;
21 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/runtime/ByteBuddyInvoker.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.mock.runtime;
2 |
3 | public interface ByteBuddyInvoker {
4 |
5 | Object call(Object[] arguments);
6 | }
7 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/runtime/ByteBuddyMethodInvoker.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.mock.runtime;
2 |
3 | import org.spockframework.mock.*;
4 | import org.spockframework.util.ExceptionUtil;
5 | import org.spockframework.util.ThreadSafe;
6 |
7 | @ThreadSafe
8 | public class ByteBuddyMethodInvoker implements IResponseGenerator {
9 |
10 | private final ByteBuddyInvoker superCall;
11 |
12 | public ByteBuddyMethodInvoker(ByteBuddyInvoker superCall) {
13 | this.superCall = superCall;
14 | }
15 |
16 | @Override
17 | public Object respond(IMockInvocation invocation) {
18 | if (superCall == null) {
19 | throw new IllegalStateException("Cannot invoke abstract method " + invocation.getMethod());
20 | }
21 | try {
22 | return superCall.call(invocation.getArguments().toArray());
23 | } catch (Throwable t) {
24 | // Byte Buddy doesn't wrap exceptions in InvocationTargetException, so no need to unwrap
25 | return ExceptionUtil.sneakyThrow(t);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/runtime/ObjectMethodInvoker.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.mock.runtime;
2 |
3 | import org.spockframework.mock.*;
4 | import org.spockframework.util.ThreadSafe;
5 |
6 | @ThreadSafe
7 | public class ObjectMethodInvoker implements IResponseGenerator {
8 |
9 | public static final ObjectMethodInvoker INSTANCE = new ObjectMethodInvoker();
10 |
11 | private ObjectMethodInvoker() {
12 | }
13 |
14 | @Override
15 | public Object respond(IMockInvocation invocation) {
16 | IMockInteraction interaction = DefaultJavaLangObjectInteractions.INSTANCE.match(invocation);
17 | if (interaction != null) {
18 | return interaction.accept(invocation).get();
19 | }
20 |
21 | return null;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/mock/runtime/SpecificationAttachable.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.mock.runtime;
2 |
3 | import spock.lang.Specification;
4 |
5 | /**
6 | * The Object implementing this interface can be attached to and
7 | * detached from a {@link Specification}.
8 | *
9 | * @author Leonard Bruenings
10 | */
11 | public interface SpecificationAttachable {
12 |
13 | /**
14 | * Attaches the mock to a specification.
15 | *
16 | * @param specification specification that this mock object should attached to
17 | */
18 | void attach(Specification specification);
19 |
20 | /**
21 | * Detaches the mock from its current specification.
22 | */
23 | void detach();
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/report/log/ReportLogConfiguration.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | package org.spockframework.report.log;
16 |
17 | import spock.config.ConfigurationObject;
18 |
19 | @ConfigurationObject("report")
20 | public class ReportLogConfiguration {
21 | public String issueNamePrefix = "";
22 | public String issueUrlPrefix = "";
23 | }
24 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/ConditionFailedWithExceptionError.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.runtime;
2 |
3 | /**
4 | * Indicates that an Exception was thrown while the condition was evaluated.
5 | *
6 | * @since 1.1
7 | */
8 | public class ConditionFailedWithExceptionError extends ConditionNotSatisfiedError {
9 | public ConditionFailedWithExceptionError(Condition condition, Throwable cause) {
10 | super(condition, cause);
11 | }
12 |
13 | @Override
14 | public String getMessage() {
15 | return "Condition failed with Exception:\n\n" + getCondition().getRendering();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/DummyStackTraceFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | package org.spockframework.runtime;
16 |
17 | public class DummyStackTraceFilter implements IStackTraceFilter {
18 | @Override
19 | public void filter(Throwable throwable) {} // do nothing
20 | }
21 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/ErrorCollector.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.runtime;
2 |
3 | import java.util.List;
4 | import java.util.concurrent.CopyOnWriteArrayList;
5 |
6 | public class ErrorCollector {
7 | private final List throwables = new CopyOnWriteArrayList<>();
8 |
9 | public void collectOrThrow(T error) throws T {
10 | throwables.add(error);
11 | }
12 |
13 | public static final String VALIDATE_COLLECTED_ERRORS = "validateCollectedErrors";
14 |
15 | public void validateCollectedErrors() throws Throwable {
16 | switch (throwables.size()) {
17 | case 0:
18 | return;
19 |
20 | case 1:
21 | throw throwables.get(0);
22 |
23 | default:
24 | throw new SpockMultipleFailuresError("", throwables);
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/ErrorRethrower.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.runtime;
2 |
3 | public class ErrorRethrower extends ErrorCollector {
4 | public static final ErrorRethrower INSTANCE = new ErrorRethrower();
5 |
6 | private ErrorRethrower() {
7 | if (INSTANCE != null) {
8 | throw new UnsupportedOperationException();
9 | }
10 | }
11 |
12 | public void collectOrThrow(T error) throws T {
13 | throw error;
14 | }
15 |
16 | @Override
17 | public void validateCollectedErrors() {
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/ExpressionComparisonRenderer.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.runtime;
2 |
3 | import org.spockframework.runtime.model.ExpressionInfo;
4 | import org.spockframework.util.Nullable;
5 |
6 | public interface ExpressionComparisonRenderer {
7 | /**
8 | * Renders a comparison expression.
9 | *
10 | * @param expr the expression to be rendered
11 | * @return the rendering or {@code null} if it can't be rendered by this renderer
12 | */
13 | @Nullable
14 | String render(ExpressionInfo expr);
15 | }
16 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/FailedInstanceOfComparisonRenderer.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.runtime;
2 |
3 | import org.spockframework.runtime.model.ExpressionInfo;
4 | import org.spockframework.util.ObjectUtil;
5 |
6 | public class FailedInstanceOfComparisonRenderer implements ExpressionComparisonRenderer {
7 | @Override
8 | public String render(ExpressionInfo expr) {
9 | if (!(Boolean.FALSE.equals(expr.getValue()))) return null;
10 | if (!expr.isInstanceOfComparison()) return null;
11 |
12 | addTypeHint(expr.getChildren().get(0));
13 | return "false";
14 | }
15 |
16 | private void addTypeHint(ExpressionInfo expr) {
17 | if (expr.getRenderedValue() == null) return;
18 |
19 | Class> exprType = ObjectUtil.voidAwareGetClass(expr.getValue());
20 | expr.setRenderedValue(expr.getRenderedValue() + " (" + exprType.getName() + ")");
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/IFeatureFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2009 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.spockframework.runtime;
18 |
19 | import org.spockframework.runtime.model.FeatureInfo;
20 |
21 | /**
22 | *
23 | * @author Peter Niederwieser
24 | */
25 | public interface IFeatureFilter {
26 | boolean matches(FeatureInfo feature);
27 | }
28 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/IFeatureSortOrder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2009 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.spockframework.runtime;
18 |
19 | import java.util.Comparator;
20 |
21 | import org.spockframework.runtime.model.FeatureInfo;
22 |
23 | /**
24 | * @author Peter Niederwieser
25 | */
26 | public interface IFeatureSortOrder extends Comparator {}
27 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/IStackTraceFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2009 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.spockframework.runtime;
18 |
19 | public interface IStackTraceFilter {
20 | void filter(Throwable throwable);
21 | }
22 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/IStandardStreamsListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package org.spockframework.runtime;
18 |
19 | public interface IStandardStreamsListener {
20 | void standardOut(String message);
21 | void standardErr(String message);
22 | }
23 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/SpockException.java:
--------------------------------------------------------------------------------
1 | package org.spockframework.runtime;
2 |
3 | public class SpockException extends RuntimeException {
4 | public SpockException() {
5 | super();
6 | }
7 |
8 | public SpockException(String message) {
9 | super(message);
10 | }
11 |
12 | public SpockException(String message, Throwable cause) {
13 | super(message, cause);
14 | }
15 |
16 | public SpockException(Throwable cause) {
17 | super(cause);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/condition/IObjectRenderer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | package org.spockframework.runtime.condition;
16 |
17 | public interface IObjectRenderer {
18 | String render(T object);
19 | }
20 |
--------------------------------------------------------------------------------
/spock-core/src/main/java/org/spockframework/runtime/condition/IObjectRendererService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010 the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | * https://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | package org.spockframework.runtime.condition;
16 |
17 | public interface IObjectRendererService extends IObjectRenderer