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.
- Resources are now copied when a relative path is passed to
@ConcordionResources. Fixes #286.
- Gradle has been updated to Gradle 7. A number of the plugins have been updated. The publishing scripts have been added to
- 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.
- JUnit has been updated to 4.13.2
- OGNL has been updated to 3.1.29
- XOM has been updated to 1.3.7
Concordion 3.0.0 requires Java 8 or later and JUnit 4.
JUnit 3 and earlier versions of Java are no longer supported.
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.
The Flexmark library has been added.
The Pegdown and Parboiled libraries have been removed.
Deprecated methods removed
The following deprecated methods have been removed:
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)
ResultSummary run(Fixture fixture)
The new features are:
- #267 - Allow examples to be selectively
EXPECTED_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">
- #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:
Will need upgrading to version 0.3.0 (or later)
Will need upgrading to version 1.2.0 (or later)
Uses APIs that are now deprecated, should be upgraded to version 1.2.0 (or later) before Concordion 3.0.0.
Uses APIs that are now deprecated, should be upgraded to version 2.1.0 (or later) before Concordion 3.0.0
Uses APIs that are now deprecated, should be upgraded to version 1.3.0 (or later) before Concordion 3.0.0
The following public APIs have been changed:
- 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 to
- 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 to
- Parameter 1 of
public java.util.List getExampleNames(org.concordion.api.Fixture)has changed its type to
- In method
public boolean hasExampleCommands(org.concordion.api.Fixture)the
Fixtureargument has been removed
verifymethods now take an additional argument of type
processSequentiallymethod now takes an additional argument of type
- The argument of the
createEvaluatormethod has changed type from
org.concordion.api.FixtureDeclarationsfrom the set of implemented interfaces, along with the methods
public String getSpecificationDescription()
printCountsToStringmethods all take a
org.concordion.api.FixtureDeclarationsparameter in-place of
- The deprecated versions of these methods have been removed
- Added 'String getDescription()' method
void process(org.concordion.api.Evaluator, org.concordion.api.ResultRecorder)now takes an additional parameter of type
void setFixture(org.concordion.api.Fixture)have been removed
void processExample(org.concordion.api.Evaluator, java.lang.String, org.concordion.api.ResultRecorder)now takes an additional parameter of type
- Parameter 1 of
org.concordion.api.Resource locateSpecification(java.lang.Object, java.lang.String)has changed its type to org.concordion.api.FixtureDeclarations
public org.concordion.api.Resource locateSpecification(java.lang.Object)has been removed
- Method 'public org.concordion.api.extension.ConcordionExtender withImplementationStatusModifier(org.concordion.api.ImplementationStatusModifier)' has been added
- 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.
The new features are:
- Fixed issue with exception handing in extensions (#241, #242)
- Allow ConcordionRunner extended by other frameworks be usable as well (#250, #251) (thanks to @dadrus for the fix and @gdubya for reporting)
- Enable usage of third party SpecificationLocator objects (#250) (thanks to @dadrus for the PR)
- The constructor of Internal class
FixtureRunnertakes an additional parameter of
SpecificationLocator. This is reflected in the JUnit3 and JUnit4 support, and may affect users who are implementing their own runners.
- Integrated CLAHub for contributor license agreements (#238, #239)
- Added Jacoco to build.gradle (#240)
- Moved specifications to a common folder so we can re-use across Java and .NET implementations (#247)
- Modified Travis build to use openjdk7 and removed openjdk6 (#252)