Releases: concordion/concordion
4.0.1
4.0.0
Concordion 4.0.0
New Features
- Concordion now supports JUnit5 Jupiter!!!
To use it, just replace @RunWith(ConcordionRunner.class)
with @ConcordionFixture
in your fixture classes.
If you're using the concordion:run
command with JUnit 4 specifications, you should also add junit-vintage-engine
to your build file. For example:
testRuntimeOnly('org.junit.vintage:junit-vintage-engine')
with Gradle, or
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.9.3</version>
<scope>test</scope>
</dependency>
with Maven.
It's been a very long road to get here, starting with the work of @tenwit and @drtimwright.
Last year, @lorenzodee took the bull by the horns and developed a ConcordionTestEngine for JUnit 5. The work he has done is excellent! Sorry for the delay in adding the final touches over the last few months.
- While we continue to support JUnit 4 fixtures with the JUnit Vintage runner, JUnit 3 is no longer supported.
3.2.0
Concordion 3.2.0
New Features
- Now uses JUnit5 with the Vintage engine, which provides a TestEngine for running JUnit 3 and JUnit 4 based tests. This is a step towards implementing a JUnit5 Jupiter engine in the upcoming Concordion v4.0.0. There is a small performance penalty since we now need to have a 2-pass build of Concordion to discover the examples before running the tests. Thanks to @lorenzodee for the great work in developing this and the Jupiter engine!
Bug Fixes
- Fixed ResourceFinder which was failing on Windows.
- Cleaned up deprecated methods.
Build Updates
- Gradle has been updated to Gradle 7.5 to support JDK17.
- git-publish plugin has been updated to 3.0.1.
3.1.3
Fix #285 "URI is not heirarchical" when using @ConcordionResources
with JDK9+
Thanks to @sergiowww for the patch!
3.1.2
Additional dependencies added as compile
rather than runtime
dependencies (api
rather than implementation
in Gradle):
- flexmark
- flexmark-ext-gfm-strikethrough
- flexmark-ext-tables
- xom
3.1.1
3.1.0
Concordion 3.1.0
New Features
On occasions where the whole table row is required when using the execute on a table command, for example logging the row, the special variable #ROW contains a Map<String, String> with the key being the column header value and the value being the column cell value for each column in the table row. Examples are provided in the execute on a table specification. This resolves #313 and #316.
Bug Fixes
- Resources are now copied when a relative path is passed to
@ConcordionResources
. Fixes #286.
Build Updates
- Gradle has been updated to Gradle 7. A number of the plugins have been updated. The publishing scripts have been added to
build.gradle
withpublish.gradle
being removed. - Travis CI has been replaced by GitHub Actions for building and testing Concordion.
- With Bintray and JCenter being retired, the Gradle build has been updated to publish to Maven Central. References to JCenter have been replaced by Maven Central.
Dependency Updates
- JUnit has been updated to 4.13.2
- OGNL has been updated to 3.1.29
- XOM has been updated to 1.3.7
3.0.1
3.0.0
Concordion 3.0.0 requires Java 8 or later and JUnit 4.
JUnit 3 and earlier versions of Java are no longer supported.
New Features
The deprecated Pegdown markdown parser has been replaced by Flexmark. Flexmark is faster, supports CommonMark and has additional extensions and configuration options.
The MarkdownExtensions that were introduced for Pegdown for Concordion 2.0.0 are still supported.
A new annotation FlexmarkOptions has been introduced to support the extended range of extensions and configuration options supported by Flexmark.
Dependencies
The Flexmark library has been added.
The Pegdown and Parboiled libraries have been removed.
Deprecated methods removed
The following deprecated methods have been removed:
AbstractCommand
List getExamples(CommandCall command)
void execute(CommandCall commandCall, Evaluator evaluator, ResultRecorder resultRecorder)
void setUp(CommandCall commandCall, Evaluator evaluator, ResultRecorder resultRecorder)
void verify(CommandCall commandCall, Evaluator evaluator, ResultRecorder resultRecorder)
ClassNameBasedSpecificationLocator
ClassNameBasedSpecificationLocator(String specificationSuffix)
FixtureRunner
ResultSummary run(Fixture fixture)
2.2.0
New Features
The new features are:
- #267 - Allow examples to be selectively
IGNORED
orEXPECTED_TO_FAIL
, using new extension method withImplementationStatusModifier(). (Thanks to chiknrice for the PR).
Individual examples can also be ignored by marking up the example in the specification with a status of Ignored
. For example, using Markdown format:
### [Header text](- "example name c:status=Ignored")
or in HTML:
<div c:example="my-example" c:status="Ignored">
Fixes
- #264 - Fix for issues #246 and #262 - Example listeners are passed the wrong example fixture instance when a specification contains multiple examples.
API changes for extensions
This release introduces a number of API changes.
These changes won't impact users of Concordion directly, but may impact extension users and creators. If you are using an affected extension, you will be notified on startup of Concordion via a message to the stderr console.
If you are using the following extensions, they will need to be upgraded:
concordion-executeonlyif-extension
Will need upgrading to version 0.3.0 (or later)
concordion-run-totals-extension
Will need upgrading to version 1.2.0 (or later)
concordion-embed-extension
Uses APIs that are now deprecated, should be upgraded to version 1.2.0 (or later) before Concordion 3.0.0.
concordion-excel-extension
Uses APIs that are now deprecated, should be upgraded to version 2.1.0 (or later) before Concordion 3.0.0
concordion-screenshot-extension
Uses APIs that are now deprecated, should be upgraded to version 1.3.0 (or later) before Concordion 3.0.0
API changes
The following public APIs have been changed:
org.concordion.Concordion
- Parameter 5 of
public Concordion(java.util.List, org.concordion.api.SpecificationLocator, org.concordion.api.SpecificationReader, org.concordion.api.EvaluatorFactory, org.concordion.api.Fixture)
has changed its type toorg.concordion.api.FixtureDeclarations
- The deprecated constructor
public Concordion(org.concordion.api.SpecificationLocator, org.concordion.api.SpecificationReader, org.concordion.api.EvaluatorFactory, org.concordion.api.Fixture)
has been removed - Parameter 1 of
public void checkValidStatus(org.concordion.api.Fixture)
has changed its type toorg.concordion.api.FixtureDeclarations
- Parameter 1 of
public java.util.List getExampleNames(org.concordion.api.Fixture)
has changed its type toorg.concordion.api.FixtureDeclarations
- In method
public boolean hasExampleCommands(org.concordion.api.Fixture)
theFixture
argument has been removed
org.concordion.api.AbstractCommandDecorator,
org.concordion.api.Command,
org.concordion.api.CommandCall,
org.concordion.api.CommandCallList
- The
setup
,execute
andverify
methods now take an additional argument of typeorg.concordion.api.Fixture
org.concordion.api.CommandCallList
- The
processSequentially
method now takes an additional argument of typeorg.concordion.api.Fixture
org.concordion.api.EvaluatorFactory
- The argument of the
createEvaluator
method has changed type fromjava.lang.Object
toorg.concordion.api.Fixture
org.concordion.api.Fixture
- Removed
org.concordion.api.FixtureDeclarations
from the set of implemented interfaces, along with the methodsList getClassHierarchyParentFirst()
,List getClassPathRoots()
,Class getFixtureClass()
,String getFixturePathWithoutSuffix()
,org.concordion.internal.FixtureType getFixtureType()
andpublic String getSpecificationDescription()
org.concordion.api.FixtureDeclarations
- Added
String getDescription()
,Class getFixtureClass()
andString getFixturePathWithoutSuffix()
org.concordion.api.ResultSummary
- The
assertIsSatisfied
,print
andprintCountsToString
methods all take aorg.concordion.api.FixtureDeclarations
parameter in-place oforg.concordion.api.Fixture
- The deprecated versions of these methods have been removed
org.concordion.api.Specification
- Added 'String getDescription()' method
void process(org.concordion.api.Evaluator, org.concordion.api.ResultRecorder)
now takes an additional parameter of typeorg.concordion.api.Fixture
org.concordion.api.SpecificationByExample
String getSpecificationDescription()
andvoid setFixture(org.concordion.api.Fixture)
have been removedvoid processExample(org.concordion.api.Evaluator, java.lang.String, org.concordion.api.ResultRecorder)
now takes an additional parameter of typeorg.concordion.api.Fixture
org.concordion.api.SpecificationLocator
- Parameter 1 of
org.concordion.api.Resource locateSpecification(java.lang.Object, java.lang.String)
has changed its type to org.concordion.api.FixtureDeclarations - Method
public org.concordion.api.Resource locateSpecification(java.lang.Object)
has been removed
org.concordion.api.SpecificationLocatorWithType
- Class
org.concordion.api.SpecificationLocatorWithType
removed
org.concordion.api.extension.ConcordionExtender
- Method 'public org.concordion.api.extension.ConcordionExtender withImplementationStatusModifier(org.concordion.api.ImplementationStatusModifier)' has been added
org.concordion.api.listener.ExampleEvent,
org.concordion.api.listener.OuterExampleEvent
- Method 'public ExampleEvent(java.lang.String, org.concordion.api.Element, org.concordion.api.ResultSummary)' has a new parameter of type org.concordion.api.Fixture
- Method 'public org.concordion.api.Fixture getFixture()' has been added
The other internal changes should not affect users who are using Concordion as-is, or who are using the Extension mechanism, but are potentially breaking for users who are extending the Concordion code base directly. See changes between Concordion 2.1.3 and 2.2.0.