Skip to content

Commit

Permalink
Document implementation of listeners in non-main files
Browse files Browse the repository at this point in the history
Closes #991
  • Loading branch information
horenmar committed Aug 18, 2017
1 parent 626b1d3 commit 3dc4de8
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
8 changes: 8 additions & 0 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ Nonetheless there are still some occasions where finer control is needed. For th

Although Catch is header only it still, internally, maintains a distinction between interface headers and headers that contain implementation. Only one source file in your test project should compile the implementation headers and this is controlled through the use of one of these macros - one of these identifiers should be defined before including Catch in *exactly one implementation file in your project*.

# Reporter / Listener interfaces

CATCH_CONFIG_EXTERNAL_INTERFACES // Brings in neccessary headers for Reporter/Listener implementation

Brings in various parts of Catch that are required for user defined Reporters and Listeners. This means that new Reporters and Listeners can be defined in this file as well as in the main file.

Implied by both `CATCH_CONFIG_MAIN` and `CATCH_CONFIG_RUNNER`.

# Prefixing Catch macros

CATCH_CONFIG_PREFIX_ALL
Expand Down
7 changes: 4 additions & 3 deletions docs/event-listeners.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ so you are not forced to implement events you're not interested in.


## Implementing a Listener
Simply derive a class from `Catch::TestEventListenerBase` and implement the methods you are interested in, either in
the main source file (i.e. the one that defines `CATCH_CONFIG_MAIN` or `CATCH_CONFIG_RUNNER`), or in a
file that defines `CATCH_CONFIG_EXTERNAL_INTERFACES`.

In your main source file (i.e. the one that has the `#define` for `CATCH_CONFIG_MAIN` or `CATCH_CONFIG_RUNNER`),
simply derive a class from `Catch::TestEventListenerBase` and implement the methods you are interested in.
Then register it using `INTERNAL_CATCH_REGISTER_LISTENER`.
Then register it using `CATCH_REGISTER_LISTENER`.

For example:

Expand Down

0 comments on commit 3dc4de8

Please sign in to comment.