@nigelcharman nigelcharman released this Jul 14, 2018 · 3 commits to master since this release

Assets 3

New Features

The new features are:

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 to org.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 to org.concordion.api.FixtureDeclarations
  • Parameter 1 of public java.util.List getExampleNames(org.concordion.api.Fixture) has changed its type to org.concordion.api.FixtureDeclarations
  • In method public boolean hasExampleCommands(org.concordion.api.Fixture) the Fixture argument has been removed

org.concordion.api.AbstractCommandDecorator,
org.concordion.api.Command,
org.concordion.api.CommandCall,
org.concordion.api.CommandCallList

  • The setup, execute and verify methods now take an additional argument of type org.concordion.api.Fixture

org.concordion.api.CommandCallList

  • The processSequentially method now takes an additional argument of type org.concordion.api.Fixture

org.concordion.api.EvaluatorFactory

  • The argument of the createEvaluator method has changed type from java.lang.Object toorg.concordion.api.Fixture

org.concordion.api.Fixture

  • Removed org.concordion.api.FixtureDeclarations from the set of implemented interfaces, along with the methods List getClassHierarchyParentFirst(), List getClassPathRoots(), Class getFixtureClass(), String getFixturePathWithoutSuffix(), org.concordion.internal.FixtureType getFixtureType() and public String getSpecificationDescription()

org.concordion.api.FixtureDeclarations

  • Added String getDescription(), Class getFixtureClass() and String getFixturePathWithoutSuffix()

org.concordion.api.ResultSummary

  • The assertIsSatisfied, print and printCountsToString methods all take a org.concordion.api.FixtureDeclarations parameter in-place of org.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 type org.concordion.api.Fixture

org.concordion.api.SpecificationByExample

  • String getSpecificationDescription() and 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 org.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.

@nigelcharman nigelcharman released this Jun 4, 2018 · 61 commits to master since this release

Assets 3

Fixes #255 Markdown link pointing at .md file not renamed to .html file if the destination fixture throws an error.

Thanks to @bkoperski for the fix!

@nigelcharman nigelcharman released this Feb 7, 2018 · 73 commits to master since this release

Assets 3

Fixes

  • Fixed issue #259 - exceptions when using ParallelRunExtension
  • Updated link to archived repository in README (thanks Benoit Maggi)

Internal Changes

  • Added Travis build to check JDK9

@nigelcharman nigelcharman released this Sep 9, 2017 · 82 commits to master since this release

Assets 3

New Features

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)

Internal Changes

  • The constructor of Internal class FixtureRunner takes 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)

@nigelcharman nigelcharman released this Mar 12, 2017 · 103 commits to master since this release

Assets 3

New Features

