<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/tests/SelfTest/TestRegistrations.cpp, branch 0.1.0</title>
<subtitle>Progmasoft Catch3: an independently maintained C++17 test framework with a parallel runner, property checks, snapshots and structured results.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/'/>
<entry>
<title>Let reporters opt into fast path in RunContext::assertionStarting</title>
<updated>2025-07-17T11:47:44+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-07-17T11:13:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=c22096846c98211e0bcd23dbbd155698fbd718b3'/>
<id>c22096846c98211e0bcd23dbbd155698fbd718b3</id>
<content type='text'>
The fast path allows `RunContext` to skip disabling output redirect,
and notifying the reporters, turning `RunContext::notifyAssertionStarted`
into a no-op. This improves the overall performance of assertion handling
significantly, and also prepares ground for future changes around
assertion handling and thread safety.

For simple 10M assertion run, this improves the running time by ~30%
in Debug build and ~40% in Release build.

For backwards-compatibility reasons, the fast path is disabled
by default. However, none of the first party reporters use the
`assertionStarting` event, so all first party reporters are opted-in.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The fast path allows `RunContext` to skip disabling output redirect,
and notifying the reporters, turning `RunContext::notifyAssertionStarted`
into a no-op. This improves the overall performance of assertion handling
significantly, and also prepares ground for future changes around
assertion handling and thread safety.

For simple 10M assertion run, this improves the running time by ~30%
in Debug build and ~40% in Release build.

For backwards-compatibility reasons, the fast path is disabled
by default. However, none of the first party reporters use the
`assertionStarting` event, so all first party reporters are opted-in.
</pre>
</div>
</content>
</entry>
<entry>
<title>Ignore C++98 related compiler warnings</title>
<updated>2024-03-12T21:56:37+00:00</updated>
<author>
<name>Chris Thrasher</name>
</author>
<published>2024-03-12T17:27:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=88f4ec3cc5620c45086e972bd372d3ba3df8c3d3'/>
<id>88f4ec3cc5620c45086e972bd372d3ba3df8c3d3</id>
<content type='text'>
Catch2 has long since required a standard newer than C++98 so we
can safely ignore any warnings related to such old standards.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Catch2 has long since required a standard newer than C++98 so we
can safely ignore any warnings related to such old standards.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix references to license file</title>
<updated>2022-10-28T09:30:15+00:00</updated>
<author>
<name>Lars Toenning</name>
</author>
<published>2022-10-28T09:22:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=f1084fb30990fe40c8f5b70034970c7eb4e1da72'/>
<id>f1084fb30990fe40c8f5b70034970c7eb4e1da72</id>
<content type='text'>
The license file was renamed with 6a502cc2f5fedd59b3495b58708f0d6d987ed9e1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The license file was renamed with 6a502cc2f5fedd59b3495b58708f0d6d987ed9e1
</pre>
</div>
</content>
</entry>
<entry>
<title>Add --list-listeners option</title>
<updated>2022-05-10T18:57:59+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-10T18:00:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=5a49285e9cf203dd20b00ac7488a6a3233d60fff'/>
<id>5a49285e9cf203dd20b00ac7488a6a3233d60fff</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Event listeners no longer take reporter config in constructor</title>
<updated>2022-03-17T23:36:18+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-03-14T14:04:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=4acc520f763f7a104d11d57afb8d3bab0bfa6ebc'/>
<id>4acc520f763f7a104d11d57afb8d3bab0bfa6ebc</id>
<content type='text'>
This also required splitting out Listener factory from
the reporter factory hierarchy. In return, the listener
factories only need to take in `IConfig const*`, which
opens up further refactorings down the road in the colour
selection and implementation.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This also required splitting out Listener factory from
the reporter factory hierarchy. In return, the listener
factories only need to take in `IConfig const*`, which
opens up further refactorings down the road in the colour
selection and implementation.
</pre>
</div>
</content>
</entry>
<entry>
<title>Sweep out some Wsign-conversion warnings</title>
<updated>2021-11-23T22:16:08+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2021-11-20T22:40:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=8cb8f0b08b0ec35edd346df999f3b854ad05aa41'/>
<id>8cb8f0b08b0ec35edd346df999f3b854ad05aa41</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move reporter_registrars.hpp to reporters/</title>
<updated>2021-11-10T22:52:59+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2021-11-10T22:52:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9200b4078bcec238b0ebe9f60d31ae02693c4e23'/>
<id>9200b4078bcec238b0ebe9f60d31ae02693c4e23</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add consistency-checking event listener to SelfTest</title>
<updated>2021-09-15T21:38:43+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2021-09-15T19:46:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=3f8cae8025f4f5e804383f44bb393a63bcef90a4'/>
<id>3f8cae8025f4f5e804383f44bb393a63bcef90a4</id>
<content type='text'>
This event listener performs basic consistency checks (akin to
matching braces) on events that are passed to the listeners
when the `SelfTest` test binary is run.

The current checks are about nesting events (e.g. `testCaseStarting`
cannot be received before `testRunStarting`, `sectionStarting`
can only be received when a test case is active, etc), and matching
up counts of starting/ended events.

The simplicity means that it could be confused by starting/ended
events matching up but being out of order, e.g.
```
* test case A starting
* test case B ended
* test case B starting
* test case A ended
```
would be accepted, even though it is wrong. However, doing full
order checking would be much more implementation work, for relatively
little benefit, so it is left out for now.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This event listener performs basic consistency checks (akin to
matching braces) on events that are passed to the listeners
when the `SelfTest` test binary is run.

The current checks are about nesting events (e.g. `testCaseStarting`
cannot be received before `testRunStarting`, `sectionStarting`
can only be received when a test case is active, etc), and matching
up counts of starting/ended events.

The simplicity means that it could be confused by starting/ended
events matching up but being out of order, e.g.
```
* test case A starting
* test case B ended
* test case B starting
* test case A ended
```
would be accepted, even though it is wrong. However, doing full
order checking would be much more implementation work, for relatively
little benefit, so it is left out for now.
</pre>
</div>
</content>
</entry>
<entry>
<title>Split EventListener base from streaming_base.hpp</title>
<updated>2020-08-29T17:09:54+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-24T20:52:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=33ad1ee2ac7beaae8d6bfa661213d13cecbce196'/>
<id>33ad1ee2ac7beaae8d6bfa661213d13cecbce196</id>
<content type='text'>
The base was also renamed from `TestEventListenerBase` to
`EventListenerBase`, and modified to derive directly from the
reporter interface, rather than deriving from `StreamingReporterBase`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The base was also renamed from `TestEventListenerBase` to
`EventListenerBase`, and modified to derive directly from the
reporter interface, rather than deriving from `StreamingReporterBase`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Split catch_reporter_bases.hpp into two separate headers</title>
<updated>2020-08-23T05:30:26+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-22T21:16:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=ed7eaf2df3dc4d38974234591d725c4cdba11a84'/>
<id>ed7eaf2df3dc4d38974234591d725c4cdba11a84</id>
<content type='text'>
Each of the two reporter bases now has its own header file, and
cpp file. Even though this adds another TU to the compilation,
the total CPU time taken by compilation is reduced by about 1%
for debug build and ~0.5% for optimized build of the main library.
(The improvement would be roughly doubles without splitting the TUs,
but the maintainability hit is not worth it.)

The code size of the static library build has also somewhat decreased.

Follow up: Introduce combined TU for reporters, and further split
apart the catch_reporter_streaming_base.hpp header into its
constituent parts, as it still contains a whole bunch of other stuff.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Each of the two reporter bases now has its own header file, and
cpp file. Even though this adds another TU to the compilation,
the total CPU time taken by compilation is reduced by about 1%
for debug build and ~0.5% for optimized build of the main library.
(The improvement would be roughly doubles without splitting the TUs,
but the maintainability hit is not worth it.)

The code size of the static library build has also somewhat decreased.

Follow up: Introduce combined TU for reporters, and further split
apart the catch_reporter_streaming_base.hpp header into its
constituent parts, as it still contains a whole bunch of other stuff.
</pre>
</div>
</content>
</entry>
</feed>
