MCPcopy Index your code
hub / github.com/concordion/concordion

github.com/concordion/concordion @4.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 4.0.1 ↗ · + Follow
2,270 symbols 6,320 edges 502 files 115 documented · 5% updated 14mo ago4.0.1 · 2023-07-16★ 24632 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Build Status Maven Central Apache License 2.0

Concordion is an open source runner for executable specifications that creates rich living documentation.

Users should see the Concordion web site for details of how to download and use Concordion.

This README covers information for people wanting to work with the Concordion Java source code. Unmaintained versions of Concordion are also available for other languages, but not with the full feature set. See Concordion.NET, pyconcordion and ruby-concordion.

Target Java version

Concordion currently targets Java 8 and above.

Building Concordion

Concordion uses Gradle as a build tool. The code base includes the Gradle Wrapper, which will automatically download the correct version of Gradle.

From the command line, run gradlew tasks to show available tasks.

Note: If the current directory is not on your path, you will need to use ./gradlew tasks on Unix-based systems, or .\gradlew tasks on Windows.

Compiling and Running the Tests

The test task runs both the Concordion specification tests and unit tests. Since Concordion supports both JUnit Vintage and JUnit Jupiter, the tests can run with either version of JUnit.

To run the tests with JUnit Jupiter, run the following from the command line:

gradlew clean test

To run the tests with JUnit Vintage, run the following from the command line:

gradlew clean testVintage

This will download the required dependencies, clean the existing project, recompile all source code and run all the tests. The Concordion specification output is written to the ./build/reports/spec folder.

Pre-processor

To switch between the JUnit Jupiter and Vintage tests, Concordion uses the Manifold preprocessor.

For example:

#if JUNIT_VINTAGE
@RunWith(ConcordionRunner.class)
#else
@ConcordionFixture
#endif

The JUNIT_VINTAGE compiler argument is set by the testVintage Gradle task.

Creating a jar file

Run the following from the command line:

gradlew clean jar

The jar file is written to the ./build/libs folder.

Installing a jar file into your local Maven repository

Installing a Concordion jar file into your local Maven repository makes it available to other projects that are using Maven or Gradle to manage their dependencies.

Run the following from the command line:

gradlew pTML

(where pTML is short for publishToMavenLocal).

Using the Concordion jar file from your local Maven repository in a Gradle project

In order to use the local Maven repository in a Gradle project, you must add mavenLocal() to your repositories block. You can add this to the project's build.gradle script, or set it globally by adding the following to your ~/.gradle/init.gradle script:

allprojects {
    repositories {
        mavenLocal()
    }
}

You will then need to ensure that your project's build.gradle script refers to the version you have in your local Maven repository, for example your dependencies might include:

org.concordion:concordion:2.0.0-SNAPSHOT

or

org.concordion:concordion:+

for the latest version.

Importing the project into your IDE

Dependent on the version of your IDE, you may need to install a Gradle plugin to your IDE before importing the project. See Gradle tooling for details.

On importing the project to your IDE, the required dependencies will be downloaded.

For IntelliJ IDEA, installing the Manifold plugin will enable IntelliJ to recognise the Manifold preprocessor syntax.

Wiki

See the wiki for our version numbering approach and details of making a new release.

Project History

History prior to April 2013 is in Google code archive code and history.

Extension points exported contracts — how you extend this code

ExampleListener (Interface)
@since 2.0.0 [9 implementers]
src/main/java/org/concordion/api/listener/ExampleListener.java
Compiler (Interface)
(no doc) [6 implementers]
src/test/java/test/concordion/compiler/Compiler.java
ConcordionExtension (Interface)
Supplements Concordion behaviour by adding new commands, listeners or output enhancements. To use extensions, set th [39 …
src/main/java/org/concordion/api/extension/ConcordionExtension.java
OutputStreamer (Interface)
(no doc) [5 implementers]
src/test/java/test/concordion/OutputStreamer.java
SpecificationConverter (Interface)
Converts specifications from one type to another. For example, from Markdown to HTML. @since 2.0.0 [5 implementers]
src/main/java/org/concordion/api/SpecificationConverter.java
DiagnosticMessage (Interface)
(no doc) [2 implementers]
src/test/java/test/concordion/compiler/DiagnosticMessage.java
TestFrameworkProvider (Interface)
An interface for integrating other test frameworks with Concordion. Currently this is limited to determining whether a g [4 …
src/main/java/org/concordion/integration/TestFrameworkProvider.java
ExpectationChecker (Interface)
(no doc) [6 implementers]
src/main/java/org/concordion/internal/ExpectationChecker.java

Core symbols most depended-on inside this repo

get
called by 105
src/main/java/org/concordion/api/CommandCallList.java
add
called by 86
src/main/java/org/concordion/internal/cache/CompositeRunOutput.java
append
called by 70
src/main/java/org/concordion/api/CommandCallList.java
getElement
called by 64
src/main/java/org/concordion/internal/Row.java
getName
called by 60
src/main/java/org/concordion/api/ExampleDefinition.java
format
called by 45
src/main/java/org/concordion/internal/util/SimpleFormatter.java
appendChild
called by 45
src/main/java/org/concordion/api/Element.java
size
called by 40
src/main/java/org/concordion/api/CommandCallList.java

Shape

Method 1,748
Class 443
Interface 50
Function 20
Enum 9

Languages

Java99%
TypeScript1%

Modules by API surface

src/main/java/org/concordion/internal/ConcordionBuilder.java46 symbols
src/test/java/org/concordion/internal/runner/StubTestExecutionSummary.java38 symbols
src/main/java/org/concordion/api/Element.java36 symbols
src/test/java/test/concordion/ProcessingResult.java33 symbols
src/main/java/org/concordion/api/extension/ConcordionExtender.java27 symbols
src/test/java/spec/concordion/common/command/expressions/ComplexExpressionsTest.java23 symbols
src/main/java/org/concordion/api/CommandCall.java22 symbols
src/test/java/org/concordion/internal/runner/DefaultConcordionRunnerTest.java19 symbols
src/main/java/org/concordion/internal/SummarizingResultRecorder.java18 symbols
src/main/java/org/concordion/internal/command/ExampleCommand.java17 symbols
src/test/java/test/concordion/TestRig.java16 symbols
src/main/java/org/concordion/internal/runner/DefaultConcordionRunner.java16 symbols

For agents

$ claude mcp add concordion \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact