Releases: concordion/concordion
Release list
4.0.1
Concordion 4.0.1
Bug Fixes
- Fixed issue #355 when using Concordion commands on table rows with Markdown specifications
Build Updates
- Gradle has been updated to Gradle 8.2 to support JDK20.
- Updated gradle plugins
- Fixed gradle deprecation warnings
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
Concordion 3.1.1
Bug fixes
- Concordion 3.1.0 exposes JUnit as a
runtimerather than acompiledependency. Users will need to add JUnit as a dependency to their build scripts. In Concordion 3.1.1 it reverts to being acompiledependency. Fixes #331.
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.gradlewithpublish.gradlebeing 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
IGNOREDorEXPECTED_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)theFixtureargument has been removed
org.concordion.api.AbstractCommandDecorator,
org.concordion.api.Command,
org.concordion.api.CommandCall,
org.concordion.api.CommandCallList
- The
setup,executeandverifymethods now take an additional argument of typeorg.concordion.api.Fixture
org.concordion.api.CommandCallList
- The
processSequentiallymethod now takes an additional argument of typeorg.concordion.api.Fixture
org.concordion.api.EvaluatorFactory
- The argument of the
createEvaluatormethod has changed type fromjava.lang.Objecttoorg.concordion.api.Fixture
org.concordion.api.Fixture
- Removed
org.concordion.api.FixtureDeclarationsfrom 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,printandprintCountsToStringmethods all take aorg.concordion.api.FixtureDeclarationsparameter 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.SpecificationLocatorWithTyperemoved
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.