The new features are:

  • When executing a table, each row can now run as a separate example / JUnit test (#207)
    See Markdown format or HTML format
  • RunListener now has a runStarted event (#222)
  • The @ConcordionResources annotation has been optimised to only copy the resources on the declaring class (#224)
  • Before/After example event ordering has been changed (#225)
  • Only run Java classes that are Concordion fixtures from the run command (#235)

API changes

The change to RunListener will impact any extensions that use this listener, such as the RunTotalsExtension. (v1.1.0 or later of the RunTotalsExtension is needed to work with Concordion 2.1.0 or later).

The other API 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.0.3 and 2.1.0.

Custom test framework integrations

The run command now checks that a Java class is a Concordion fixture before running it. By default, JUnit3 and JUnit4 fixtures are checked. If you have implemented your own integration to a different test framework, and are using the run command, you will need to subclass the TestFrameworkProvider interface and follow the instructions in the TestFrameworkProvider javadoc to integrate it.

@nigelcharman nigelcharman released this Nov 20, 2016 · 115 commits to master since this release

Assets 3

Installation

This snapshot has been published to the oss.jfrog.org repository.

Instructions are below for installing using Gradle, Maven or through a Download.

Gradle

Add the oss.jfrog.org snapshot repository to your repositories:

repositories {
    mavenCentral()
    maven {
        url "http://oss.jfrog.org/artifactory/simple/oss-snapshot-local/"
    }
}

and declare the Concordion dependency:

dependencies {
    testCompile "org.concordion:concordion:2.1.0-SNAPSHOT
}

Maven

Create a profile containing the oss.jfrog.org snapshot repository in your settings.xml file, for example:

<profile>
  <id>jfrog</id>
    <repositories>
            <repository>
                <id>central</id>
                <url>http://[host]:[port]/artifactory/libs-release</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
            <repository>
            <id>snapshots</id>
            <url>https://oss.jfrog.org/artifactory/libs-snapshot/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>    
</profile>

ensure the profile is active, eg:

<activeProfiles>
  <activeProfile>jfrog</activeProfile>
</activeProfiles>

and declare the Concordion dependency in your pom.xml:

<dependency>
  <groupId>org.concordion</groupId>
  <artifactId>concordion</artifactId>
  <version>2.1.0-SNAPSHOT</version>
  <scope>test</scope>
</dependency>

Download

concordion-2.1.0-SNAPSHOT.zip - distribution bundle including Concordion jar, dependencies and source code.

After downloading add the concordion jar and the jar files in the lib folder to your classpath.

New Features

The new features are:

When executing a table, each row can now be a separate example (#207)

Markdown

By adding the command "c:example" to one of the header columns, each row will be executed as an example. The example name for the row is set to the value of that column. For example:

|[ ](- "#z=add(#x, #y)") [Example Name](- "c:example") | [Number 1](- "#x")|[Number 2](- "#y")|[Result](- "?=#z")|
| --------------------------                                           | ----------------: | ---------------: | ---------------: |
| Positive numbers                                          |                  1|                 2|                 3|
| Negative numbers                                          |                  -2|                -5|                -7|

will run 2 examples named Positive numbers, Negative numbers, each as a separate JUnit test.

HTML

By adding the attribute "concordion:example" to one of the header columns, each row will be executed as an example. The example name for the row is set to the value of that column. For example:

    <table c:execute="#z=add(#x, #y)">
        <tr>
            <th c:example="">Example Name</th>
            <th c:set="#x">Number 1</th>
            <th c:set="#y">Number 2</th>
            <th c:assertEquals="#z">Result</th>
        </tr>
        <tr>
            <td>Positive numbers</td>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>Negative numbers</td>
            <td>-2</td>
            <td>-5</td>
            <td>-7</td>
        </tr>
    </table>

will run 2 examples named Positive numbers, Negative numbers, each as a separate JUnit test.

RunListener now has a runStarted event (#222)

The @ConcordionResources annotation has been optimised to only copy the resources on the declaring class (#224)

Before/After example event ordering has been changed (#225)

API changes

The change to RunListener will impact any extensions that use this listener, such as the RunTotalsExtension. (An updated 1.1.0-SNAPSHOT release of the RunTotalsExtension is now available).

The other API 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 2.0.3...master for changes between Concordion 2.0.3 and current.

Changes since last 2.1.0-SNAPSHOT

  • Removed Concise Markdown Table Format

Feedback

Please supply feedback on this release to our Google Group, and report any issues to our Github issues page.

Pre-release

@nigelcharman nigelcharman released this Oct 30, 2016 · 119 commits to master since this release

Assets 3

Installation

This snapshot has been published to the oss.jfrog.org repository.

Instructions are below for installing using Gradle, Maven or through a Download.

Gradle

Add the oss.jfrog.org snapshot repository to your repositories:

repositories {
    mavenCentral()
    maven {
        url "http://oss.jfrog.org/artifactory/simple/oss-snapshot-local/"
    }
}

and declare the Concordion dependency:

dependencies {
    testCompile "org.concordion:concordion:2.1.0-SNAPSHOT
}

Maven

Create a profile containing the oss.jfrog.org snapshot repository in your settings.xml file, for example:

<profile>
  <id>jfrog</id>
    <repositories>
            <repository>
                <id>central</id>
                <url>http://[host]:[port]/artifactory/libs-release</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
            <repository>
            <id>snapshots</id>
            <url>https://oss.jfrog.org/artifactory/libs-snapshot/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>    
</profile>

ensure the profile is active, eg:

<activeProfiles>
  <activeProfile>jfrog</activeProfile>
</activeProfiles>

and declare the Concordion dependency in your pom.xml:

<dependency>
  <groupId>org.concordion</groupId>
  <artifactId>concordion</artifactId>
  <version>2.1.0-SNAPSHOT</version>
  <scope>test</scope>
</dependency>

Download

concordion-2.1.0-SNAPSHOT.zip - distribution bundle including Concordion jar, dependencies and source code.

After downloading add the concordion jar and the jar files in the lib folder to your classpath.

New Features

The new features are:

When executing a table, each row can now be a separate example (#207)

If you add the attribute "concordion:example" to one of the header columns, then each row will be executed as an example. The example name for the row is set to the value of that column. For example:

    <table c:execute="#z=add(#x, #y)">
        <tr>
            <th c:example="">Example Name</th>
            <th c:set="#x">Number 1</th>
            <th c:set="#y">Number 2</th>
            <th c:assertEquals="#z">Result</th>
        </tr>
        <tr>
            <td>Positive numbers</td>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>Negative numbers</td>
            <td>-2</td>
            <td>-5</td>
            <td>-7</td>
        </tr>
    </table>

will run 2 examples named Positive numbers, Negative numbers, each as a separate JUnit test.

Concise markdown format for tables with examples (#223)

When using Markdown format specs, the above example could be written as:

|[_add_](- "#z=add(#x, #y)") [Example Name](- "c:example") | [Number 1](- "#x")|[Number 2](- "#y")|[Result](- "?=#z")|
| --------------------------                                | ----------------: | ---------------: | ---------------: |
| Positive numbers                                          |                  1|                 2|                 3|
| Negative numbers                                          |                  -2|                -5|                -7|

However, to make this simpler a new concise syntax has been introduced when the first column contains the example name:

|[Example Name](- "#z=add(#x, #y)") | [Number 1](- "#x")|[Number 2](- "#y")|[Result](- "?=#z")|
| --------------------------        | ----------------: | ---------------: | ---------------: |
| Positive numbers                  |                  1|                 2|                 3|
| Negative numbers                  |                 -2|                -5|                -7|

See Markdown spec source

RunListener now has a runStarted event (#222)

The @ConcordionResources annotation has been optimised to only copy the resources on the declaring class (#224)

Before/After example event ordering has been changed (#225)

API changes

The change to RunListener will impact any extensions that use this listener, such as the RunTotalsExtension.

The other API 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 2.0.3...master for changes between Concordion 2.0.3 and current.

Feedback

Please supply feedback on this release to our Google Group, and report any issues to our Github issues page.

@nigelcharman nigelcharman released this Aug 28, 2016 · 179 commits to master since this release

Assets 3

This release contains 2 defect fixes:

  • Having single quotes in example name prevents closing of examples. #206
  • Markdown: XML elements in Concordion commands are not being escaped. #208

@nigelcharman nigelcharman released this May 7, 2016 · 187 commits to master since this release

Assets 3

This release adds functionality required by the parallel run extension. If not using this extension, there's no reason to update to this version.

@nigelcharman nigelcharman released this Apr 23, 2016 · 194 commits to master since this release

Assets 3
  • Fixed parallel runner doesn't aggregate results (concordion/concordion-parallel-run-extension#2)
  • Fixed JUnit3 runner doesn't print output (#196)
  • Added isCreated method to ScopedObjectHolder enhancement (#201)
  • Move BeforeSuite annotated methods to occur before specification is parsed (#195)
  • Update TestRig to include additional methods for ScreenshotExtension enhancement (#193)