diff --git a/packages/Catch2/.gitrepo b/packages/Catch2/.gitrepo
index 5c9fe5b98047e2bd6495c7a894c42e09244a586b..6874601bf63d1e7b688ea46ce389ee5c4464750c 100644
--- a/packages/Catch2/.gitrepo
+++ b/packages/Catch2/.gitrepo
@@ -6,6 +6,7 @@
 [subrepo]
 	remote = git@github.com:catchorg/Catch2.git
 	branch = master
-	commit = 9e1bdca4667295fcb16265eae00efa8423f07007
-	parent = cd9b656f2a2e7fe914557e186f30b2123bcb98b4
-	cmdver = 0.3.1
+	commit = 489a41012e396868954a3e9ee39de26fa432ab44
+	parent = f63d70305b7e15f11e33e2ac1b291e870f830bbc
+	cmdver = 0.4.0
+	method = merge
diff --git a/packages/Catch2/CMakeLists.txt b/packages/Catch2/CMakeLists.txt
index 09793f7b3c2a304868fdb0cc4e8fcd48ef961b61..8cc1ca31d4efc1109c2549066f298ac037569fbe 100644
--- a/packages/Catch2/CMakeLists.txt
+++ b/packages/Catch2/CMakeLists.txt
@@ -6,7 +6,7 @@ if(NOT DEFINED PROJECT_NAME)
   set(NOT_SUBPROJECT ON)
 endif()
 
-project(Catch2 LANGUAGES CXX VERSION 2.4.1)
+project(Catch2 LANGUAGES CXX VERSION 2.4.2)
 
 # Provide path for scripts
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake")
diff --git a/packages/Catch2/README.md b/packages/Catch2/README.md
index 73162bbf498736c05f891e28df04248fa6c25d30..e84306c5cce97e90f1236e5a2347a3e37f617955 100644
--- a/packages/Catch2/README.md
+++ b/packages/Catch2/README.md
@@ -5,11 +5,11 @@
 [![Build Status](https://travis-ci.org/catchorg/Catch2.svg?branch=master)](https://travis-ci.org/catchorg/Catch2)
 [![Build status](https://ci.appveyor.com/api/projects/status/github/catchorg/Catch2?svg=true)](https://ci.appveyor.com/project/catchorg/catch2)
 [![codecov](https://codecov.io/gh/catchorg/Catch2/branch/master/graph/badge.svg)](https://codecov.io/gh/catchorg/Catch2)
-[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/E0msqwbW7U4PVbHn)
+[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/rbkudthN4hBNJznk)
 [![Join the chat in Discord: https://discord.gg/4CWS9zD](https://img.shields.io/badge/Discord-Chat!-brightgreen.svg)](https://discord.gg/4CWS9zD)
 
 
-<a href="https://github.com/catchorg/Catch2/releases/download/v2.4.1/catch.hpp">The latest version of the single header can be downloaded directly using this link</a>
+<a href="https://github.com/catchorg/Catch2/releases/download/v2.4.2/catch.hpp">The latest version of the single header can be downloaded directly using this link</a>
 
 ## Catch2 is released!
 
diff --git a/packages/Catch2/conanfile.py b/packages/Catch2/conanfile.py
index 19b2c65e68bfb5f2d8378cb7108c2c494d599510..b99f314d7e19c7eb13a9eb6fb9387adb45e02092 100644
--- a/packages/Catch2/conanfile.py
+++ b/packages/Catch2/conanfile.py
@@ -4,7 +4,7 @@ from conans import ConanFile, CMake
 
 class CatchConan(ConanFile):
     name = "Catch"
-    version = "2.4.1"
+    version = "2.4.2"
     description = "A modern, C++-native, header-only, framework for unit-tests, TDD and BDD"
     author = "philsquared"
     generators = "cmake"
diff --git a/packages/Catch2/contrib/CatchAddTests.cmake b/packages/Catch2/contrib/CatchAddTests.cmake
index 07856130663918ddf6c6bfa9154c87f20046c6a1..2220ce3ac6b987b1e8b1ae82466a3f715916687c 100644
--- a/packages/Catch2/contrib/CatchAddTests.cmake
+++ b/packages/Catch2/contrib/CatchAddTests.cmake
@@ -51,12 +51,14 @@ string(REPLACE "\n" ";" output "${output}")
 # Parse output
 foreach(line ${output})
   set(test ${line})
+  # use escape commas to handle properly test cases with commans inside the name
+  string(REPLACE "," "\\," test_name ${test})
   # ...and add to script
   add_command(add_test
     "${prefix}${test}${suffix}"
     ${TEST_EXECUTOR}
     "${TEST_EXECUTABLE}"
-    "${test}"
+    "${test_name}"
     ${extra_args}
   )
   add_command(set_tests_properties
diff --git a/packages/Catch2/contrib/ParseAndAddCatchTests.cmake b/packages/Catch2/contrib/ParseAndAddCatchTests.cmake
index 85c06a0dd93c5e80dea87564948d405b40ab0e33..e7c64f01261d7a32cd00a7245cca1bbb0a34a993 100644
--- a/packages/Catch2/contrib/ParseAndAddCatchTests.cmake
+++ b/packages/Catch2/contrib/ParseAndAddCatchTests.cmake
@@ -39,6 +39,11 @@
 #    PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS (Default OFF)                                      #
 #    -- causes CMake to rerun when file with tests changes so that new tests will be discovered    #
 #                                                                                                  #
+# One can also set (locally) the optional variable OptionalCatchTestLauncher to precise the way    #
+# a test should be run. For instance to use test MPI, one can write                                #
+#     set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC})                 #
+# just before calling this ParseAndAddCatchTests function                                          #
+#                                                                                                  #
 #==================================================================================================#
 
 cmake_minimum_required(VERSION 2.8.8)
@@ -168,7 +173,7 @@ function(ParseFile SourceFile TestTarget)
             endif()
 
             # Add the test and set its properties
-            add_test(NAME "\"${CTestName}\"" COMMAND ${TestTarget} ${Name} ${AdditionalCatchParameters})
+            add_test(NAME "\"${CTestName}\"" COMMAND ${OptionalCatchTestLauncher} ${TestTarget} ${Name} ${AdditionalCatchParameters})
             set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran"
                                                     LABELS "${Labels}")
         endif()
diff --git a/packages/Catch2/docs/Readme.md b/packages/Catch2/docs/Readme.md
index 9087551816921b362ac463e5afb1418851ba489a..8a45c4a4cc9e623fdd5c112dbd5d232ab1a5057e 100644
--- a/packages/Catch2/docs/Readme.md
+++ b/packages/Catch2/docs/Readme.md
@@ -13,6 +13,7 @@ Writing tests:
 * [Reporters](reporters.md#top)
 * [Event Listeners](event-listeners.md#top)
 * [Data Generators](generators.md#top)
+* [Other macros](other-macros.md#top)
 
 Fine tuning:
 * [Supplying your own main()](own-main.md#top)
diff --git a/packages/Catch2/docs/cmake-integration.md b/packages/Catch2/docs/cmake-integration.md
index a075c040f2ba7561b97cec8808f93c6e48acc11a..246e7f0ec22c5a451b755bc0618fe4f66ca50fff 100644
--- a/packages/Catch2/docs/cmake-integration.md
+++ b/packages/Catch2/docs/cmake-integration.md
@@ -172,6 +172,16 @@ step will be re-ran when the test files change, letting new tests be
 automatically discovered. Defaults to `OFF`.
 
 
+Optionally, one can specify a launching command to run tests by setting the
+variable `OptionalCatchTestLauncher` before calling `ParseAndAddCatchTests`. For
+instance to run some tests using `MPI` and other sequentially, one can write
+```cmake
+set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC})
+ParseAndAddCatchTests(mpi_foo)
+unset(OptionalCatchTestLauncher)
+ParseAndAddCatchTests(bar)
+```
+
 ## CMake project options
 
 Catch2's CMake project also provides some options for other projects
diff --git a/packages/Catch2/docs/other-macros.md b/packages/Catch2/docs/other-macros.md
new file mode 100644
index 0000000000000000000000000000000000000000..6f5fac7b06dbbc6c02145be2c93cdc09ca15ddcf
--- /dev/null
+++ b/packages/Catch2/docs/other-macros.md
@@ -0,0 +1,150 @@
+<a id="top"></a>
+# Other macros
+
+This page serves as a reference for macros that are not documented
+elsewhere. For now, these macros are separated into 2 rough categories,
+"assertion related macros" and "test case related macros".
+
+## Assertion related macros
+
+* `CHECKED_IF` and `CHECKED_ELSE`
+
+`CHECKED_IF( expr )` is an `if` replacement, that also applies Catch2's
+stringification machinery to the _expr_ and records the result. As with
+`if`, the block after a `CHECKED_IF` is entered only if the expression
+evaluates to `true`. `CHECKED_ELSE( expr )` work similarly, but the block
+is entered only if the _expr_ evaluated to `false`.
+
+Example:
+```cpp
+int a = ...;
+int b = ...;
+CHECKED_IF( a == b ) {
+    // This block is entered when a == b
+} CHECKED_ELSE ( a == b ) {
+    // This block is entered when a != b
+}
+```
+
+* `CHECK_NOFAIL`
+
+`CHECK_NOFAIL( expr )` is a variant of `CHECK` that does not fail the test
+case if _expr_ evaluates to `false`. This can be useful for checking some
+assumption, that might be violated without the test neccessarily failing.
+
+Example output:
+```
+main.cpp:6:
+FAILED - but was ok:
+  CHECK_NOFAIL( 1 == 2 )
+
+main.cpp:7:
+PASSED:
+  CHECK( 2 == 2 )
+```
+
+* `SUCCEED`
+
+`SUCCEED( msg )` is mostly equivalent with `INFO( msg ); REQUIRE( true );`.
+In other words, `SUCCEED` is for cases where just reaching a certain line
+means that the test has been a success.
+
+Example usage:
+```cpp
+TEST_CASE( "SUCCEED showcase" ) {
+    int I = 1;
+    SUCCEED( "I is " << I );
+}
+```
+
+* `STATIC_REQUIRE`
+
+`STATIC_REQUIRE( expr )` is a macro that can be used the same way as a
+`static_assert`, but also registers the success with Catch2, so it is
+reported as a success at runtime. The whole check can also be deferred
+to the runtime, by defining `CATCH_CONFIG_RUNTIME_STATIC_REQUIRE` before
+including the Catch2 header.
+
+Example:
+```cpp
+TEST_CASE("STATIC_REQUIRE showcase", "[traits]") {
+    STATIC_REQUIRE( std::is_void<void>::value );
+    STATIC_REQUIRE_FALSE( std::is_void<int>::value );
+}
+```
+
+## Test case related macros
+
+* `METHOD_AS_TEST_CASE`
+
+`METHOD_AS_TEST_CASE( member-function-pointer, description )` lets you
+register a member function of a class as a Catch2 test case. The class
+will be separately instantiated for each method registered in this way.
+
+```cpp
+class TestClass {
+    std::string s;
+
+public:
+    TestClass()
+        :s( "hello" )
+    {}
+
+    void testCase() {
+        REQUIRE( s == "hello" );
+    }
+};
+
+
+METHOD_AS_TEST_CASE( TestClass::testCase, "Use class's method as a test case", "[class]" )
+```
+
+* `REGISTER_TEST_CASE`
+
+`REGISTER_TEST_CASE( function, description )` let's you register
+a `function` as a test case. The function has to have `void()` signature,
+the description can contain both name and tags.
+
+Example:
+```cpp
+REGISTER_TEST_CASE( someFunction, "ManuallyRegistered", "[tags]" );
+```
+
+_Note that the registration still has to happen before Catch2's session
+is initiated. This means that it either needs to be done in a global
+constructor, or before Catch2's session is created in user's own main._
+
+
+* `ANON_TEST_CASE`
+
+`ANON_TEST_CASE` is a `TEST_CASE` replacement that will autogenerate
+unique name. The advantage of this is that you do not have to think
+of a name for the test case,`the disadvantage is that the name doesn't
+neccessarily remain stable across different links, and thus it might be
+hard to run directly.
+
+Example:
+```cpp
+ANON_TEST_CASE() {
+    SUCCEED("Hello from anonymous test case");
+}
+```
+
+* `DYNAMIC_SECTION`
+
+`DYNAMIC_SECTION` is a `SECTION` where the user can use `operator<<` to
+create the final name for that section. This can be useful with e.g.
+generators, or when creating a `SECTION` dynamically, within a loop.
+
+Example:
+```cpp
+TEST_CASE( "looped SECTION tests" ) {
+    int a = 1;
+
+    for( int b = 0; b < 10; ++b ) {
+        DYNAMIC_SECTION( "b is currently: " << b ) {
+            CHECK( b > a );
+        }
+    }
+}
+```
diff --git a/packages/Catch2/docs/release-notes.md b/packages/Catch2/docs/release-notes.md
index f31f0e8760762908299d78e4bbab0318adf4b686..16f9cc5b21742cc9a38e3fbf4c48580b201ca6b6 100644
--- a/packages/Catch2/docs/release-notes.md
+++ b/packages/Catch2/docs/release-notes.md
@@ -2,6 +2,7 @@
 
 # Release notes
 **Contents**<br>
+[2.4.2](#242)<br>
 [2.4.1](#241)<br>
 [2.4.0](#240)<br>
 [2.3.0](#230)<br>
@@ -17,6 +18,29 @@
 [Even Older versions](#even-older-versions)<br>
 
 
+## 2.4.2
+
+### Improvements
+* XmlReporter now also outputs the RNG seed that was used in a run (#1404)
+* `Catch::Session::applyCommandLine` now also accepts `wchar_t` arguments.
+  * However, Catch2 still does not support unicode.
+* Added `STATIC_REQUIRE` macro (#1356, #1362)
+* Catch2's singleton's are now cleaned up even if tests are run (#1411)
+  * This is mostly useful as a FP prevention for users who define their own main.
+* Specifying an invalid reporter via `-r` is now reported sooner (#1351, #1422)
+
+
+### Fixes
+* Stringification no longer assumes that `char` is signed (#1399, #1407)
+  * This caused a `Wtautological-compare` warning.
+* SFINAE for `operator<<` no longer sees different overload set than the actual insertion (#1403)
+
+
+### Contrib
+* `catch_discover_tests` correctly adds tests with comma in name (#1327, #1409)
+* Added a new customization point in how the tests are launched to `catch_discover_tests`
+
+
 ## 2.4.1
 
 ### Improvements
diff --git a/packages/Catch2/docs/why-catch.md b/packages/Catch2/docs/why-catch.md
index 45f58a6ab7cb1932b8f2a6fdd8605d0a94659641..86cc55bc56b52d8982a9e31ef788cae2102f8848 100644
--- a/packages/Catch2/docs/why-catch.md
+++ b/packages/Catch2/docs/why-catch.md
@@ -6,7 +6,7 @@ including (but not limited to),
 [Google Test](http://code.google.com/p/googletest/),
 [Boost.Test](http://www.boost.org/doc/libs/1_49_0/libs/test/doc/html/index.html),
 [CppUnit](http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page),
-[Cute](http://r2.ifs.hsr.ch/cute),
+[Cute](http://www.cute-test.com),
 [many, many more](http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B).
 
 So what does Catch bring to the party that differentiates it from these? Apart from a Catchy name, of course.
diff --git a/packages/Catch2/include/catch.hpp b/packages/Catch2/include/catch.hpp
index f8b380c4e4053062fa1b94ab6254699b25aed918..84b9f46609bd8ba8243aa928906a015e37e23ea1 100644
--- a/packages/Catch2/include/catch.hpp
+++ b/packages/Catch2/include/catch.hpp
@@ -11,7 +11,7 @@
 
 #define CATCH_VERSION_MAJOR 2
 #define CATCH_VERSION_MINOR 4
-#define CATCH_VERSION_PATCH 1
+#define CATCH_VERSION_PATCH 2
 
 #ifdef __clang__
 #    pragma clang system_header
@@ -145,6 +145,15 @@
 
 #define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE()
 
+#if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE)
+#define CATCH_STATIC_REQUIRE( ... )       static_assert(   __VA_ARGS__ ,      #__VA_ARGS__ );     CATCH_SUCCEED( #__VA_ARGS__ )
+#define CATCH_STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); CATCH_SUCCEED( #__VA_ARGS__ )
+#else
+#define CATCH_STATIC_REQUIRE( ... )       CATCH_REQUIRE( __VA_ARGS__ )
+#define CATCH_STATIC_REQUIRE_FALSE( ... ) CATCH_REQUIRE_FALSE( __VA_ARGS__ )
+#endif
+
+
 // "BDD-style" convenience wrappers
 #define CATCH_SCENARIO( ... ) CATCH_TEST_CASE( "Scenario: " __VA_ARGS__ )
 #define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ )
@@ -205,6 +214,14 @@
 #define SUCCEED( ... ) INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
 #define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE()
 
+#if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE)
+#define STATIC_REQUIRE( ... )       static_assert(   __VA_ARGS__,  #__VA_ARGS__ ); SUCCEED( #__VA_ARGS__ )
+#define STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); SUCCEED( "!(" #__VA_ARGS__ ")" )
+#else
+#define STATIC_REQUIRE( ... )       REQUIRE( __VA_ARGS__ )
+#define STATIC_REQUIRE_FALSE( ... ) REQUIRE_FALSE( __VA_ARGS__ )
+#endif
+
 #endif
 
 #define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature )
@@ -285,6 +302,9 @@ using Catch::Detail::Approx;
 #define CATCH_THEN( desc )
 #define CATCH_AND_THEN( desc )
 
+#define CATCH_STATIC_REQUIRE( ... )       (void)(0)
+#define CATCH_STATIC_REQUIRE_FALSE( ... ) (void)(0)
+
 // If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required
 #else
 
@@ -335,6 +355,10 @@ using Catch::Detail::Approx;
 #define SUCCEED( ... ) (void)(0)
 #define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ))
 
+
+#define STATIC_REQUIRE( ... )       (void)(0)
+#define STATIC_REQUIRE_FALSE( ... ) (void)(0)
+
 #endif
 
 #define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION_NO_REG( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature )
diff --git a/packages/Catch2/include/external/clara.hpp b/packages/Catch2/include/external/clara.hpp
index 3a7f88363711015a95f47f62b721b9deb185010f..056e0a3152600199ba9397bb03bdaeb5a617f8ad 100644
--- a/packages/Catch2/include/external/clara.hpp
+++ b/packages/Catch2/include/external/clara.hpp
@@ -5,7 +5,7 @@
 //
 // See https://github.com/philsquared/Clara for more details
 
-// Clara v1.1.4
+// Clara v1.1.5
 
 #ifndef CATCH_CLARA_HPP_INCLUDED
 #define CATCH_CLARA_HPP_INCLUDED
@@ -34,8 +34,8 @@
 //
 // A single-header library for wrapping and laying out basic text, by Phil Nash
 //
-// This work is licensed under the BSD 2-Clause license.
-// See the accompanying LICENSE file, or the one at https://opensource.org/licenses/BSD-2-Clause
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 // This project is hosted at https://github.com/philsquared/textflowcpp
 
@@ -52,317 +52,326 @@
 #endif
 
 
-namespace Catch { namespace clara { namespace TextFlow {
-
-    inline auto isWhitespace( char c ) -> bool {
-        static std::string chars = " \t\n\r";
-        return chars.find( c ) != std::string::npos;
-    }
-    inline auto isBreakableBefore( char c ) -> bool {
-        static std::string chars = "[({<|";
-        return chars.find( c ) != std::string::npos;
-    }
-    inline auto isBreakableAfter( char c ) -> bool {
-        static std::string chars = "])}>.,:;*+-=&/\\";
-        return chars.find( c ) != std::string::npos;
-    }
-
-    class Columns;
-
-    class Column {
-        std::vector<std::string> m_strings;
-        size_t m_width = CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH;
-        size_t m_indent = 0;
-        size_t m_initialIndent = std::string::npos;
-
-    public:
-        class iterator {
-            friend Column;
-
-            Column const& m_column;
-            size_t m_stringIndex = 0;
-            size_t m_pos = 0;
-
-            size_t m_len = 0;
-            size_t m_end = 0;
-            bool m_suffix = false;
-
-            iterator( Column const& column, size_t stringIndex )
-            :   m_column( column ),
-                m_stringIndex( stringIndex )
-            {}
-
-            auto line() const -> std::string const& { return m_column.m_strings[m_stringIndex]; }
-
-            auto isBoundary( size_t at ) const -> bool {
-                assert( at > 0 );
-                assert( at <= line().size() );
-
-                return at == line().size() ||
-                       ( isWhitespace( line()[at] ) && !isWhitespace( line()[at-1] ) ) ||
-                       isBreakableBefore( line()[at] ) ||
-                       isBreakableAfter( line()[at-1] );
-            }
-
-            void calcLength() {
-                assert( m_stringIndex < m_column.m_strings.size() );
-
-                m_suffix = false;
-                auto width = m_column.m_width-indent();
-                m_end = m_pos;
-                while( m_end < line().size() && line()[m_end] != '\n' )
-                    ++m_end;
-
-                if( m_end < m_pos + width ) {
-                    m_len = m_end - m_pos;
-                }
-                else {
-                    size_t len = width;
-                    while (len > 0 && !isBoundary(m_pos + len))
-                        --len;
-                    while (len > 0 && isWhitespace( line()[m_pos + len - 1] ))
-                        --len;
-
-                    if (len > 0) {
-                        m_len = len;
-                    } else {
-                        m_suffix = true;
-                        m_len = width - 1;
-                    }
-                }
-            }
-
-            auto indent() const -> size_t {
-                auto initial = m_pos == 0 && m_stringIndex == 0 ? m_column.m_initialIndent : std::string::npos;
-                return initial == std::string::npos ? m_column.m_indent : initial;
-            }
-
-            auto addIndentAndSuffix(std::string const &plain) const -> std::string {
-                return std::string( indent(), ' ' ) + (m_suffix ? plain + "-" : plain);
-            }
-
-        public:
-            explicit iterator( Column const& column ) : m_column( column ) {
-                assert( m_column.m_width > m_column.m_indent );
-                assert( m_column.m_initialIndent == std::string::npos || m_column.m_width > m_column.m_initialIndent );
-                calcLength();
-                if( m_len == 0 )
-                    m_stringIndex++; // Empty string
-            }
-
-            auto operator *() const -> std::string {
-                assert( m_stringIndex < m_column.m_strings.size() );
-                assert( m_pos <= m_end );
-                if( m_pos + m_column.m_width < m_end )
-                    return addIndentAndSuffix(line().substr(m_pos, m_len));
-                else
-                    return addIndentAndSuffix(line().substr(m_pos, m_end - m_pos));
-            }
-
-            auto operator ++() -> iterator& {
-                m_pos += m_len;
-                if( m_pos < line().size() && line()[m_pos] == '\n' )
-                    m_pos += 1;
-                else
-                    while( m_pos < line().size() && isWhitespace( line()[m_pos] ) )
-                        ++m_pos;
-
-                if( m_pos == line().size() ) {
-                    m_pos = 0;
-                    ++m_stringIndex;
-                }
-                if( m_stringIndex < m_column.m_strings.size() )
-                    calcLength();
-                return *this;
-            }
-            auto operator ++(int) -> iterator {
-                iterator prev( *this );
-                operator++();
-                return prev;
-            }
-
-            auto operator ==( iterator const& other ) const -> bool {
-                return
-                    m_pos == other.m_pos &&
-                    m_stringIndex == other.m_stringIndex &&
-                    &m_column == &other.m_column;
-            }
-            auto operator !=( iterator const& other ) const -> bool {
-                return !operator==( other );
-            }
-        };
-        using const_iterator = iterator;
-
-        explicit Column( std::string const& text ) { m_strings.push_back( text ); }
-
-        auto width( size_t newWidth ) -> Column& {
-            assert( newWidth > 0 );
-            m_width = newWidth;
-            return *this;
-        }
-        auto indent( size_t newIndent ) -> Column& {
-            m_indent = newIndent;
-            return *this;
-        }
-        auto initialIndent( size_t newIndent ) -> Column& {
-            m_initialIndent = newIndent;
-            return *this;
-        }
-
-        auto width() const -> size_t { return m_width; }
-        auto begin() const -> iterator { return iterator( *this ); }
-        auto end() const -> iterator { return { *this, m_strings.size() }; }
-
-        inline friend std::ostream& operator << ( std::ostream& os, Column const& col ) {
-            bool first = true;
-            for( auto line : col ) {
-                if( first )
-                    first = false;
-                else
-                    os << "\n";
-                os <<  line;
-            }
-            return os;
-        }
-
-        auto operator + ( Column const& other ) -> Columns;
-
-        auto toString() const -> std::string {
-            std::ostringstream oss;
-            oss << *this;
-            return oss.str();
-        }
-    };
-
-    class Spacer : public Column {
-
-    public:
-        explicit Spacer( size_t spaceWidth ) : Column( "" ) {
-            width( spaceWidth );
-        }
-    };
-
-    class Columns {
-        std::vector<Column> m_columns;
-
-    public:
-
-        class iterator {
-            friend Columns;
-            struct EndTag {};
-
-            std::vector<Column> const& m_columns;
-            std::vector<Column::iterator> m_iterators;
-            size_t m_activeIterators;
-
-            iterator( Columns const& columns, EndTag )
-            :   m_columns( columns.m_columns ),
-                m_activeIterators( 0 )
-            {
-                m_iterators.reserve( m_columns.size() );
-
-                for( auto const& col : m_columns )
-                    m_iterators.push_back( col.end() );
-            }
-
-        public:
-            explicit iterator( Columns const& columns )
-            :   m_columns( columns.m_columns ),
-                m_activeIterators( m_columns.size() )
-            {
-                m_iterators.reserve( m_columns.size() );
-
-                for( auto const& col : m_columns )
-                    m_iterators.push_back( col.begin() );
-            }
-
-            auto operator ==( iterator const& other ) const -> bool {
-                return m_iterators == other.m_iterators;
-            }
-            auto operator !=( iterator const& other ) const -> bool {
-                return m_iterators != other.m_iterators;
-            }
-            auto operator *() const -> std::string {
-                std::string row, padding;
-
-                for( size_t i = 0; i < m_columns.size(); ++i ) {
-                    auto width = m_columns[i].width();
-                    if( m_iterators[i] != m_columns[i].end() ) {
-                        std::string col = *m_iterators[i];
-                        row += padding + col;
-                        if( col.size() < width )
-                            padding = std::string( width - col.size(), ' ' );
-                        else
-                            padding = "";
-                    }
-                    else {
-                        padding += std::string( width, ' ' );
-                    }
-                }
-                return row;
-            }
-            auto operator ++() -> iterator& {
-                for( size_t i = 0; i < m_columns.size(); ++i ) {
-                    if (m_iterators[i] != m_columns[i].end())
-                        ++m_iterators[i];
-                }
-                return *this;
-            }
-            auto operator ++(int) -> iterator {
-                iterator prev( *this );
-                operator++();
-                return prev;
-            }
-        };
-        using const_iterator = iterator;
-
-        auto begin() const -> iterator { return iterator( *this ); }
-        auto end() const -> iterator { return { *this, iterator::EndTag() }; }
-
-        auto operator += ( Column const& col ) -> Columns& {
-            m_columns.push_back( col );
-            return *this;
-        }
-        auto operator + ( Column const& col ) -> Columns {
-            Columns combined = *this;
-            combined += col;
-            return combined;
-        }
-
-        inline friend std::ostream& operator << ( std::ostream& os, Columns const& cols ) {
-
-            bool first = true;
-            for( auto line : cols ) {
-                if( first )
-                    first = false;
-                else
-                    os << "\n";
-                os << line;
-            }
-            return os;
-        }
-
-        auto toString() const -> std::string {
-            std::ostringstream oss;
-            oss << *this;
-            return oss.str();
-        }
-    };
-
-    inline auto Column::operator + ( Column const& other ) -> Columns {
-        Columns cols;
-        cols += *this;
-        cols += other;
-        return cols;
-    }
-}}} // namespace Catch::clara::TextFlow
-
+namespace Catch {
+namespace clara {
+namespace TextFlow {
+
+inline auto isWhitespace(char c) -> bool {
+	static std::string chars = " \t\n\r";
+	return chars.find(c) != std::string::npos;
+}
+inline auto isBreakableBefore(char c) -> bool {
+	static std::string chars = "[({<|";
+	return chars.find(c) != std::string::npos;
+}
+inline auto isBreakableAfter(char c) -> bool {
+	static std::string chars = "])}>.,:;*+-=&/\\";
+	return chars.find(c) != std::string::npos;
+}
+
+class Columns;
+
+class Column {
+	std::vector<std::string> m_strings;
+	size_t m_width = CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH;
+	size_t m_indent = 0;
+	size_t m_initialIndent = std::string::npos;
+
+public:
+	class iterator {
+		friend Column;
+
+		Column const& m_column;
+		size_t m_stringIndex = 0;
+		size_t m_pos = 0;
+
+		size_t m_len = 0;
+		size_t m_end = 0;
+		bool m_suffix = false;
+
+		iterator(Column const& column, size_t stringIndex)
+			: m_column(column),
+			m_stringIndex(stringIndex) {}
+
+		auto line() const -> std::string const& { return m_column.m_strings[m_stringIndex]; }
+
+		auto isBoundary(size_t at) const -> bool {
+			assert(at > 0);
+			assert(at <= line().size());
+
+			return at == line().size() ||
+				(isWhitespace(line()[at]) && !isWhitespace(line()[at - 1])) ||
+				isBreakableBefore(line()[at]) ||
+				isBreakableAfter(line()[at - 1]);
+		}
+
+		void calcLength() {
+			assert(m_stringIndex < m_column.m_strings.size());
+
+			m_suffix = false;
+			auto width = m_column.m_width - indent();
+			m_end = m_pos;
+			while (m_end < line().size() && line()[m_end] != '\n')
+				++m_end;
+
+			if (m_end < m_pos + width) {
+				m_len = m_end - m_pos;
+			} else {
+				size_t len = width;
+				while (len > 0 && !isBoundary(m_pos + len))
+					--len;
+				while (len > 0 && isWhitespace(line()[m_pos + len - 1]))
+					--len;
+
+				if (len > 0) {
+					m_len = len;
+				} else {
+					m_suffix = true;
+					m_len = width - 1;
+				}
+			}
+		}
+
+		auto indent() const -> size_t {
+			auto initial = m_pos == 0 && m_stringIndex == 0 ? m_column.m_initialIndent : std::string::npos;
+			return initial == std::string::npos ? m_column.m_indent : initial;
+		}
+
+		auto addIndentAndSuffix(std::string const &plain) const -> std::string {
+			return std::string(indent(), ' ') + (m_suffix ? plain + "-" : plain);
+		}
+
+	public:
+		using difference_type = std::ptrdiff_t;
+		using value_type = std::string;
+		using pointer = value_type * ;
+		using reference = value_type & ;
+		using iterator_category = std::forward_iterator_tag;
+
+		explicit iterator(Column const& column) : m_column(column) {
+			assert(m_column.m_width > m_column.m_indent);
+			assert(m_column.m_initialIndent == std::string::npos || m_column.m_width > m_column.m_initialIndent);
+			calcLength();
+			if (m_len == 0)
+				m_stringIndex++; // Empty string
+		}
+
+		auto operator *() const -> std::string {
+			assert(m_stringIndex < m_column.m_strings.size());
+			assert(m_pos <= m_end);
+			return addIndentAndSuffix(line().substr(m_pos, m_len));
+		}
+
+		auto operator ++() -> iterator& {
+			m_pos += m_len;
+			if (m_pos < line().size() && line()[m_pos] == '\n')
+				m_pos += 1;
+			else
+				while (m_pos < line().size() && isWhitespace(line()[m_pos]))
+					++m_pos;
+
+			if (m_pos == line().size()) {
+				m_pos = 0;
+				++m_stringIndex;
+			}
+			if (m_stringIndex < m_column.m_strings.size())
+				calcLength();
+			return *this;
+		}
+		auto operator ++(int) -> iterator {
+			iterator prev(*this);
+			operator++();
+			return prev;
+		}
+
+		auto operator ==(iterator const& other) const -> bool {
+			return
+				m_pos == other.m_pos &&
+				m_stringIndex == other.m_stringIndex &&
+				&m_column == &other.m_column;
+		}
+		auto operator !=(iterator const& other) const -> bool {
+			return !operator==(other);
+		}
+	};
+	using const_iterator = iterator;
+
+	explicit Column(std::string const& text) { m_strings.push_back(text); }
+
+	auto width(size_t newWidth) -> Column& {
+		assert(newWidth > 0);
+		m_width = newWidth;
+		return *this;
+	}
+	auto indent(size_t newIndent) -> Column& {
+		m_indent = newIndent;
+		return *this;
+	}
+	auto initialIndent(size_t newIndent) -> Column& {
+		m_initialIndent = newIndent;
+		return *this;
+	}
+
+	auto width() const -> size_t { return m_width; }
+	auto begin() const -> iterator { return iterator(*this); }
+	auto end() const -> iterator { return { *this, m_strings.size() }; }
+
+	inline friend std::ostream& operator << (std::ostream& os, Column const& col) {
+		bool first = true;
+		for (auto line : col) {
+			if (first)
+				first = false;
+			else
+				os << "\n";
+			os << line;
+		}
+		return os;
+	}
+
+	auto operator + (Column const& other)->Columns;
+
+	auto toString() const -> std::string {
+		std::ostringstream oss;
+		oss << *this;
+		return oss.str();
+	}
+};
+
+class Spacer : public Column {
+
+public:
+	explicit Spacer(size_t spaceWidth) : Column("") {
+		width(spaceWidth);
+	}
+};
+
+class Columns {
+	std::vector<Column> m_columns;
+
+public:
+
+	class iterator {
+		friend Columns;
+		struct EndTag {};
+
+		std::vector<Column> const& m_columns;
+		std::vector<Column::iterator> m_iterators;
+		size_t m_activeIterators;
+
+		iterator(Columns const& columns, EndTag)
+			: m_columns(columns.m_columns),
+			m_activeIterators(0) {
+			m_iterators.reserve(m_columns.size());
+
+			for (auto const& col : m_columns)
+				m_iterators.push_back(col.end());
+		}
+
+	public:
+		using difference_type = std::ptrdiff_t;
+		using value_type = std::string;
+		using pointer = value_type * ;
+		using reference = value_type & ;
+		using iterator_category = std::forward_iterator_tag;
+
+		explicit iterator(Columns const& columns)
+			: m_columns(columns.m_columns),
+			m_activeIterators(m_columns.size()) {
+			m_iterators.reserve(m_columns.size());
+
+			for (auto const& col : m_columns)
+				m_iterators.push_back(col.begin());
+		}
+
+		auto operator ==(iterator const& other) const -> bool {
+			return m_iterators == other.m_iterators;
+		}
+		auto operator !=(iterator const& other) const -> bool {
+			return m_iterators != other.m_iterators;
+		}
+		auto operator *() const -> std::string {
+			std::string row, padding;
+
+			for (size_t i = 0; i < m_columns.size(); ++i) {
+				auto width = m_columns[i].width();
+				if (m_iterators[i] != m_columns[i].end()) {
+					std::string col = *m_iterators[i];
+					row += padding + col;
+					if (col.size() < width)
+						padding = std::string(width - col.size(), ' ');
+					else
+						padding = "";
+				} else {
+					padding += std::string(width, ' ');
+				}
+			}
+			return row;
+		}
+		auto operator ++() -> iterator& {
+			for (size_t i = 0; i < m_columns.size(); ++i) {
+				if (m_iterators[i] != m_columns[i].end())
+					++m_iterators[i];
+			}
+			return *this;
+		}
+		auto operator ++(int) -> iterator {
+			iterator prev(*this);
+			operator++();
+			return prev;
+		}
+	};
+	using const_iterator = iterator;
+
+	auto begin() const -> iterator { return iterator(*this); }
+	auto end() const -> iterator { return { *this, iterator::EndTag() }; }
+
+	auto operator += (Column const& col) -> Columns& {
+		m_columns.push_back(col);
+		return *this;
+	}
+	auto operator + (Column const& col) -> Columns {
+		Columns combined = *this;
+		combined += col;
+		return combined;
+	}
+
+	inline friend std::ostream& operator << (std::ostream& os, Columns const& cols) {
+
+		bool first = true;
+		for (auto line : cols) {
+			if (first)
+				first = false;
+			else
+				os << "\n";
+			os << line;
+		}
+		return os;
+	}
+
+	auto toString() const -> std::string {
+		std::ostringstream oss;
+		oss << *this;
+		return oss.str();
+	}
+};
+
+inline auto Column::operator + (Column const& other) -> Columns {
+	Columns cols;
+	cols += *this;
+	cols += other;
+	return cols;
+}
+}
+
+}
+}
 #endif // CATCH_CLARA_TEXTFLOW_HPP_INCLUDED
 
 // ----------- end of #include from clara_textflow.hpp -----------
 // ........... back in clara.hpp
 
 
+#include <string>
 #include <memory>
 #include <set>
 #include <algorithm>
diff --git a/packages/Catch2/include/internal/catch_commandline.cpp b/packages/Catch2/include/internal/catch_commandline.cpp
index c57b7ed74dc9ecb3ddb357ac2d84a43f5ab4c182..66759ebbf168c842d48ef8ad356f612640108fd0 100644
--- a/packages/Catch2/include/internal/catch_commandline.cpp
+++ b/packages/Catch2/include/internal/catch_commandline.cpp
@@ -10,6 +10,9 @@
 
 #include "catch_string_manip.h"
 
+#include "catch_interfaces_registry_hub.h"
+#include "catch_interfaces_reporter.h"
+
 #include <fstream>
 #include <ctime>
 
@@ -105,6 +108,18 @@ namespace Catch {
                 return ParserResult::runtimeError( "Unrecognised verbosity, '" + verbosity + "'" );
             return ParserResult::ok( ParseResultType::Matched );
         };
+        auto const setReporter = [&]( std::string const& reporter ) {
+            IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
+
+            auto lcReporter = toLower( reporter );
+            auto result = factories.find( lcReporter );
+
+            if( factories.end() != result )
+                config.reporterName = lcReporter;
+            else
+                return ParserResult::runtimeError( "Unrecognized reporter, '" + reporter + "'. Check available with --list-reporters" );
+            return ParserResult::ok( ParseResultType::Matched );
+        };
 
         auto cli
             = ExeName( config.processName )
@@ -130,7 +145,7 @@ namespace Catch {
             | Opt( config.outputFilename, "filename" )
                 ["-o"]["--out"]
                 ( "output filename" )
-            | Opt( config.reporterName, "name" )
+            | Opt( setReporter, "name" )
                 ["-r"]["--reporter"]
                 ( "reporter to use (defaults to console)" )
             | Opt( config.name, "name" )
diff --git a/packages/Catch2/include/internal/catch_common.h b/packages/Catch2/include/internal/catch_common.h
index 4aaf80c590f79e070641944d048f22f071ed40a7..b332e164bb2e9ebd3d7dfe3b799af11974107f72 100644
--- a/packages/Catch2/include/internal/catch_common.h
+++ b/packages/Catch2/include/internal/catch_common.h
@@ -22,6 +22,10 @@
 #include <string>
 #include <cstdint>
 
+// We need a dummy global operator<< so we can bring it into Catch namespace later
+struct Catch_global_namespace_dummy {};
+std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy);
+
 namespace Catch {
 
     struct CaseSensitive { enum Choice {
@@ -63,6 +67,11 @@ namespace Catch {
 
     std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info );
 
+    // Bring in operator<< from global namespace into Catch namespace
+    // This is necessary because the overload of operator<< above makes
+    // lookup stop at namespace Catch
+    using ::operator<<;
+
     // Use this in variadic streaming macros to allow
     //    >> +StreamEndStop
     // as well as
diff --git a/packages/Catch2/include/internal/catch_leak_detector.cpp b/packages/Catch2/include/internal/catch_leak_detector.cpp
index dd160d9c44644f04b2119cf608663260441b7cac..7a30e8a140eed12dfdd19aa5346659438e751d49 100644
--- a/packages/Catch2/include/internal/catch_leak_detector.cpp
+++ b/packages/Catch2/include/internal/catch_leak_detector.cpp
@@ -6,6 +6,7 @@
  */
 
  #include "catch_leak_detector.h"
+ #include "catch_interfaces_registry_hub.h"
 
 
 #ifdef CATCH_CONFIG_WINDOWS_CRTDBG
@@ -30,3 +31,7 @@ namespace Catch {
     Catch::LeakDetector::LeakDetector() {}
 
 #endif
+
+Catch::LeakDetector::~LeakDetector() {
+    Catch::cleanUp();
+}
diff --git a/packages/Catch2/include/internal/catch_leak_detector.h b/packages/Catch2/include/internal/catch_leak_detector.h
index bfb0b4298d2278fcaa0252c006fdb9d9b806afb5..633457ac8f0b16ae2f3419185da61f0ac91f5dc7 100644
--- a/packages/Catch2/include/internal/catch_leak_detector.h
+++ b/packages/Catch2/include/internal/catch_leak_detector.h
@@ -11,6 +11,7 @@ namespace Catch {
 
     struct LeakDetector {
         LeakDetector();
+        ~LeakDetector();
     };
 
 }
diff --git a/packages/Catch2/include/internal/catch_list.cpp b/packages/Catch2/include/internal/catch_list.cpp
index 3b0e33f112e88dd7ed6e8105c994dbad64ee9049..6010ec15d2f238aa92d9b92880a914a1464562ed 100644
--- a/packages/Catch2/include/internal/catch_list.cpp
+++ b/packages/Catch2/include/internal/catch_list.cpp
@@ -124,7 +124,7 @@ namespace Catch {
         return tagCounts.size();
     }
 
-    std::size_t listReporters( Config const& /*config*/ ) {
+    std::size_t listReporters() {
         Catch::cout() << "Available reporters:\n";
         IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
         std::size_t maxNameLen = 0;
@@ -155,7 +155,7 @@ namespace Catch {
         if( config.listTags() )
             listedCount = listedCount.valueOr(0) + listTags( config );
         if( config.listReporters() )
-            listedCount = listedCount.valueOr(0) + listReporters( config );
+            listedCount = listedCount.valueOr(0) + listReporters();
         return listedCount;
     }
 
diff --git a/packages/Catch2/include/internal/catch_list.h b/packages/Catch2/include/internal/catch_list.h
index 4bc96ec5176bac819a29ae54c62f226e717ede04..bd29d97066a623417bd47d8b3dadc0d705ab8115 100644
--- a/packages/Catch2/include/internal/catch_list.h
+++ b/packages/Catch2/include/internal/catch_list.h
@@ -29,7 +29,7 @@ namespace Catch {
 
     std::size_t listTags( Config const& config );
 
-    std::size_t listReporters( Config const& /*config*/ );
+    std::size_t listReporters();
     
     Option<std::size_t> list( Config const& config );
 
diff --git a/packages/Catch2/include/internal/catch_matchers.h b/packages/Catch2/include/internal/catch_matchers.h
index 29692fc05e6e19b55c7271193acbccf89b93dc35..aebd4c23948b120b0f9e8b961a149fac188fc4cf 100644
--- a/packages/Catch2/include/internal/catch_matchers.h
+++ b/packages/Catch2/include/internal/catch_matchers.h
@@ -43,10 +43,6 @@ namespace Matchers {
         struct MatcherMethod {
             virtual bool match( ObjectT const& arg ) const = 0;
         };
-        template<typename PtrT>
-        struct MatcherMethod<PtrT*> {
-            virtual bool match( PtrT* arg ) const = 0;
-        };
 
 #ifdef __clang__
 #    pragma clang diagnostic pop
diff --git a/packages/Catch2/include/internal/catch_session.cpp b/packages/Catch2/include/internal/catch_session.cpp
index 5d028ed21e84186c9094fbc8039394ee7c5db1fc..0920521c0085667951c778ade00b716f5e624532 100644
--- a/packages/Catch2/include/internal/catch_session.cpp
+++ b/packages/Catch2/include/internal/catch_session.cpp
@@ -54,8 +54,6 @@ namespace Catch {
 
 
         Catch::Totals runTests(std::shared_ptr<Config> const& config) {
-            // FixMe: Add listeners in order first, then add reporters.
-
             auto reporter = makeReporter(config);
 
             RunContext context(config, std::move(reporter));
@@ -185,22 +183,8 @@ namespace Catch {
         return 0;
     }
 
-    void Session::useConfigData( ConfigData const& configData ) {
-        m_configData = configData;
-        m_config.reset();
-    }
-
-    int Session::run( int argc, char* argv[] ) {
-        if( m_startupExceptions )
-            return 1;
-        int returnCode = applyCommandLine( argc, argv );
-        if( returnCode == 0 )
-            returnCode = run();
-        return returnCode;
-    }
-
 #if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
-    int Session::run( int argc, wchar_t* const argv[] ) {
+    int Session::applyCommandLine( int argc, wchar_t const * const * argv ) {
 
         char **utf8Argv = new char *[ argc ];
 
@@ -212,7 +196,7 @@ namespace Catch {
             WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, utf8Argv[i], bufSize, NULL, NULL );
         }
 
-        int returnCode = run( argc, utf8Argv );
+        int returnCode = applyCommandLine( argc, utf8Argv );
 
         for ( int i = 0; i < argc; ++i )
             delete [] utf8Argv[ i ];
@@ -222,6 +206,12 @@ namespace Catch {
         return returnCode;
     }
 #endif
+
+    void Session::useConfigData( ConfigData const& configData ) {
+        m_configData = configData;
+        m_config.reset();
+    }
+
     int Session::run() {
         if( ( m_configData.waitForKeypress & WaitForKeypress::BeforeStart ) != 0 ) {
             Catch::cout() << "...waiting for enter/ return before starting" << std::endl;
diff --git a/packages/Catch2/include/internal/catch_session.h b/packages/Catch2/include/internal/catch_session.h
index eb8013cd2f18f4b6b6b3b97096a07a5263badcd5..af820da44729926729d368a754445375593bf93a 100644
--- a/packages/Catch2/include/internal/catch_session.h
+++ b/packages/Catch2/include/internal/catch_session.h
@@ -26,13 +26,22 @@ namespace Catch {
         void libIdentify();
 
         int applyCommandLine( int argc, char const * const * argv );
+    #if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
+        int applyCommandLine( int argc, wchar_t const * const * argv );
+    #endif
 
         void useConfigData( ConfigData const& configData );
 
-        int run( int argc, char* argv[] );
-    #if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
-        int run( int argc, wchar_t* const argv[] );
-    #endif
+        template<typename CharT>
+        int run(int argc, CharT const * const argv[]) {
+            if (m_startupExceptions)
+                return 1;
+            int returnCode = applyCommandLine(argc, argv);
+            if (returnCode == 0)
+                returnCode = run();
+            return returnCode;
+        }
+    
         int run();
 
         clara::Parser const& cli() const;
diff --git a/packages/Catch2/include/internal/catch_tostring.cpp b/packages/Catch2/include/internal/catch_tostring.cpp
index 4e0c027d3b0e09931bd7403e0669e84b38f748fe..8cbabbf26e854bc7943f284eaf3565ab52d354ab 100644
--- a/packages/Catch2/include/internal/catch_tostring.cpp
+++ b/packages/Catch2/include/internal/catch_tostring.cpp
@@ -205,7 +205,7 @@ std::string StringMaker<bool>::convert(bool b) {
     return b ? "true" : "false";
 }
 
-std::string StringMaker<char>::convert(char value) {
+std::string StringMaker<signed char>::convert(signed char value) {
     if (value == '\r') {
         return "'\\r'";
     } else if (value == '\f') {
@@ -222,8 +222,8 @@ std::string StringMaker<char>::convert(char value) {
         return chstr;
     }
 }
-std::string StringMaker<signed char>::convert(signed char c) {
-    return ::Catch::Detail::stringify(static_cast<char>(c));
+std::string StringMaker<char>::convert(char c) {
+    return ::Catch::Detail::stringify(static_cast<signed char>(c));
 }
 std::string StringMaker<unsigned char>::convert(unsigned char c) {
     return ::Catch::Detail::stringify(static_cast<char>(c));
diff --git a/packages/Catch2/include/internal/catch_tostring.h b/packages/Catch2/include/internal/catch_tostring.h
index 137d97592f9c97653ba49e97b5223d2e519b7ef6..3aff268bc312d584a520c8465fbfd07240262266 100644
--- a/packages/Catch2/include/internal/catch_tostring.h
+++ b/packages/Catch2/include/internal/catch_tostring.h
@@ -29,15 +29,7 @@
 #pragma warning(disable:4180) // We attempt to stream a function (address) by const&, which MSVC complains about but is harmless
 #endif
 
-
-// We need a dummy global operator<< so we can bring it into Catch namespace later
-struct Catch_global_namespace_dummy {};
-std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy);
-
 namespace Catch {
-    // Bring in operator<< from global namespace into Catch namespace
-    using ::operator<<;
-
     namespace Detail {
 
         extern const std::string unprintableString;
diff --git a/packages/Catch2/include/internal/catch_version.cpp b/packages/Catch2/include/internal/catch_version.cpp
index a57553c0d0b9382e5e98eb1d91df924a1f0f186f..690d4f7b7fecca5f82a725aded88c72056b96b7f 100644
--- a/packages/Catch2/include/internal/catch_version.cpp
+++ b/packages/Catch2/include/internal/catch_version.cpp
@@ -37,7 +37,7 @@ namespace Catch {
     }
 
     Version const& libraryVersion() {
-        static Version version( 2, 4, 1, "", 0 );
+        static Version version( 2, 4, 2, "", 0 );
         return version;
     }
 
diff --git a/packages/Catch2/include/reporters/catch_reporter_bases.cpp b/packages/Catch2/include/reporters/catch_reporter_bases.cpp
index 4dd4f95dcae06f08f191ceca0bf982a4a98a2d10..fa441ee547f10a7ac194f525376a96217b2b6b35 100644
--- a/packages/Catch2/include/reporters/catch_reporter_bases.cpp
+++ b/packages/Catch2/include/reporters/catch_reporter_bases.cpp
@@ -30,7 +30,7 @@ namespace Catch {
         // + 1 for null terminator
         const std::size_t maxDoubleSize = DBL_MAX_10_EXP + 1 + 1 + 3 + 1;
         char buffer[maxDoubleSize];
- 
+
         // Save previous errno, to prevent sprintf from overwriting it
         ErrnoGuard guard;
 #ifdef _MSC_VER
@@ -45,6 +45,10 @@ namespace Catch {
     TestEventListenerBase::TestEventListenerBase(ReporterConfig const & _config)
         :StreamingReporterBase(_config) {}
 
+    std::set<Verbosity> TestEventListenerBase::getSupportedVerbosities() {
+        return { Verbosity::Quiet, Verbosity::Normal, Verbosity::High };
+    }
+
     void TestEventListenerBase::assertionStarting(AssertionInfo const &) {}
 
     bool TestEventListenerBase::assertionEnded(AssertionStats const &) {
diff --git a/packages/Catch2/include/reporters/catch_reporter_bases.hpp b/packages/Catch2/include/reporters/catch_reporter_bases.hpp
index ae1618fe4150bcf830ed4cd42e2677fd1d1307de..4a27db681c4f8b77cfce8f0b9662c4a091703e06 100644
--- a/packages/Catch2/include/reporters/catch_reporter_bases.hpp
+++ b/packages/Catch2/include/reporters/catch_reporter_bases.hpp
@@ -217,7 +217,7 @@ namespace Catch {
             node->children.push_back(m_rootSection);
             m_testCases.push_back(node);
             m_rootSection.reset();
-        
+
             assert(m_deepestSection);
             m_deepestSection->stdOut = testCaseStats.stdOut;
             m_deepestSection->stdErr = testCaseStats.stdErr;
@@ -266,6 +266,8 @@ namespace Catch {
     struct TestEventListenerBase : StreamingReporterBase<TestEventListenerBase> {
         TestEventListenerBase( ReporterConfig const& _config );
 
+        static std::set<Verbosity> getSupportedVerbosities();
+
         void assertionStarting(AssertionInfo const&) override;
         bool assertionEnded(AssertionStats const&) override;
     };
diff --git a/packages/Catch2/include/reporters/catch_reporter_console.cpp b/packages/Catch2/include/reporters/catch_reporter_console.cpp
index 54b62cd808bcbf34fbafeced15974135cfcdb0ae..500677b9caab33a422527151eeab1d3284794247 100644
--- a/packages/Catch2/include/reporters/catch_reporter_console.cpp
+++ b/packages/Catch2/include/reporters/catch_reporter_console.cpp
@@ -111,8 +111,6 @@ public:
     void print() const {
         printSourceInfo();
         if (stats.totals.assertions.total() > 0) {
-            if (result.isOk())
-                stream << '\n';
             printResultType();
             printOriginalExpression();
             printReconstructedExpression();
diff --git a/packages/Catch2/include/reporters/catch_reporter_xml.cpp b/packages/Catch2/include/reporters/catch_reporter_xml.cpp
index c32005370dc6652eb205cbbd14d1de030ab1bb5e..902014cf45c29d5ef519c74af9193cec12132827 100644
--- a/packages/Catch2/include/reporters/catch_reporter_xml.cpp
+++ b/packages/Catch2/include/reporters/catch_reporter_xml.cpp
@@ -55,6 +55,9 @@ namespace Catch {
         m_xml.startElement( "Catch" );
         if( !m_config->name().empty() )
             m_xml.writeAttribute( "name", m_config->name() );
+        if( m_config->rngSeed() != 0 )
+            m_xml.scopedElement( "Randomness" )
+                .writeAttribute( "seed", m_config->rngSeed() );
     }
 
     void XmlReporter::testGroupStarting( GroupInfo const& groupInfo ) {
diff --git a/packages/Catch2/projects/CMakeLists.txt b/packages/Catch2/projects/CMakeLists.txt
index 8e2e4b13eb094863e59e1a0ca0f1361aeff35e20..ac10793bd82d672fdbc42b6189d71cf7c12497c8 100644
--- a/packages/Catch2/projects/CMakeLists.txt
+++ b/packages/Catch2/projects/CMakeLists.txt
@@ -303,7 +303,7 @@ if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
 endif()
 if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
     STRING(REGEX REPLACE "/W[0-9]" "/W4" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # override default warning level
-    target_compile_options( SelfTest PRIVATE /w44265 /w44061 /w44062 )
+    target_compile_options( SelfTest PRIVATE /w44265 /w44061 /w44062 /w45038 )
     if (CATCH_ENABLE_WERROR)
         target_compile_options( SelfTest PRIVATE /WX)
     endif()
diff --git a/packages/Catch2/projects/ExtraTests/X01-PrefixedMacros.cpp b/packages/Catch2/projects/ExtraTests/X01-PrefixedMacros.cpp
index 08bf404fb8ca4639b38d99dff4c0ecade13dba63..7671cbc4dfefe762efaca7078501206b96df562e 100644
--- a/packages/Catch2/projects/ExtraTests/X01-PrefixedMacros.cpp
+++ b/packages/Catch2/projects/ExtraTests/X01-PrefixedMacros.cpp
@@ -2,8 +2,12 @@
 // Test that Catch's prefixed macros compile and run properly.
 
 #define CATCH_CONFIG_MAIN
+// This won't provide full coverage, but it might be worth checking
+// the other branch as well
+#define CATCH_CONFIG_RUNTIME_STATIC_REQUIRE
 #include <catch2/catch.hpp>
 
+#include <type_traits>
 #include <stdexcept>
 
 [[noreturn]]
@@ -23,7 +27,7 @@ CATCH_TEST_CASE("PrefixedMacros") {
     CATCH_REQUIRE_THROWS_WITH(this_throws(), "Some msg");
     CATCH_REQUIRE_THROWS_MATCHES(this_throws(), std::runtime_error, Predicate<std::runtime_error>([](std::runtime_error const&) { return true; }));
     CATCH_REQUIRE_NOTHROW(this_doesnt_throw());
-    
+
     CATCH_CHECK( 1 == 1 );
     CATCH_CHECK_FALSE( 1 != 1 );
     CATCH_CHECKED_IF( 1 == 1 ) {
@@ -31,15 +35,15 @@ CATCH_TEST_CASE("PrefixedMacros") {
     } CATCH_CHECKED_ELSE ( 1 == 1 ) {
         CATCH_SUCCEED("don't care");
     }
-    
+
     CATCH_CHECK_NOFAIL(1 == 2);
-    
+
     CATCH_CHECK_THROWS(this_throws());
     CATCH_CHECK_THROWS_AS(this_throws(), std::runtime_error);
     CATCH_CHECK_THROWS_WITH(this_throws(), "Some msg");
     CATCH_CHECK_THROWS_MATCHES(this_throws(), std::runtime_error, Predicate<std::runtime_error>([](std::runtime_error const&) { return true; }));
-    CATCH_CHECK_NOTHROW(this_doesnt_throw());    
-    
+    CATCH_CHECK_NOTHROW(this_doesnt_throw());
+
     CATCH_REQUIRE_THAT("abcd", Equals("abcd"));
     CATCH_CHECK_THAT("bdef", Equals("bdef"));
 
@@ -52,6 +56,9 @@ CATCH_TEST_CASE("PrefixedMacros") {
             CATCH_FAIL_CHECK( "failure" );
         }
     }
+
+    CATCH_STATIC_REQUIRE( std::is_void<void>::value );
+    CATCH_STATIC_REQUIRE_FALSE( std::is_void<int>::value );
 }
 
 CATCH_ANON_TEST_CASE() {
diff --git a/packages/Catch2/projects/SelfTest/Baselines/compact.sw.approved.txt b/packages/Catch2/projects/SelfTest/Baselines/compact.sw.approved.txt
index 2138d26ee9b7fe660a03371ca7bcfaa0b4c2f905..41b6371284d3bd1d6e1c2954fcb1ed8512bd4386 100644
--- a/packages/Catch2/projects/SelfTest/Baselines/compact.sw.approved.txt
+++ b/packages/Catch2/projects/SelfTest/Baselines/compact.sw.approved.txt
@@ -13,6 +13,7 @@ Misc.tests.cpp:<line number>: passed:
 Compilation.tests.cpp:<line number>: passed: std::memcmp(uarr, "123", sizeof(uarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
 Compilation.tests.cpp:<line number>: passed: std::memcmp(sarr, "456", sizeof(sarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
 Compilation.tests.cpp:<line number>: passed:
+Compilation.tests.cpp:<line number>: passed: h1 == h2 for: [1403 helper] == [1403 helper]
 Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
 Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42'; expression was: thisThrows() with 1 message: 'expected exception'
 Exception.tests.cpp:<line number>: passed: thisThrows() with 1 message: 'answer := 42'
@@ -223,16 +224,16 @@ Tricky.tests.cpp:<line number>: passed: y.v == 0 for: 0 == 0
 Tricky.tests.cpp:<line number>: passed: 0 == y.v for: 0 == 0
 ToStringGeneral.tests.cpp:<line number>: passed: true with 1 message: 'i := 2'
 ToStringGeneral.tests.cpp:<line number>: passed: true with 1 message: '3'
-ToStringGeneral.tests.cpp:<line number>: passed: tab == '/t' for: '/t' == '/t'
-ToStringGeneral.tests.cpp:<line number>: passed: newline == '/n' for: '/n' == '/n'
-ToStringGeneral.tests.cpp:<line number>: passed: carr_return == '/r' for: '/r' == '/r'
-ToStringGeneral.tests.cpp:<line number>: passed: form_feed == '/f' for: '/f' == '/f'
+ToStringGeneral.tests.cpp:<line number>: passed: tab == '\t' for: '\t' == '\t'
+ToStringGeneral.tests.cpp:<line number>: passed: newline == '\n' for: '\n' == '\n'
+ToStringGeneral.tests.cpp:<line number>: passed: carr_return == '\r' for: '\r' == '\r'
+ToStringGeneral.tests.cpp:<line number>: passed: form_feed == '\f' for: '\f' == '\f'
 ToStringGeneral.tests.cpp:<line number>: passed: space == ' ' for: ' ' == ' '
 ToStringGeneral.tests.cpp:<line number>: passed: c == chars[i] for: 'a' == 'a'
 ToStringGeneral.tests.cpp:<line number>: passed: c == chars[i] for: 'z' == 'z'
 ToStringGeneral.tests.cpp:<line number>: passed: c == chars[i] for: 'A' == 'A'
 ToStringGeneral.tests.cpp:<line number>: passed: c == chars[i] for: 'Z' == 'Z'
-ToStringGeneral.tests.cpp:<line number>: passed: null_terminator == '/0' for: 0 == 0
+ToStringGeneral.tests.cpp:<line number>: passed: null_terminator == '\0' for: 0 == 0
 ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 2 == 2
 ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 3 == 3
 ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 4 == 4
@@ -495,6 +496,8 @@ Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'c
 Tricky.tests.cpp:<line number>: passed: True for: {?}
 Tricky.tests.cpp:<line number>: passed: !False for: true
 Tricky.tests.cpp:<line number>: passed: !(False) for: !{?}
+Compilation.tests.cpp:<line number>: passed: with 1 message: 'std::is_void<void>::value'
+Compilation.tests.cpp:<line number>: passed: with 1 message: '!(std::is_void<int>::value)'
 Condition.tests.cpp:<line number>: failed: data.int_seven > 7 for: 7 > 7
 Condition.tests.cpp:<line number>: failed: data.int_seven < 7 for: 7 < 7
 Condition.tests.cpp:<line number>: failed: data.int_seven > 8 for: 7 > 8
@@ -676,6 +679,7 @@ Condition.tests.cpp:<line number>: passed: cpc != 0 for: 0x<hex digits> != 0
 Condition.tests.cpp:<line number>: passed: returnsNull() == 0 for: {null string} == 0
 Condition.tests.cpp:<line number>: passed: returnsConstNull() == 0 for: {null string} == 0
 Condition.tests.cpp:<line number>: passed: 0 != p for: 0 != 0x<hex digits>
+Matchers.tests.cpp:<line number>: passed: "foo", Predicate<const char*>([] (const char* const&) { return true; }) for: "foo" matches undescribed predicate
 CmdLine.tests.cpp:<line number>: passed: result for: {?}
 CmdLine.tests.cpp:<line number>: passed: config.processName == "" for: "" == ""
 CmdLine.tests.cpp:<line number>: passed: result for: {?}
@@ -704,6 +708,8 @@ CmdLine.tests.cpp:<line number>: passed: config.reporterName == "xml" for: "xml"
 CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--reporter", "junit"}) for: {?}
 CmdLine.tests.cpp:<line number>: passed: config.reporterName == "junit" for: "junit" == "junit"
 CmdLine.tests.cpp:<line number>: passed: !(cli.parse({ "test", "-r", "xml", "-r", "junit" })) for: !{?}
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), Contains("Unrecognized reporter") for: "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
 CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-b"}) for: {?}
 CmdLine.tests.cpp:<line number>: passed: config.shouldDebugBreak == true for: true == true
 CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--break"}) for: {?}
@@ -1064,50 +1070,50 @@ Xml.tests.cpp:<line number>: passed: encode( stringWithQuotes ) == stringWithQuo
 Xml.tests.cpp:<line number>: passed: encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" for: "don't &quot;quote&quot; me on that"
 ==
 "don't &quot;quote&quot; me on that"
-Xml.tests.cpp:<line number>: passed: encode( "[/x01]" ) == "[//x01]" for: "[/x01]" == "[/x01]"
-Xml.tests.cpp:<line number>: passed: encode( "[/x7F]" ) == "[//x7F]" for: "[/x7F]" == "[/x7F]"
+Xml.tests.cpp:<line number>: passed: encode( "[\x01]" ) == "[\\x01]" for: "[\x01]" == "[\x01]"
+Xml.tests.cpp:<line number>: passed: encode( "[\x7F]" ) == "[\\x7F]" for: "[\x7F]" == "[\x7F]"
 Xml.tests.cpp:<line number>: passed: encode(u8"Here be 👾") == u8"Here be 👾" for: "Here be 👾" == "Here be 👾"
 Xml.tests.cpp:<line number>: passed: encode(u8"šš") == u8"šš" for: "šš" == "šš"
-Xml.tests.cpp:<line number>: passed: encode("/xDF/xBF") == "/xDF/xBF" for: "߿" == "߿"
-Xml.tests.cpp:<line number>: passed: encode("/xE0/xA0/x80") == "/xE0/xA0/x80" for: "ࠀ" == "ࠀ"
-Xml.tests.cpp:<line number>: passed: encode("/xED/x9F/xBF") == "/xED/x9F/xBF" for: "퟿" == "퟿"
-Xml.tests.cpp:<line number>: passed: encode("/xEE/x80/x80") == "/xEE/x80/x80" for: "" == ""
-Xml.tests.cpp:<line number>: passed: encode("/xEF/xBF/xBF") == "/xEF/xBF/xBF" for: "￿" == "￿"
-Xml.tests.cpp:<line number>: passed: encode("/xF0/x90/x80/x80") == "/xF0/x90/x80/x80" for: "𐀀" == "𐀀"
-Xml.tests.cpp:<line number>: passed: encode("/xF4/x8F/xBF/xBF") == "/xF4/x8F/xBF/xBF" for: "􏿿" == "􏿿"
-Xml.tests.cpp:<line number>: passed: encode("Here /xFF be 👾") == u8"Here //xFF be 👾" for: "Here /xFF be 👾" == "Here /xFF be 👾"
-Xml.tests.cpp:<line number>: passed: encode("/xFF") == "//xFF" for: "/xFF" == "/xFF"
-Xml.tests.cpp:<line number>: passed: encode("/xC5/xC5/xA0") == u8"//xC5Š" for: "/xC5Š" == "/xC5Š"
-Xml.tests.cpp:<line number>: passed: encode("/xF4/x90/x80/x80") == u8"//xF4//x90//x80//x80" for: "/xF4/x90/x80/x80" == "/xF4/x90/x80/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xC0/x80") == u8"//xC0//x80" for: "/xC0/x80" == "/xC0/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xF0/x80/x80/x80") == u8"//xF0//x80//x80//x80" for: "/xF0/x80/x80/x80" == "/xF0/x80/x80/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xC1/xBF") == u8"//xC1//xBF" for: "/xC1/xBF" == "/xC1/xBF"
-Xml.tests.cpp:<line number>: passed: encode("/xE0/x9F/xBF") == u8"//xE0//x9F//xBF" for: "/xE0/x9F/xBF" == "/xE0/x9F/xBF"
-Xml.tests.cpp:<line number>: passed: encode("/xF0/x8F/xBF/xBF") == u8"//xF0//x8F//xBF//xBF" for: "/xF0/x8F/xBF/xBF" == "/xF0/x8F/xBF/xBF"
-Xml.tests.cpp:<line number>: passed: encode("/xED/xA0/x80") == "/xED/xA0/x80" for: "���" == "���"
-Xml.tests.cpp:<line number>: passed: encode("/xED/xAF/xBF") == "/xED/xAF/xBF" for: "���" == "���"
-Xml.tests.cpp:<line number>: passed: encode("/xED/xB0/x80") == "/xED/xB0/x80" for: "���" == "���"
-Xml.tests.cpp:<line number>: passed: encode("/xED/xBF/xBF") == "/xED/xBF/xBF" for: "���" == "���"
-Xml.tests.cpp:<line number>: passed: encode("/x80") == u8"//x80" for: "/x80" == "/x80"
-Xml.tests.cpp:<line number>: passed: encode("/x81") == u8"//x81" for: "/x81" == "/x81"
-Xml.tests.cpp:<line number>: passed: encode("/xBC") == u8"//xBC" for: "/xBC" == "/xBC"
-Xml.tests.cpp:<line number>: passed: encode("/xBF") == u8"//xBF" for: "/xBF" == "/xBF"
-Xml.tests.cpp:<line number>: passed: encode("/xF5/x80/x80/x80") == u8"//xF5//x80//x80//x80" for: "/xF5/x80/x80/x80" == "/xF5/x80/x80/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xF6/x80/x80/x80") == u8"//xF6//x80//x80//x80" for: "/xF6/x80/x80/x80" == "/xF6/x80/x80/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xF7/x80/x80/x80") == u8"//xF7//x80//x80//x80" for: "/xF7/x80/x80/x80" == "/xF7/x80/x80/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xDE") == u8"//xDE" for: "/xDE" == "/xDE"
-Xml.tests.cpp:<line number>: passed: encode("/xDF") == u8"//xDF" for: "/xDF" == "/xDF"
-Xml.tests.cpp:<line number>: passed: encode("/xE0") == u8"//xE0" for: "/xE0" == "/xE0"
-Xml.tests.cpp:<line number>: passed: encode("/xEF") == u8"//xEF" for: "/xEF" == "/xEF"
-Xml.tests.cpp:<line number>: passed: encode("/xF0") == u8"//xF0" for: "/xF0" == "/xF0"
-Xml.tests.cpp:<line number>: passed: encode("/xF4") == u8"//xF4" for: "/xF4" == "/xF4"
-Xml.tests.cpp:<line number>: passed: encode("/xE0/x80") == u8"//xE0//x80" for: "/xE0/x80" == "/xE0/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xE0/xBF") == u8"//xE0//xBF" for: "/xE0/xBF" == "/xE0/xBF"
-Xml.tests.cpp:<line number>: passed: encode("/xE1/x80") == u8"//xE1//x80" for: "/xE1/x80" == "/xE1/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xF0/x80") == u8"//xF0//x80" for: "/xF0/x80" == "/xF0/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xF4/x80") == u8"//xF4//x80" for: "/xF4/x80" == "/xF4/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xF0/x80/x80") == u8"//xF0//x80//x80" for: "/xF0/x80/x80" == "/xF0/x80/x80"
-Xml.tests.cpp:<line number>: passed: encode("/xF4/x80/x80") == u8"//xF4//x80//x80" for: "/xF4/x80/x80" == "/xF4/x80/x80"
+Xml.tests.cpp:<line number>: passed: encode("\xDF\xBF") == "\xDF\xBF" for: "߿" == "߿"
+Xml.tests.cpp:<line number>: passed: encode("\xE0\xA0\x80") == "\xE0\xA0\x80" for: "ࠀ" == "ࠀ"
+Xml.tests.cpp:<line number>: passed: encode("\xED\x9F\xBF") == "\xED\x9F\xBF" for: "퟿" == "퟿"
+Xml.tests.cpp:<line number>: passed: encode("\xEE\x80\x80") == "\xEE\x80\x80" for: "" == ""
+Xml.tests.cpp:<line number>: passed: encode("\xEF\xBF\xBF") == "\xEF\xBF\xBF" for: "￿" == "￿"
+Xml.tests.cpp:<line number>: passed: encode("\xF0\x90\x80\x80") == "\xF0\x90\x80\x80" for: "𐀀" == "𐀀"
+Xml.tests.cpp:<line number>: passed: encode("\xF4\x8F\xBF\xBF") == "\xF4\x8F\xBF\xBF" for: "􏿿" == "􏿿"
+Xml.tests.cpp:<line number>: passed: encode("Here \xFF be 👾") == u8"Here \\xFF be 👾" for: "Here \xFF be 👾" == "Here \xFF be 👾"
+Xml.tests.cpp:<line number>: passed: encode("\xFF") == "\\xFF" for: "\xFF" == "\xFF"
+Xml.tests.cpp:<line number>: passed: encode("\xC5\xC5\xA0") == u8"\\xC5Š" for: "\xC5Š" == "\xC5Š"
+Xml.tests.cpp:<line number>: passed: encode("\xF4\x90\x80\x80") == u8"\\xF4\\x90\\x80\\x80" for: "\xF4\x90\x80\x80" == "\xF4\x90\x80\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xC0\x80") == u8"\\xC0\\x80" for: "\xC0\x80" == "\xC0\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xF0\x80\x80\x80") == u8"\\xF0\\x80\\x80\\x80" for: "\xF0\x80\x80\x80" == "\xF0\x80\x80\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xC1\xBF") == u8"\\xC1\\xBF" for: "\xC1\xBF" == "\xC1\xBF"
+Xml.tests.cpp:<line number>: passed: encode("\xE0\x9F\xBF") == u8"\\xE0\\x9F\\xBF" for: "\xE0\x9F\xBF" == "\xE0\x9F\xBF"
+Xml.tests.cpp:<line number>: passed: encode("\xF0\x8F\xBF\xBF") == u8"\\xF0\\x8F\\xBF\\xBF" for: "\xF0\x8F\xBF\xBF" == "\xF0\x8F\xBF\xBF"
+Xml.tests.cpp:<line number>: passed: encode("\xED\xA0\x80") == "\xED\xA0\x80" for: "���" == "���"
+Xml.tests.cpp:<line number>: passed: encode("\xED\xAF\xBF") == "\xED\xAF\xBF" for: "���" == "���"
+Xml.tests.cpp:<line number>: passed: encode("\xED\xB0\x80") == "\xED\xB0\x80" for: "���" == "���"
+Xml.tests.cpp:<line number>: passed: encode("\xED\xBF\xBF") == "\xED\xBF\xBF" for: "���" == "���"
+Xml.tests.cpp:<line number>: passed: encode("\x80") == u8"\\x80" for: "\x80" == "\x80"
+Xml.tests.cpp:<line number>: passed: encode("\x81") == u8"\\x81" for: "\x81" == "\x81"
+Xml.tests.cpp:<line number>: passed: encode("\xBC") == u8"\\xBC" for: "\xBC" == "\xBC"
+Xml.tests.cpp:<line number>: passed: encode("\xBF") == u8"\\xBF" for: "\xBF" == "\xBF"
+Xml.tests.cpp:<line number>: passed: encode("\xF5\x80\x80\x80") == u8"\\xF5\\x80\\x80\\x80" for: "\xF5\x80\x80\x80" == "\xF5\x80\x80\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xF6\x80\x80\x80") == u8"\\xF6\\x80\\x80\\x80" for: "\xF6\x80\x80\x80" == "\xF6\x80\x80\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xF7\x80\x80\x80") == u8"\\xF7\\x80\\x80\\x80" for: "\xF7\x80\x80\x80" == "\xF7\x80\x80\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xDE") == u8"\\xDE" for: "\xDE" == "\xDE"
+Xml.tests.cpp:<line number>: passed: encode("\xDF") == u8"\\xDF" for: "\xDF" == "\xDF"
+Xml.tests.cpp:<line number>: passed: encode("\xE0") == u8"\\xE0" for: "\xE0" == "\xE0"
+Xml.tests.cpp:<line number>: passed: encode("\xEF") == u8"\\xEF" for: "\xEF" == "\xEF"
+Xml.tests.cpp:<line number>: passed: encode("\xF0") == u8"\\xF0" for: "\xF0" == "\xF0"
+Xml.tests.cpp:<line number>: passed: encode("\xF4") == u8"\\xF4" for: "\xF4" == "\xF4"
+Xml.tests.cpp:<line number>: passed: encode("\xE0\x80") == u8"\\xE0\\x80" for: "\xE0\x80" == "\xE0\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xE0\xBF") == u8"\\xE0\\xBF" for: "\xE0\xBF" == "\xE0\xBF"
+Xml.tests.cpp:<line number>: passed: encode("\xE1\x80") == u8"\\xE1\\x80" for: "\xE1\x80" == "\xE1\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xF0\x80") == u8"\\xF0\\x80" for: "\xF0\x80" == "\xF0\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xF4\x80") == u8"\\xF4\\x80" for: "\xF4\x80" == "\xF4\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xF0\x80\x80") == u8"\\xF0\\x80\\x80" for: "\xF0\x80\x80" == "\xF0\x80\x80"
+Xml.tests.cpp:<line number>: passed: encode("\xF4\x80\x80") == u8"\\xF4\\x80\\x80" for: "\xF4\x80\x80" == "\xF4\x80\x80"
 ToStringVector.tests.cpp:<line number>: passed: Catch::Detail::stringify( empty ) == "{  }" for: "{  }" == "{  }"
 ToStringVector.tests.cpp:<line number>: passed: Catch::Detail::stringify( oneValue ) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
 ToStringVector.tests.cpp:<line number>: passed: Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
@@ -1167,7 +1173,7 @@ Misc.tests.cpp:<line number>: passed:
 Misc.tests.cpp:<line number>: passed: makeString( false ) != static_cast<char*>(0) for: "valid string" != {null string}
 Misc.tests.cpp:<line number>: passed: makeString( true ) == static_cast<char*>(0) for: {null string} == {null string}
 Tricky.tests.cpp:<line number>: passed: ptr.get() == 0 for: 0 == 0
-ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( pair ) == "{ { 42, /"Arthur/" }, { /"Ford/", 24 } }" for: "{ { 42, "Arthur" }, { "Ford", 24 } }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" for: "{ { 42, "Arthur" }, { "Ford", 24 } }"
 ==
 "{ { 42, "Arthur" }, { "Ford", 24 } }"
 Tricky.tests.cpp:<line number>: passed: p == 0 for: 0 == 0
@@ -1191,18 +1197,18 @@ String.tests.cpp:<line number>: passed: s == "didn|'t" for: "didn|'t" == "didn|'
 Misc.tests.cpp:<line number>: failed: false with 1 message: '3'
 Message.tests.cpp:<line number>: failed: false with 2 messages: 'hi' and 'i := 7'
 ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( emptyMap ) == "{  }" for: "{  }" == "{  }"
-ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( map ) == "{ { /"one/", 1 } }" for: "{ { "one", 1 } }" == "{ { "one", 1 } }"
-ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( map ) == "{ { /"abc/", 1 }, { /"def/", 2 }, { /"ghi/", 3 } }" for: "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" for: "{ { "one", 1 } }" == "{ { "one", 1 } }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" for: "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
 ==
 "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
-ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(value) == "{ 34, /"xyzzy/" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
-ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( value ) == "{ 34, /"xyzzy/" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
 ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( emptySet ) == "{  }" for: "{  }" == "{  }"
-ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( set ) == "{ /"one/" }" for: "{ "one" }" == "{ "one" }"
-ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( set ) == "{ /"abc/", /"def/", /"ghi/" }" for: "{ "abc", "def", "ghi" }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( set ) == "{ \"one\" }" for: "{ "one" }" == "{ "one" }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" for: "{ "abc", "def", "ghi" }"
 ==
 "{ "abc", "def", "ghi" }"
-ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( pr ) == "{ { /"green/", 55 } }" for: "{ { "green", 55 } }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" for: "{ { "green", 55 } }"
 ==
 "{ { "green", 55 } }"
 Tricky.tests.cpp:<line number>: failed: std::string( "first" ) == "second" for: "first" == "second"
@@ -1241,10 +1247,10 @@ Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 3 =
 Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 5 == 5
 Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 4 == 4
 Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'Why would you throw a std::string?'
-Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
-Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
-Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
-Misc.tests.cpp:<line number>: passed: result == "/"wide load/"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
 EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e0) == "E2/V0" for: "E2/V0" == "E2/V0"
 EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e1) == "E2/V1" for: "E2/V1" == "E2/V1"
 EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e3) == "Unknown enum value 10" for: "Unknown enum value 10"
@@ -1261,17 +1267,17 @@ ToStringTuple.tests.cpp:<line number>: passed: "{ }" == ::Catch::Detail::stringi
 ToStringTuple.tests.cpp:<line number>: passed: "1.2f" == ::Catch::Detail::stringify(float(1.2)) for: "1.2f" == "1.2f"
 ToStringTuple.tests.cpp:<line number>: passed: "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) for: "{ 1.2f, 0 }" == "{ 1.2f, 0 }"
 ToStringTuple.tests.cpp:<line number>: passed: "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }"
-ToStringTuple.tests.cpp:<line number>: passed: "{ 0, 42, /"Catch me/" }" == ::Catch::Detail::stringify(value) for: "{ 0, 42, "Catch me" }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ 0, 42, \"Catch me\" }" == ::Catch::Detail::stringify(value) for: "{ 0, 42, "Catch me" }"
 ==
 "{ 0, 42, "Catch me" }"
-ToStringTuple.tests.cpp:<line number>: passed: "{ /"hello/", /"world/" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }"
 ==
 "{ "hello", "world" }"
 ToStringTuple.tests.cpp:<line number>: passed: "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.2f }"
 ==
 "{ { 42 }, { }, 1.2f }"
 ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(v) == "{  }" for: "{  }" == "{  }"
-ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(v) == "{ { /"hello/" }, { /"world/" } }" for: "{ { "hello" }, { "world" } }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" for: "{ { "hello" }, { "world" } }"
 ==
 "{ { "hello" }, { "world" } }"
 ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(bools) == "{  }" for: "{  }" == "{  }"
@@ -1284,8 +1290,8 @@ ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) =
 ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
 ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
 ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{  }" for: "{  }" == "{  }"
-ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ /"hello/" }" for: "{ "hello" }" == "{ "hello" }"
-ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ /"hello/", /"world/" }" for: "{ "hello", "world" }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ \"hello\" }" for: "{ "hello" }" == "{ "hello" }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" for: "{ "hello", "world" }"
 ==
 "{ "hello", "world" }"
 Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
diff --git a/packages/Catch2/projects/SelfTest/Baselines/console.std.approved.txt b/packages/Catch2/projects/SelfTest/Baselines/console.std.approved.txt
index 24755c802bbc3872813830ba0df7385d00aa1ea1..50632eb9738191b3224ec1f7b1a87c7be6e696f4 100644
--- a/packages/Catch2/projects/SelfTest/Baselines/console.std.approved.txt
+++ b/packages/Catch2/projects/SelfTest/Baselines/console.std.approved.txt
@@ -3,6 +3,8 @@
 <exe-name> is a <version> host application.
 Run with -? for options
 
+Randomness seeded to: 1
+
 -------------------------------------------------------------------------------
 #748 - captures with unexpected exceptions
   outside assertions
@@ -390,8 +392,7 @@ Message.tests.cpp:<line number>: FAILED:
 explicitly with message:
   This is a failure
 
-Message.tests.cpp:<line number>:
-warning:
+Message.tests.cpp:<line number>: warning:
   This message appears in the output
 
 -------------------------------------------------------------------------------
@@ -400,8 +401,7 @@ INFO and WARN do not abort tests
 Message.tests.cpp:<line number>
 ...............................................................................
 
-Message.tests.cpp:<line number>:
-warning:
+Message.tests.cpp:<line number>: warning:
   this is a warning
 
 -------------------------------------------------------------------------------
@@ -526,8 +526,7 @@ Nice descriptive name
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-warning:
+Misc.tests.cpp:<line number>: warning:
   This one ran
 
 -------------------------------------------------------------------------------
@@ -907,8 +906,7 @@ Where the LHS is not a simple value
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-warning:
+Tricky.tests.cpp:<line number>: warning:
   Uncomment the code in this test to check that it gives a sensible compiler
   error
 
@@ -918,8 +916,7 @@ Where there is more to the expression after the RHS
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-warning:
+Tricky.tests.cpp:<line number>: warning:
   Uncomment the code in this test to check that it gives a sensible compiler
   error
 
@@ -1096,6 +1093,6 @@ due to unexpected exception with message:
   Why would you throw a std::string?
 
 ===============================================================================
-test cases:  213 |  160 passed |  49 failed |  4 failed as expected
-assertions: 1228 | 1099 passed | 108 failed | 21 failed as expected
+test cases:  216 |  163 passed |  49 failed |  4 failed as expected
+assertions: 1234 | 1105 passed | 108 failed | 21 failed as expected
 
diff --git a/packages/Catch2/projects/SelfTest/Baselines/console.sw.approved.txt b/packages/Catch2/projects/SelfTest/Baselines/console.sw.approved.txt
index 27fa5c59db610747d3a9125fc215bf64e1e89d2e..4aae201240676462f05df4136ad874f7f5ab860e 100644
--- a/packages/Catch2/projects/SelfTest/Baselines/console.sw.approved.txt
+++ b/packages/Catch2/projects/SelfTest/Baselines/console.sw.approved.txt
@@ -3,14 +3,15 @@
 <exe-name> is a <version> host application.
 Run with -? for options
 
+Randomness seeded to: 1
+
 -------------------------------------------------------------------------------
 # A test name that starts with a #
 -------------------------------------------------------------------------------
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   yay
 
@@ -21,14 +22,12 @@ with message:
 Decomposition.tests.cpp:<line number>
 ...............................................................................
 
-Decomposition.tests.cpp:<line number>:
-PASSED:
+Decomposition.tests.cpp:<line number>: PASSED:
   REQUIRE( fptr == 0 )
 with expansion:
   0 == 0
 
-Decomposition.tests.cpp:<line number>:
-PASSED:
+Decomposition.tests.cpp:<line number>: PASSED:
   REQUIRE( fptr == 0l )
 with expansion:
   0 == 0
@@ -39,14 +38,12 @@ with expansion:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( y.v == 0 )
 with expansion:
   0 == 0
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( 0 == y.v )
 with expansion:
   0 == 0
@@ -57,38 +54,32 @@ with expansion:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 == t2 )
 with expansion:
   {?} == {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 != t2 )
 with expansion:
   {?} != {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 < t2 )
 with expansion:
   {?} < {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 > t2 )
 with expansion:
   {?} > {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 <= t2 )
 with expansion:
   {?} <= {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 >= t2 )
 with expansion:
   {?} >= {?}
@@ -99,8 +90,7 @@ with expansion:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 #1238
@@ -108,8 +98,7 @@ PASSED:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( std::memcmp(uarr, "123", sizeof(uarr)) == 0 )
 with expansion:
   0 == 0
@@ -117,8 +106,7 @@ with messages:
   uarr := "123"
   sarr := "456"
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( std::memcmp(sarr, "456", sizeof(sarr)) == 0 )
 with expansion:
   0 == 0
@@ -132,8 +120,18 @@ with messages:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#1403
+-------------------------------------------------------------------------------
+Compilation.tests.cpp:<line number>
+...............................................................................
+
+Compilation.tests.cpp:<line number>: PASSED:
+  REQUIRE( h1 == h2 )
+with expansion:
+  [1403 helper] == [1403 helper]
 
 -------------------------------------------------------------------------------
 #748 - captures with unexpected exceptions
@@ -167,8 +165,7 @@ due to unexpected exception with messages:
 Exception.tests.cpp:<line number>
 ...............................................................................
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS( thisThrows() )
 with message:
   answer := 42
@@ -179,8 +176,7 @@ with message:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( 42 == f )
 with expansion:
   42 == {?}
@@ -191,38 +187,31 @@ with expansion:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( a == t )
 with expansion:
   3 == 3
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   CHECK( a == t )
 with expansion:
   3 == 3
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS( throws_int(true) )
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   CHECK_THROWS_AS( throws_int(true), int )
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( throws_int(false) )
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( "aaa", Catch::EndsWith("aaa") )
 with expansion:
   "aaa" ends with: "aaa"
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( templated_tests<int>(3) )
 with expansion:
   true
@@ -238,8 +227,7 @@ Misc.tests.cpp:<line number>: FAILED:
 with expansion:
   1 == 0
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( errno == 1 )
 with expansion:
   1 == 1
@@ -250,8 +238,7 @@ with expansion:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( x == 4 )
 with expansion:
   {?} == 4
@@ -265,8 +252,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -277,8 +263,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -289,8 +274,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -301,8 +285,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -313,8 +296,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -364,46 +346,38 @@ Condition.tests.cpp:<line number>: FAILED:
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( false == false )
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( true == true )
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( !false )
 with expansion:
   true
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE_FALSE( false )
 with expansion:
   !false
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( !falseValue )
 with expansion:
   true
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE_FALSE( falseValue )
 with expansion:
   !false
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( !(1 == 2) )
 with expansion:
   true
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE_FALSE( 1 == 2 )
 
 -------------------------------------------------------------------------------
@@ -413,14 +387,12 @@ PASSED:
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( is_true<true>::value == true )
 with expansion:
   true == true
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( true == is_true<true>::value )
 with expansion:
   true == true
@@ -432,14 +404,12 @@ with expansion:
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( is_true<false>::value == false )
 with expansion:
   false == false
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( false == is_true<false>::value )
 with expansion:
   false == false
@@ -451,8 +421,7 @@ with expansion:
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( !is_true<false>::value )
 with expansion:
   true
@@ -464,8 +433,7 @@ with expansion:
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( !!is_true<true>::value )
 with expansion:
   true
@@ -477,14 +445,12 @@ with expansion:
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( is_true<true>::value )
 with expansion:
   true
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE_FALSE( is_true<false>::value )
 with expansion:
   !false
@@ -495,8 +461,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 101
@@ -507,8 +472,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 102
@@ -519,8 +483,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 103
@@ -531,8 +494,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 104
@@ -543,8 +505,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 105
@@ -555,8 +516,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 106
@@ -567,8 +527,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 107
@@ -579,8 +538,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 108
@@ -591,8 +549,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 109
@@ -603,8 +560,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   1 < 110
@@ -615,8 +571,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 101
@@ -627,8 +582,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 102
@@ -639,8 +593,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 103
@@ -651,8 +604,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 104
@@ -663,8 +615,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 105
@@ -675,8 +626,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 106
@@ -687,8 +637,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 107
@@ -699,8 +648,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 108
@@ -711,8 +659,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 109
@@ -723,8 +670,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   2 < 110
@@ -735,8 +681,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 101
@@ -747,8 +692,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 102
@@ -759,8 +703,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 103
@@ -771,8 +714,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 104
@@ -783,8 +725,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 105
@@ -795,8 +736,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 106
@@ -807,8 +747,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 107
@@ -819,8 +758,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 108
@@ -831,8 +769,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 109
@@ -843,8 +780,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   3 < 110
@@ -855,8 +791,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 101
@@ -867,8 +802,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 102
@@ -879,8 +813,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 103
@@ -891,8 +824,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 104
@@ -903,8 +835,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 105
@@ -915,8 +846,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 106
@@ -927,8 +857,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 107
@@ -939,8 +868,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 108
@@ -951,8 +879,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 109
@@ -963,8 +890,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   4 < 110
@@ -975,8 +901,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 101
@@ -987,8 +912,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 102
@@ -999,8 +923,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 103
@@ -1011,8 +934,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 104
@@ -1023,8 +945,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 105
@@ -1035,8 +956,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 106
@@ -1047,8 +967,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 107
@@ -1059,8 +978,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 108
@@ -1071,8 +989,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 109
@@ -1083,8 +1000,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   5 < 110
@@ -1095,8 +1011,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 101
@@ -1107,8 +1022,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 102
@@ -1119,8 +1033,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 103
@@ -1131,8 +1044,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 104
@@ -1143,8 +1055,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 105
@@ -1155,8 +1066,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 106
@@ -1167,8 +1077,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 107
@@ -1179,8 +1088,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 108
@@ -1191,8 +1099,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 109
@@ -1203,8 +1110,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   6 < 110
@@ -1215,8 +1121,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 101
@@ -1227,8 +1132,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 102
@@ -1239,8 +1143,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 103
@@ -1251,8 +1154,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 104
@@ -1263,8 +1165,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 105
@@ -1275,8 +1176,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 106
@@ -1287,8 +1187,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 107
@@ -1299,8 +1198,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 108
@@ -1311,8 +1209,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 109
@@ -1323,8 +1220,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   7 < 110
@@ -1335,8 +1231,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 101
@@ -1347,8 +1242,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 102
@@ -1359,8 +1253,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 103
@@ -1371,8 +1264,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 104
@@ -1383,8 +1275,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 105
@@ -1395,8 +1286,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 106
@@ -1407,8 +1297,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 107
@@ -1419,8 +1308,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 108
@@ -1431,8 +1319,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 109
@@ -1443,8 +1330,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   8 < 110
@@ -1455,8 +1341,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 101
@@ -1467,8 +1352,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 102
@@ -1479,8 +1363,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 103
@@ -1491,8 +1374,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 104
@@ -1503,8 +1385,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 105
@@ -1515,8 +1396,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 106
@@ -1527,8 +1407,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 107
@@ -1539,8 +1418,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 108
@@ -1551,8 +1429,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 109
@@ -1563,8 +1440,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   9 < 110
@@ -1575,8 +1451,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 101
@@ -1587,8 +1462,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 102
@@ -1599,8 +1473,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 103
@@ -1611,8 +1484,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 104
@@ -1623,8 +1495,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 105
@@ -1635,8 +1506,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 106
@@ -1647,8 +1517,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 107
@@ -1659,8 +1528,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 108
@@ -1671,8 +1539,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 109
@@ -1683,8 +1550,7 @@ with expansion:
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   CHECK( x < y )
 with expansion:
   10 < 110
@@ -1706,8 +1572,7 @@ A METHOD_AS_TEST_CASE based test run that succeeds
 Class.tests.cpp:<line number>
 ...............................................................................
 
-Class.tests.cpp:<line number>:
-PASSED:
+Class.tests.cpp:<line number>: PASSED:
   REQUIRE( s == "hello" )
 with expansion:
   "hello" == "hello"
@@ -1729,8 +1594,7 @@ A TEST_CASE_METHOD based test run that succeeds
 Class.tests.cpp:<line number>
 ...............................................................................
 
-Class.tests.cpp:<line number>:
-PASSED:
+Class.tests.cpp:<line number>: PASSED:
   REQUIRE( m_a == 1 )
 with expansion:
   1 == 1
@@ -1741,38 +1605,32 @@ A comparison that uses literals instead of the normal constructor
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d == 1.23_a )
 with expansion:
   1.23 == Approx( 1.23 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d != 1.22_a )
 with expansion:
   1.23 != Approx( 1.22 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( -d == -1.23_a )
 with expansion:
   -1.23 == Approx( -1.23 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d == 1.2_a .epsilon(.1) )
 with expansion:
   1.23 == Approx( 1.2 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d != 1.2_a .epsilon(.001) )
 with expansion:
   1.23 != Approx( 1.2 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d == 1_a .epsilon(.3) )
 with expansion:
   1.23 == Approx( 1.0 )
@@ -1785,8 +1643,7 @@ A couple of nested sections followed by a failure
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   that's not flying - that's failing in style
 
@@ -1822,38 +1679,32 @@ Absolute margin
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 104.0 != Approx(100.0) )
 with expansion:
   104.0 != Approx( 100.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 104.0 == Approx(100.0).margin(5) )
 with expansion:
   104.0 == Approx( 100.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 104.0 == Approx(100.0).margin(4) )
 with expansion:
   104.0 == Approx( 100.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 104.0 != Approx(100.0).margin(3) )
 with expansion:
   104.0 != Approx( 100.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 100.3 != Approx(100.0) )
 with expansion:
   100.3 != Approx( 100.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 100.3 == Approx(100.0).margin(0.5) )
 with expansion:
   100.3 == Approx( 100.0 )
@@ -1873,14 +1724,12 @@ An expression with side-effects should only be evaluated once
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( i++ == 7 )
 with expansion:
   7 == 7
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( i++ == 8 )
 with expansion:
   8 == 8
@@ -1891,8 +1740,7 @@ An unchecked exception reports the line of the last assertion
 Exception.tests.cpp:<line number>
 ...............................................................................
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   CHECK( 1 == 1 )
 
 Exception.tests.cpp:<line number>: FAILED:
@@ -1906,8 +1754,7 @@ Anonymous test case 1
 VariadicMacros.tests.cpp:<line number>
 ...............................................................................
 
-VariadicMacros.tests.cpp:<line number>:
-PASSED:
+VariadicMacros.tests.cpp:<line number>: PASSED:
 with message:
   anonymous test case
 
@@ -1917,32 +1764,25 @@ Approx setters validate their arguments
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( Approx(0).margin(0) )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( Approx(0).margin(1234656) )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_AS( Approx(0).margin(-2), std::domain_error )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( Approx(0).epsilon(0) )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( Approx(0).epsilon(1) )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_AS( Approx(0).epsilon(-0.001), std::domain_error )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_AS( Approx(0).epsilon(1.0001), std::domain_error )
 
 -------------------------------------------------------------------------------
@@ -1951,32 +1791,27 @@ Approx with exactly-representable margin
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   CHECK( 0.25f == Approx(0.0f).margin(0.25f) )
 with expansion:
   0.25f == Approx( 0.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   CHECK( 0.0f == Approx(0.25f).margin(0.25f) )
 with expansion:
   0.0f == Approx( 0.25 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   CHECK( 0.5f == Approx(0.25f).margin(0.25f) )
 with expansion:
   0.5f == Approx( 0.25 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   CHECK( 245.0f == Approx(245.25f).margin(0.25f) )
 with expansion:
   245.0f == Approx( 245.25 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   CHECK( 245.5f == Approx(245.25f).margin(0.25f) )
 with expansion:
   245.5f == Approx( 245.25 )
@@ -1987,14 +1822,12 @@ Approximate PI
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) )
 with expansion:
   3.1428571429 == Approx( 3.141 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) )
 with expansion:
   3.1428571429 != Approx( 3.141 )
@@ -2005,14 +1838,12 @@ Approximate comparisons with different epsilons
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d != Approx( 1.231 ) )
 with expansion:
   1.23 != Approx( 1.231 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) )
 with expansion:
   1.23 == Approx( 1.231 )
@@ -2023,14 +1854,12 @@ Approximate comparisons with floats
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 1.23f == Approx( 1.23f ) )
 with expansion:
   1.23f == Approx( 1.2300000191 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 0.0f == Approx( 0.0f ) )
 with expansion:
   0.0f == Approx( 0.0 )
@@ -2041,14 +1870,12 @@ Approximate comparisons with ints
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 1 == Approx( 1 ) )
 with expansion:
   1 == Approx( 1.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 0 == Approx( 0 ) )
 with expansion:
   0 == Approx( 0.0 )
@@ -2059,32 +1886,27 @@ Approximate comparisons with mixed numeric types
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 1.0f == Approx( 1 ) )
 with expansion:
   1.0f == Approx( 1.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 0 == Approx( dZero) )
 with expansion:
   0 == Approx( 0.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 0 == Approx( dSmall ).margin( 0.001 ) )
 with expansion:
   0 == Approx( 0.00001 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 1.234f == Approx( dMedium ) )
 with expansion:
   1.234f == Approx( 1.234 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( dMedium == Approx( 1.234f ) )
 with expansion:
   1.234 == Approx( 1.2339999676 )
@@ -2096,14 +1918,12 @@ Arbitrary predicate matcher
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1, Predicate<int>(alwaysTrue, "always true") )
 with expansion:
   1 matches predicate: "always true"
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1, !Predicate<int>(alwaysFalse, "always false") )
 with expansion:
   1 not matches predicate: "always false"
@@ -2115,14 +1935,12 @@ Arbitrary predicate matcher
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( "Hello olleH", Predicate<std::string>( [] (std::string const& str) -> bool { return str.front() == str.back(); }, "First and last character should be equal") )
 with expansion:
   "Hello olleH" matches predicate: "First and last character should be equal"
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( "This wouldn't pass", !Predicate<std::string>( [] (std::string const& str) -> bool { return str.front() == str.back(); } ) )
 with expansion:
   "This wouldn't pass" not matches undescribed predicate
@@ -2133,8 +1951,7 @@ Assertions then sections
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( true )
 
 -------------------------------------------------------------------------------
@@ -2144,8 +1961,7 @@ Assertions then sections
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( true )
 
 -------------------------------------------------------------------------------
@@ -2156,8 +1972,7 @@ Assertions then sections
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( true )
 
 -------------------------------------------------------------------------------
@@ -2166,8 +1981,7 @@ Assertions then sections
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( true )
 
 -------------------------------------------------------------------------------
@@ -2177,8 +1991,7 @@ Assertions then sections
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( true )
 
 -------------------------------------------------------------------------------
@@ -2189,8 +2002,7 @@ Assertions then sections
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( true )
 
 -------------------------------------------------------------------------------
@@ -2199,20 +2011,17 @@ Assorted miscellaneous tests
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( INFINITY == Approx(INFINITY) )
 with expansion:
   inff == Approx( inf )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( NAN != Approx(NAN) )
 with expansion:
   nanf != Approx( nan )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_FALSE( NAN == Approx(NAN) )
 with expansion:
   !(nanf == Approx( nan ))
@@ -2223,14 +2032,12 @@ Bitfields can be captured (#1027)
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( y.v == 0 )
 with expansion:
   0 == 0
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( 0 == y.v )
 with expansion:
   0 == 0
@@ -2242,8 +2049,7 @@ Capture and info messages
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( true )
 with message:
   i := 2
@@ -2255,8 +2061,7 @@ Capture and info messages
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( true )
 with message:
   3
@@ -2268,26 +2073,22 @@ Character pretty printing
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   CHECK( tab == '\t' )
 with expansion:
   '\t' == '\t'
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   CHECK( newline == '\n' )
 with expansion:
   '\n' == '\n'
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   CHECK( carr_return == '\r' )
 with expansion:
   '\r' == '\r'
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   CHECK( form_feed == '\f' )
 with expansion:
   '\f' == '\f'
@@ -2299,32 +2100,27 @@ Character pretty printing
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   CHECK( space == ' ' )
 with expansion:
   ' ' == ' '
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( c == chars[i] )
 with expansion:
   'a' == 'a'
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( c == chars[i] )
 with expansion:
   'z' == 'z'
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( c == chars[i] )
 with expansion:
   'A' == 'A'
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( c == chars[i] )
 with expansion:
   'Z' == 'Z'
@@ -2336,32 +2132,27 @@ Character pretty printing
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   CHECK( null_terminator == '\0' )
 with expansion:
   0 == 0
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( c == i )
 with expansion:
   2 == 2
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( c == i )
 with expansion:
   3 == 3
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( c == i )
 with expansion:
   4 == 4
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( c == i )
 with expansion:
   5 == 5
@@ -2372,64 +2163,52 @@ Commas in various macros are allowed
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS( std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} )
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECK_THROWS( std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} )
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} )
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECK_NOTHROW( std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} )
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
 with expansion:
   { 1, 2 } == { 1, 2 }
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECK( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
 with expansion:
   { 1, 2 } == { 1, 2 }
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE_FALSE( std::vector<int>{1, 2} == std::vector<int>{1, 2, 3} )
 with expansion:
   !({ 1, 2 } == { 1, 2, 3 })
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECK_FALSE( std::vector<int>{1, 2} == std::vector<int>{1, 2, 3} )
 with expansion:
   !({ 1, 2 } == { 1, 2, 3 })
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECK_NOFAIL( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
 with expansion:
   { 1, 2 } == { 1, 2 }
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECKED_IF( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
 with expansion:
   { 1, 2 } == { 1, 2 }
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( true )
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECKED_ELSE( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
 with expansion:
   { 1, 2 } == { 1, 2 }
@@ -2440,14 +2219,12 @@ Comparing function pointers
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( a )
 with expansion:
   0x<hex digits>
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( a == &foo )
 with expansion:
   0x<hex digits> == 0x<hex digits>
@@ -2458,74 +2235,62 @@ Comparison with explicitly convertible types
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( td == Approx(10.0) )
 with expansion:
   StrongDoubleTypedef(10) == Approx( 10.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( Approx(10.0) == td )
 with expansion:
   Approx( 10.0 ) == StrongDoubleTypedef(10)
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( td != Approx(11.0) )
 with expansion:
   StrongDoubleTypedef(10) != Approx( 11.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( Approx(11.0) != td )
 with expansion:
   Approx( 11.0 ) != StrongDoubleTypedef(10)
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( td <= Approx(10.0) )
 with expansion:
   StrongDoubleTypedef(10) <= Approx( 10.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( td <= Approx(11.0) )
 with expansion:
   StrongDoubleTypedef(10) <= Approx( 11.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( Approx(10.0) <= td )
 with expansion:
   Approx( 10.0 ) <= StrongDoubleTypedef(10)
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( Approx(9.0) <= td )
 with expansion:
   Approx( 9.0 ) <= StrongDoubleTypedef(10)
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( td >= Approx(9.0) )
 with expansion:
   StrongDoubleTypedef(10) >= Approx( 9.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( td >= Approx(td) )
 with expansion:
   StrongDoubleTypedef(10) >= Approx( 10.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( Approx(td) >= td )
 with expansion:
   Approx( 10.0 ) >= StrongDoubleTypedef(10)
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( Approx(11.0) >= td )
 with expansion:
   Approx( 11.0 ) >= StrongDoubleTypedef(10)
@@ -2536,8 +2301,7 @@ Comparisons between ints where one side is computed
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   CHECK( 54 == 6*9 )
 with expansion:
   54 == 54
@@ -2549,38 +2313,32 @@ behaviour
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   CHECK( ( -1 > 2u ) )
 with expansion:
   true
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   CHECK( -1 > 2u )
 with expansion:
   -1 > 2
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   CHECK( ( 2u < -1 ) )
 with expansion:
   true
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   CHECK( 2u < -1 )
 with expansion:
   2 < -1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   CHECK( ( minInt > 2u ) )
 with expansion:
   true
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   CHECK( minInt > 2u )
 with expansion:
   -2147483648 > 2
@@ -2591,80 +2349,67 @@ Comparisons with int literals don't warn when mixing signed/ unsigned
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( i == 1 )
 with expansion:
   1 == 1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( ui == 2 )
 with expansion:
   2 == 2
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( l == 3 )
 with expansion:
   3 == 3
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( ul == 4 )
 with expansion:
   4 == 4
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( c == 5 )
 with expansion:
   5 == 5
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( uc == 6 )
 with expansion:
   6 == 6
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( 1 == i )
 with expansion:
   1 == 1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( 2 == ui )
 with expansion:
   2 == 2
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( 3 == l )
 with expansion:
   3 == 3
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( 4 == ul )
 with expansion:
   4 == 4
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( 5 == c )
 with expansion:
   5 == 5
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( 6 == uc )
 with expansion:
   6 == 6
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( (std::numeric_limits<uint32_t>::max)() > ul )
 with expansion:
   4294967295 (0x<hex digits>) > 4
@@ -2724,14 +2469,12 @@ Default scale is invisible to comparison
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 101.000001 != Approx(100).epsilon(0.01) )
 with expansion:
   101.000001 != Approx( 100.0 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( std::pow(10, -5) != Approx(std::pow(10, -7)) )
 with expansion:
   0.00001 != Approx( 0.0000001 )
@@ -2759,8 +2502,7 @@ Epsilon only applies to Approx's value
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( 101.01 != Approx(100).epsilon(0.01) )
 with expansion:
   101.01 != Approx( 100.0 )
@@ -2842,44 +2584,37 @@ Equality checks that should succeed
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven == 7 )
 with expansion:
   7 == 7
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.float_nine_point_one == Approx( 9.1f ) )
 with expansion:
   9.1f == Approx( 9.1000003815 )
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.double_pi == Approx( 3.1415926535 ) )
 with expansion:
   3.1415926535 == Approx( 3.1415926535 )
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello == "hello" )
 with expansion:
   "hello" == "hello"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( "hello" == data.str_hello )
 with expansion:
   "hello" == "hello"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello.size() == 5 )
 with expansion:
   5 == 5
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( x == Approx( 1.3 ) )
 with expansion:
   1.3 == Approx( 1.3 )
@@ -2890,15 +2625,13 @@ Equals
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), Equals("this string contains 'abc' as a substring") )
 with expansion:
   "this string contains 'abc' as a substring" equals: "this string contains
   'abc' as a substring"
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), Equals("this string contains 'ABC' as a substring", Catch::CaseSensitive::No) )
 with expansion:
   "this string contains 'abc' as a substring" equals: "this string contains
@@ -2928,22 +2661,19 @@ Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(WhatException{}) == "This exception has overriden what() method" )
 with expansion:
   "This exception has overriden what() method"
   ==
   "This exception has overriden what() method"
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" )
 with expansion:
   "OperatorException" == "OperatorException"
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" )
 with expansion:
   "StringMakerException"
@@ -3005,14 +2735,12 @@ Exception matchers that succeed
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THROWS_MATCHES( throws(1), SpecialException, ExceptionMatcher{1} )
 with expansion:
   SpecialException::what special exception has value of 1
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_MATCHES( throws(2), SpecialException, ExceptionMatcher{2} )
 with expansion:
   SpecialException::what special exception has value of 2
@@ -3024,8 +2752,7 @@ Exception messages can be tested for
 Exception.tests.cpp:<line number>
 ...............................................................................
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_WITH( thisThrows(), "expected exception" )
 with expansion:
   "expected exception" equals: "expected exception"
@@ -3037,8 +2764,7 @@ Exception messages can be tested for
 Exception.tests.cpp:<line number>
 ...............................................................................
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_WITH( thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) )
 with expansion:
   "expected exception" equals: "expected exception" (case insensitive)
@@ -3050,26 +2776,22 @@ Exception messages can be tested for
 Exception.tests.cpp:<line number>
 ...............................................................................
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_WITH( thisThrows(), StartsWith( "expected" ) )
 with expansion:
   "expected exception" starts with: "expected"
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_WITH( thisThrows(), EndsWith( "exception" ) )
 with expansion:
   "expected exception" ends with: "exception"
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_WITH( thisThrows(), Contains( "except" ) )
 with expansion:
   "expected exception" contains: "except"
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_WITH( thisThrows(), Contains( "exCept", Catch::CaseSensitive::No ) )
 with expansion:
   "expected exception" contains: "except" (case insensitive)
@@ -3122,8 +2844,7 @@ Message.tests.cpp:<line number>: FAILED:
 explicitly with message:
   This is a failure
 
-Message.tests.cpp:<line number>:
-warning:
+Message.tests.cpp:<line number>: warning:
   This message appears in the output
 
 -------------------------------------------------------------------------------
@@ -3132,32 +2853,27 @@ Factorials are computed
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( Factorial(0) == 1 )
 with expansion:
   1 == 1
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( Factorial(1) == 1 )
 with expansion:
   1 == 1
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( Factorial(2) == 2 )
 with expansion:
   2 == 2
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( Factorial(3) == 6 )
 with expansion:
   6 == 6
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( Factorial(10) == 3628800 )
 with expansion:
   3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)
@@ -3169,56 +2885,47 @@ Floating point matchers: double
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1., WithinAbs(1., 0) )
 with expansion:
   1.0 is within 0.0 of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 0., WithinAbs(1., 1) )
 with expansion:
   0.0 is within 1.0 of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 0., !WithinAbs(1., 0.99) )
 with expansion:
   0.0 not is within 0.99 of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 0., !WithinAbs(1., 0.99) )
 with expansion:
   0.0 not is within 0.99 of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( NAN, !WithinAbs(NAN, 0) )
 with expansion:
   nanf not is within 0.0 of nan
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 11., !WithinAbs(10., 0.5) )
 with expansion:
   11.0 not is within 0.5 of 10.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 10., !WithinAbs(11., 0.5) )
 with expansion:
   10.0 not is within 0.5 of 11.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( -10., WithinAbs(-10., 0.5) )
 with expansion:
   -10.0 is within 0.5 of -10.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( -10., WithinAbs(-9.6, 0.5) )
 with expansion:
   -10.0 is within 0.5 of -9.6
@@ -3230,44 +2937,37 @@ Floating point matchers: double
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1., WithinULP(1., 0) )
 with expansion:
   1.0 is within 0 ULPs of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( nextafter(1., 2.), WithinULP(1., 1) )
 with expansion:
   1.0 is within 1 ULPs of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( nextafter(1., 0.), WithinULP(1., 1) )
 with expansion:
   1.0 is within 1 ULPs of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( nextafter(1., 2.), !WithinULP(1., 0) )
 with expansion:
   1.0 not is within 0 ULPs of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1., WithinULP(1., 0) )
 with expansion:
   1.0 is within 0 ULPs of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( -0., WithinULP(0., 0) )
 with expansion:
   -0.0 is within 0 ULPs of 0.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( NAN, !WithinULP(NAN, 123) )
 with expansion:
   nanf not is within 123 ULPs of nanf
@@ -3279,20 +2979,17 @@ Floating point matchers: double
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1., WithinAbs(1., 0.5) || WithinULP(2., 1) )
 with expansion:
   1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0 )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1., WithinAbs(2., 0.5) || WithinULP(1., 0) )
 with expansion:
   1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0 )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( NAN, !(WithinAbs(NAN, 100) || WithinULP(NAN, 123)) )
 with expansion:
   nanf not ( is within 100.0 of nan or is within 123 ULPs of nanf )
@@ -3304,20 +3001,16 @@ Floating point matchers: double
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( WithinAbs(1., 0.) )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_AS( WithinAbs(1., -1.), std::domain_error )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( WithinULP(1., 0) )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_AS( WithinULP(1., -1), std::domain_error )
 
 -------------------------------------------------------------------------------
@@ -3327,62 +3020,52 @@ Floating point matchers: float
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1.f, WithinAbs(1.f, 0) )
 with expansion:
   1.0f is within 0.0 of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 0.f, WithinAbs(1.f, 1) )
 with expansion:
   0.0f is within 1.0 of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 0.f, !WithinAbs(1.f, 0.99f) )
 with expansion:
   0.0f not is within 0.9900000095 of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 0.f, !WithinAbs(1.f, 0.99f) )
 with expansion:
   0.0f not is within 0.9900000095 of 1.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 0.f, WithinAbs(-0.f, 0) )
 with expansion:
   0.0f is within 0.0 of -0.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( NAN, !WithinAbs(NAN, 0) )
 with expansion:
   nanf not is within 0.0 of nan
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 11.f, !WithinAbs(10.f, 0.5f) )
 with expansion:
   11.0f not is within 0.5 of 10.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 10.f, !WithinAbs(11.f, 0.5f) )
 with expansion:
   10.0f not is within 0.5 of 11.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( -10.f, WithinAbs(-10.f, 0.5f) )
 with expansion:
   -10.0f is within 0.5 of -10.0
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( -10.f, WithinAbs(-9.6f, 0.5f) )
 with expansion:
   -10.0f is within 0.5 of -9.6000003815
@@ -3394,44 +3077,37 @@ Floating point matchers: float
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1.f, WithinULP(1.f, 0) )
 with expansion:
   1.0f is within 0 ULPs of 1.0f
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( nextafter(1.f, 2.f), WithinULP(1.f, 1) )
 with expansion:
   1.0f is within 1 ULPs of 1.0f
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( nextafter(1.f, 0.f), WithinULP(1.f, 1) )
 with expansion:
   1.0f is within 1 ULPs of 1.0f
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( nextafter(1.f, 2.f), !WithinULP(1.f, 0) )
 with expansion:
   1.0f not is within 0 ULPs of 1.0f
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1.f, WithinULP(1.f, 0) )
 with expansion:
   1.0f is within 0 ULPs of 1.0f
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( -0.f, WithinULP(0.f, 0) )
 with expansion:
   -0.0f is within 0 ULPs of 0.0f
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( NAN, !WithinULP(NAN, 123) )
 with expansion:
   nanf not is within 123 ULPs of nanf
@@ -3443,20 +3119,17 @@ Floating point matchers: float
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1.f, WithinAbs(1.f, 0.5) || WithinULP(1.f, 1) )
 with expansion:
   1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.0f )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( 1.f, WithinAbs(2.f, 0.5) || WithinULP(1.f, 0) )
 with expansion:
   1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0f )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( NAN, !(WithinAbs(NAN, 100) || WithinULP(NAN, 123)) )
 with expansion:
   nanf not ( is within 100.0 of nan or is within 123 ULPs of nanf )
@@ -3468,20 +3141,16 @@ Floating point matchers: float
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( WithinAbs(1.f, 0.f) )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_AS( WithinAbs(1.f, -1.f), std::domain_error )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( WithinULP(1.f, 0) )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_AS( WithinULP(1.f, -1), std::domain_error )
 
 -------------------------------------------------------------------------------
@@ -3491,8 +3160,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "a"
   j := 8
@@ -3504,8 +3172,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "a"
   j := 9
@@ -3517,8 +3184,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "a"
   j := 10
@@ -3530,8 +3196,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "a"
   j := 2
@@ -3543,8 +3208,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "a"
   j := 3.141
@@ -3556,8 +3220,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "a"
   j := 1.379
@@ -3569,8 +3232,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "b"
   j := 8
@@ -3582,8 +3244,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "b"
   j := 9
@@ -3595,8 +3256,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "b"
   j := 10
@@ -3608,8 +3268,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "b"
   j := 2
@@ -3621,8 +3280,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "b"
   j := 3.141
@@ -3634,8 +3292,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "b"
   j := 1.379
@@ -3647,8 +3304,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "c"
   j := 8
@@ -3660,8 +3316,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "c"
   j := 9
@@ -3673,8 +3328,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "c"
   j := 10
@@ -3686,8 +3340,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "c"
   j := 2
@@ -3699,8 +3352,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "c"
   j := 3.141
@@ -3712,8 +3364,7 @@ Generators
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
 with messages:
   i := "c"
   j := 1.379
@@ -3725,20 +3376,17 @@ Generators impl
 GeneratorsImpl.tests.cpp:<line number>
 ...............................................................................
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen.size() == 2 )
 with expansion:
   2 == 2
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[0] == 1 )
 with expansion:
   1 == 1
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[1] == 2 )
 with expansion:
   2 == 2
@@ -3750,32 +3398,27 @@ Generators impl
 GeneratorsImpl.tests.cpp:<line number>
 ...............................................................................
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen.size() == 4 )
 with expansion:
   4 == 4
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[0] == 3 )
 with expansion:
   3 == 3
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[1] == 1 )
 with expansion:
   1 == 1
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[2] == 4 )
 with expansion:
   4 == 4
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[3] == 1 )
 with expansion:
   1 == 1
@@ -3787,32 +3430,27 @@ Generators impl
 GeneratorsImpl.tests.cpp:<line number>
 ...............................................................................
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen.size() == 4 )
 with expansion:
   4 == 4
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[0] == 1 )
 with expansion:
   1 == 1
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[1] == 2 )
 with expansion:
   2 == 2
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[2] == 9 )
 with expansion:
   9 == 9
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[3] == 7 )
 with expansion:
   7 == 7
@@ -3824,20 +3462,17 @@ Generators impl
 GeneratorsImpl.tests.cpp:<line number>
 ...............................................................................
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen.size() == 2 )
 with expansion:
   2 == 2
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[0] == 3 )
 with expansion:
   3 == 3
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[1] == 1 )
 with expansion:
   1 == 1
@@ -3849,20 +3484,17 @@ Generators impl
 GeneratorsImpl.tests.cpp:<line number>
 ...............................................................................
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen.size() == 2 )
 with expansion:
   2 == 2
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[0] == 3 )
 with expansion:
   3 == 3
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( gen[1] == 1 )
 with expansion:
   1 == 1
@@ -3874,32 +3506,27 @@ Generators impl
 GeneratorsImpl.tests.cpp:<line number>
 ...............................................................................
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( base->size() == 4 )
 with expansion:
   4 == 4
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   REQUIRE( typed )
 with expansion:
   0x<hex digits>
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( typed->size() == 4 )
 with expansion:
   4 == 4
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( (*typed)[0] == 7 )
 with expansion:
   7 == 7
 
-GeneratorsImpl.tests.cpp:<line number>:
-PASSED:
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
   CHECK( (*typed)[3] == 11 )
 with expansion:
   11 == 11
@@ -3910,26 +3537,22 @@ Greater-than inequalities with different epsilons
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d >= Approx( 1.22 ) )
 with expansion:
   1.23 >= Approx( 1.22 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d >= Approx( 1.23 ) )
 with expansion:
   1.23 >= Approx( 1.23 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_FALSE( d >= Approx( 1.24 ) )
 with expansion:
   !(1.23 >= Approx( 1.24 ))
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d >= Approx( 1.24 ).epsilon(0.1) )
 with expansion:
   1.23 >= Approx( 1.24 )
@@ -3940,8 +3563,7 @@ INFO and WARN do not abort tests
 Message.tests.cpp:<line number>
 ...............................................................................
 
-Message.tests.cpp:<line number>:
-warning:
+Message.tests.cpp:<line number>: warning:
   this is a message
   this is a warning
 
@@ -3968,8 +3590,7 @@ INFO gets logged on failure, even if captured before successful assertions
 Message.tests.cpp:<line number>
 ...............................................................................
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   CHECK( a == 2 )
 with expansion:
   2 == 2
@@ -3993,8 +3614,7 @@ with messages:
   this message should be logged
   and this, but later
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   CHECK( a == 2 )
 with expansion:
   2 == 2
@@ -4010,8 +3630,7 @@ INFO is reset for each loop
 Message.tests.cpp:<line number>
 ...............................................................................
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   0 < 10
@@ -4019,8 +3638,7 @@ with messages:
   current counter 0
   i := 0
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   1 < 10
@@ -4028,8 +3646,7 @@ with messages:
   current counter 1
   i := 1
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   2 < 10
@@ -4037,8 +3654,7 @@ with messages:
   current counter 2
   i := 2
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   3 < 10
@@ -4046,8 +3662,7 @@ with messages:
   current counter 3
   i := 3
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   4 < 10
@@ -4055,8 +3670,7 @@ with messages:
   current counter 4
   i := 4
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   5 < 10
@@ -4064,8 +3678,7 @@ with messages:
   current counter 5
   i := 5
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   6 < 10
@@ -4073,8 +3686,7 @@ with messages:
   current counter 6
   i := 6
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   7 < 10
@@ -4082,8 +3694,7 @@ with messages:
   current counter 7
   i := 7
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   8 < 10
@@ -4091,8 +3702,7 @@ with messages:
   current counter 8
   i := 8
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
   REQUIRE( i < 10 )
 with expansion:
   9 < 10
@@ -4145,68 +3755,57 @@ Inequality checks that should succeed
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven != 6 )
 with expansion:
   7 != 6
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven != 8 )
 with expansion:
   7 != 8
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.float_nine_point_one != Approx( 9.11f ) )
 with expansion:
   9.1f != Approx( 9.1099996567 )
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.float_nine_point_one != Approx( 9.0f ) )
 with expansion:
   9.1f != Approx( 9.0 )
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.float_nine_point_one != Approx( 1 ) )
 with expansion:
   9.1f != Approx( 1.0 )
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.float_nine_point_one != Approx( 0 ) )
 with expansion:
   9.1f != Approx( 0.0 )
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.double_pi != Approx( 3.1415 ) )
 with expansion:
   3.1415926535 != Approx( 3.1415 )
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello != "goodbye" )
 with expansion:
   "hello" != "goodbye"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello != "hell" )
 with expansion:
   "hello" != "hell"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello != "hello1" )
 with expansion:
   "hello" != "hello1"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello.size() != 6 )
 with expansion:
   5 != 6
@@ -4217,26 +3816,22 @@ Less-than inequalities with different epsilons
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d <= Approx( 1.24 ) )
 with expansion:
   1.23 <= Approx( 1.24 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d <= Approx( 1.23 ) )
 with expansion:
   1.23 <= Approx( 1.23 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE_FALSE( d <= Approx( 1.22 ) )
 with expansion:
   !(1.23 <= Approx( 1.22 ))
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d <= Approx( 1.22 ).epsilon(0.1) )
 with expansion:
   1.23 <= Approx( 1.22 )
@@ -4247,8 +3842,7 @@ ManuallyRegistered
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   was called
 
@@ -4258,8 +3852,7 @@ Matchers can be (AllOf) composed with the && operator
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), Contains("string") && Contains("abc") && Contains("substring") && Contains("contains") )
 with expansion:
   "this string contains 'abc' as a substring" ( contains: "string" and
@@ -4271,15 +3864,13 @@ Matchers can be (AnyOf) composed with the || operator
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), Contains("string") || Contains("different") || Contains("random") )
 with expansion:
   "this string contains 'abc' as a substring" ( contains: "string" or contains:
   "different" or contains: "random" )
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching2(), Contains("string") || Contains("different") || Contains("random") )
 with expansion:
   "some completely different text that contains one common word" ( contains:
@@ -4291,8 +3882,7 @@ Matchers can be composed with both && and ||
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), (Contains("string") || Contains("different")) && Contains("substring") )
 with expansion:
   "this string contains 'abc' as a substring" ( ( contains: "string" or
@@ -4316,8 +3906,7 @@ Matchers can be negated (Not) with the ! operator
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), !Contains("different") )
 with expansion:
   "this string contains 'abc' as a substring" not contains: "different"
@@ -4339,8 +3928,7 @@ Mismatching exception messages failing the test
 Exception.tests.cpp:<line number>
 ...............................................................................
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_WITH( thisThrows(), "expected exception" )
 with expansion:
   "expected exception" equals: "expected exception"
@@ -4356,8 +3944,7 @@ Nice descriptive name
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-warning:
+Misc.tests.cpp:<line number>: warning:
   This one ran
 
 
@@ -4379,24 +3966,35 @@ Objects that evaluated in boolean contexts can be checked
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECK( True )
 with expansion:
   {?}
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECK( !False )
 with expansion:
   true
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECK_FALSE( False )
 with expansion:
   !{?}
 
+-------------------------------------------------------------------------------
+Optionally static assertions
+-------------------------------------------------------------------------------
+Compilation.tests.cpp:<line number>
+...............................................................................
+
+Compilation.tests.cpp:<line number>: PASSED:
+with message:
+  std::is_void<void>::value
+
+Compilation.tests.cpp:<line number>: PASSED:
+with message:
+  !(std::is_void<int>::value)
+
 -------------------------------------------------------------------------------
 Ordering comparison checks that should fail
 -------------------------------------------------------------------------------
@@ -4504,104 +4102,87 @@ Ordering comparison checks that should succeed
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven < 8 )
 with expansion:
   7 < 8
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven > 6 )
 with expansion:
   7 > 6
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven > 0 )
 with expansion:
   7 > 0
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven > -1 )
 with expansion:
   7 > -1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven >= 7 )
 with expansion:
   7 >= 7
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven >= 6 )
 with expansion:
   7 >= 6
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven <= 7 )
 with expansion:
   7 <= 7
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.int_seven <= 8 )
 with expansion:
   7 <= 8
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.float_nine_point_one > 9 )
 with expansion:
   9.1f > 9
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.float_nine_point_one < 10 )
 with expansion:
   9.1f < 10
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.float_nine_point_one < 9.2 )
 with expansion:
   9.1f < 9.2
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello <= "hello" )
 with expansion:
   "hello" <= "hello"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello >= "hello" )
 with expansion:
   "hello" >= "hello"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello < "hellp" )
 with expansion:
   "hello" < "hellp"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello < "zebra" )
 with expansion:
   "hello" < "zebra"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello > "hellm" )
 with expansion:
   "hello" > "hellm"
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str_hello > "a" )
 with expansion:
   "hello" > "a"
@@ -4635,20 +4216,17 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
@@ -4660,20 +4238,17 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches(tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
@@ -4685,20 +4260,17 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
@@ -4710,20 +4282,17 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
@@ -4735,20 +4304,17 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
@@ -4760,26 +4326,22 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == false )
 with expansion:
   false == false
@@ -4791,38 +4353,32 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( parseTestSpec( "*a" ).matches( tcA ) == true )
 with expansion:
   true == true
@@ -4834,38 +4390,32 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( parseTestSpec( "a*" ).matches( tcA ) == true )
 with expansion:
   true == true
@@ -4877,38 +4427,32 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( parseTestSpec( "*a*" ).matches( tcA ) == true )
 with expansion:
   true == true
@@ -4920,20 +4464,17 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
@@ -4945,20 +4486,17 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
@@ -4970,20 +4508,17 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
@@ -4995,32 +4530,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == true )
 with expansion:
   true == true
@@ -5032,32 +4562,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == true )
 with expansion:
   true == true
@@ -5069,26 +4594,22 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == false )
 with expansion:
   false == false
@@ -5100,26 +4621,22 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
@@ -5131,26 +4648,22 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
@@ -5162,26 +4675,22 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
@@ -5193,32 +4702,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == false )
 with expansion:
   false == false
@@ -5230,26 +4734,22 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
@@ -5261,26 +4761,22 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == false )
 with expansion:
   false == false
@@ -5292,32 +4788,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == true )
 with expansion:
   true == true
@@ -5329,32 +4820,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == true )
 with expansion:
   true == true
@@ -5366,32 +4852,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == true )
 with expansion:
   true == true
@@ -5403,32 +4884,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == false )
 with expansion:
   false == false
@@ -5440,32 +4916,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == false )
 with expansion:
   false == false
@@ -5477,32 +4948,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == false )
 with expansion:
   false == false
@@ -5514,32 +4980,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == false )
 with expansion:
   false == false
@@ -5551,32 +5012,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == false )
 with expansion:
   false == false
@@ -5588,32 +5044,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == false )
 with expansion:
   false == false
@@ -5625,32 +5076,27 @@ Parse test names and tags
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.hasFilters() == true )
 with expansion:
   true == true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcA ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcB ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcC ) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( spec.matches( tcD ) == true )
 with expansion:
   true == true
@@ -5661,54 +5107,57 @@ Pointers can be compared to null
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( p == 0 )
 with expansion:
   0 == 0
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( p == pNULL )
 with expansion:
   0 == 0
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( p != 0 )
 with expansion:
   0x<hex digits> != 0
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( cp != 0 )
 with expansion:
   0x<hex digits> != 0
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( cpc != 0 )
 with expansion:
   0x<hex digits> != 0
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( returnsNull() == 0 )
 with expansion:
   {null string} == 0
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( returnsConstNull() == 0 )
 with expansion:
   {null string} == 0
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( 0 != p )
 with expansion:
   0 != 0x<hex digits>
 
+-------------------------------------------------------------------------------
+Predicate matcher can accept const char*
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+  REQUIRE_THAT( "foo", Predicate<const char*>([] (const char* const&) { return true; }) )
+with expansion:
+  "foo" matches undescribed predicate
+
 -------------------------------------------------------------------------------
 Process can be configured on command line
   empty args don't cause a crash
@@ -5716,14 +5165,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( result )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( config.processName == "" )
 with expansion:
   "" == ""
@@ -5735,44 +5182,37 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( result )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( config.processName == "test" )
 with expansion:
   "test" == "test"
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( config.shouldDebugBreak == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( config.abortAfter == -1 )
 with expansion:
   -1 == -1
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( config.noThrow == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( config.reporterName == "console" )
 with expansion:
   "console" == "console"
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK_FALSE( cfg.hasTestFilters() )
 with expansion:
   !false
@@ -5785,26 +5225,22 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( result )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( cfg.hasTestFilters() )
 with expansion:
   true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( cfg.testSpec().matches(fakeTestCase("notIncluded")) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( cfg.testSpec().matches(fakeTestCase("test1")) )
 with expansion:
   true
@@ -5817,26 +5253,22 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( result )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( cfg.hasTestFilters() )
 with expansion:
   true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( cfg.testSpec().matches(fakeTestCase("test1")) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( cfg.testSpec().matches(fakeTestCase("alwaysIncluded")) )
 with expansion:
   true
@@ -5849,26 +5281,22 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( result )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( cfg.hasTestFilters() )
 with expansion:
   true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( cfg.testSpec().matches(fakeTestCase("test1")) == false )
 with expansion:
   false == false
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( cfg.testSpec().matches(fakeTestCase("alwaysIncluded")) )
 with expansion:
   true
@@ -5881,14 +5309,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "-r", "console"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.reporterName == "console" )
 with expansion:
   "console" == "console"
@@ -5901,14 +5327,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "-r", "xml"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.reporterName == "xml" )
 with expansion:
   "xml" == "xml"
@@ -5921,14 +5345,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "--reporter", "junit"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.reporterName == "junit" )
 with expansion:
   "junit" == "junit"
@@ -5941,12 +5363,30 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE_FALSE( cli.parse({ "test", "-r", "xml", "-r", "junit" }) )
 with expansion:
   !{?}
 
+-------------------------------------------------------------------------------
+Process can be configured on command line
+  reporter
+  must match one of the available ones
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+  CHECK( !result )
+with expansion:
+  true
+
+CmdLine.tests.cpp:<line number>: PASSED:
+  REQUIRE_THAT( result.errorMessage(), Contains("Unrecognized reporter") )
+with expansion:
+  "Unrecognized reporter, 'unsupported'. Check available with --list-reporters"
+  contains: "Unrecognized reporter"
+
 -------------------------------------------------------------------------------
 Process can be configured on command line
   debugger
@@ -5955,14 +5395,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "-b"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.shouldDebugBreak == true )
 with expansion:
   true == true
@@ -5975,14 +5413,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "--break"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.shouldDebugBreak )
 with expansion:
   true
@@ -5995,14 +5431,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "-a"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.abortAfter == 1 )
 with expansion:
   1 == 1
@@ -6015,14 +5449,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "-x", "2"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.abortAfter == 2 )
 with expansion:
   2 == 2
@@ -6035,14 +5467,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( !result )
 with expansion:
   true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( result.errorMessage(), Contains("convert") && Contains("oops") )
 with expansion:
   "Unable to convert 'oops' to destination type" ( contains: "convert" and
@@ -6056,14 +5486,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "-e"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.noThrow )
 with expansion:
   true
@@ -6076,14 +5504,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "--nothrow"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.noThrow )
 with expansion:
   true
@@ -6096,14 +5522,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "-o", "filename.ext"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.outputFilename == "filename.ext" )
 with expansion:
   "filename.ext" == "filename.ext"
@@ -6116,14 +5540,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "--out", "filename.ext"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.outputFilename == "filename.ext" )
 with expansion:
   "filename.ext" == "filename.ext"
@@ -6136,26 +5558,22 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "-abe"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( config.abortAfter == 1 )
 with expansion:
   1 == 1
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( config.shouldDebugBreak )
 with expansion:
   true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( config.noThrow == true )
 with expansion:
   true == true
@@ -6168,14 +5586,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.useColour == UseColour::Auto )
 with expansion:
   0 == 0
@@ -6188,14 +5604,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "--use-colour", "auto"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.useColour == UseColour::Auto )
 with expansion:
   0 == 0
@@ -6208,14 +5622,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "--use-colour", "yes"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.useColour == UseColour::Yes )
 with expansion:
   1 == 1
@@ -6228,14 +5640,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( cli.parse({"test", "--use-colour", "no"}) )
 with expansion:
   {?}
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   REQUIRE( config.useColour == UseColour::No )
 with expansion:
   2 == 2
@@ -6248,14 +5658,12 @@ Process can be configured on command line
 CmdLine.tests.cpp:<line number>
 ...............................................................................
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK( !result )
 with expansion:
   true
 
-CmdLine.tests.cpp:<line number>:
-PASSED:
+CmdLine.tests.cpp:<line number>: PASSED:
   CHECK_THAT( result.errorMessage(), Contains( "colour mode must be one of" ) )
 with expansion:
   "colour mode must be one of: auto, yes or no. 'wrong' not recognised"
@@ -6302,8 +5710,7 @@ Regression test #1
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( actual, !UnorderedEquals(expected) )
 with expansion:
   { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
@@ -6314,8 +5721,7 @@ SUCCEED counts as a test pass
 Message.tests.cpp:<line number>
 ...............................................................................
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
 with message:
   this is a success
 
@@ -6325,8 +5731,7 @@ SUCCEED does not require an argument
 Message.tests.cpp:<line number>
 ...............................................................................
 
-Message.tests.cpp:<line number>:
-PASSED:
+Message.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or
@@ -6336,8 +5741,7 @@ Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( before == 0 )
 with expansion:
   0 == 0
@@ -6352,8 +5756,7 @@ Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( after > before )
 with expansion:
   1 > 0
@@ -6368,8 +5771,7 @@ Scenario: Do that thing with the thing
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( itDoesThis() )
 with expansion:
   true
@@ -6385,8 +5787,7 @@ Scenario: Do that thing with the thing
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( itDoesThat() )
 with expansion:
   true
@@ -6404,8 +5805,7 @@ Scenario: This is a really long scenario name to see how the list command deals
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
 with message:
   boo!
 
@@ -6416,8 +5816,7 @@ Scenario: Vector resizing affects size and capacity
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 0 )
 with expansion:
   0 == 0
@@ -6431,14 +5830,12 @@ Scenario: Vector resizing affects size and capacity
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 10 )
 with expansion:
   10 == 10
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 10 )
 with expansion:
   10 >= 10
@@ -6454,14 +5851,12 @@ Scenario: Vector resizing affects size and capacity
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 5 )
 with expansion:
   5 == 5
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 10 )
 with expansion:
   10 >= 10
@@ -6473,8 +5868,7 @@ Scenario: Vector resizing affects size and capacity
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 0 )
 with expansion:
   0 == 0
@@ -6488,14 +5882,12 @@ Scenario: Vector resizing affects size and capacity
 BDD.tests.cpp:<line number>
 ...............................................................................
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 10 )
 with expansion:
   10 >= 10
 
-BDD.tests.cpp:<line number>:
-PASSED:
+BDD.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 0 )
 with expansion:
   0 == 0
@@ -6518,56 +5910,47 @@ Some simple comparisons between doubles
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d == Approx( 1.23 ) )
 with expansion:
   1.23 == Approx( 1.23 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d != Approx( 1.22 ) )
 with expansion:
   1.23 != Approx( 1.22 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d != Approx( 1.24 ) )
 with expansion:
   1.23 != Approx( 1.24 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d == 1.23_a )
 with expansion:
   1.23 == Approx( 1.23 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d != 1.22_a )
 with expansion:
   1.23 != Approx( 1.22 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( Approx( d ) == 1.23 )
 with expansion:
   Approx( 1.23 ) == 1.23
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( Approx( d ) != 1.22 )
 with expansion:
   Approx( 1.23 ) != 1.22
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( Approx( d ) != 1.24 )
 with expansion:
   Approx( 1.23 ) != 1.24
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( INFINITY == Approx(INFINITY) )
 with expansion:
   inff == Approx( inf )
@@ -6618,8 +6001,7 @@ Static arrays are convertible to string
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify(singular) == "{ 1 }" )
 with expansion:
   "{ 1 }" == "{ 1 }"
@@ -6631,8 +6013,7 @@ Static arrays are convertible to string
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" )
 with expansion:
   "{ 3, 2, 1 }" == "{ 3, 2, 1 }"
@@ -6644,8 +6025,7 @@ Static arrays are convertible to string
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" )
 with expansion:
   "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
@@ -6658,53 +6038,45 @@ String matchers
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( testStringForMatching(), Contains("string") )
 with expansion:
   "this string contains 'abc' as a substring" contains: "string"
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( testStringForMatching(), Contains("string", Catch::CaseSensitive::No) )
 with expansion:
   "this string contains 'abc' as a substring" contains: "string" (case
   insensitive)
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), Contains("abc") )
 with expansion:
   "this string contains 'abc' as a substring" contains: "abc"
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), Contains("aBC", Catch::CaseSensitive::No) )
 with expansion:
-  "this string contains 'abc' as a substring" contains: "abc" (case insensitive)
+  "this string contains 'abc' as a substring" contains: "abc" (case
   insensitive)
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), StartsWith("this") )
 with expansion:
   "this string contains 'abc' as a substring" starts with: "this"
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), StartsWith("THIS", Catch::CaseSensitive::No) )
 with expansion:
   "this string contains 'abc' as a substring" starts with: "this" (case
   insensitive)
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), EndsWith("substring") )
 with expansion:
   "this string contains 'abc' as a substring" ends with: "substring"
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( testStringForMatching(), EndsWith(" SuBsTrInG", Catch::CaseSensitive::No) )
 with expansion:
   "this string contains 'abc' as a substring" ends with: " substring" (case
@@ -6717,20 +6089,17 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( empty.empty() )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( empty.size() == 0 )
 with expansion:
   0 == 0
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( std::strcmp( empty.c_str(), "" ) == 0 )
 with expansion:
   0 == 0
@@ -6742,26 +6111,22 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( s.empty() == false )
 with expansion:
   false == false
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( s.size() == 5 )
 with expansion:
   5 == 5
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isSubstring( s ) == false )
 with expansion:
   false == false
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( std::strcmp( rawChars, "hello" ) == 0 )
 with expansion:
   0 == 0
@@ -6774,20 +6139,17 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isOwned( s ) == false )
 with expansion:
   false == false
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( s.c_str() == rawChars )
 with expansion:
   "hello" == "hello"
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isOwned( s ) == false )
 with expansion:
   false == false
@@ -6799,30 +6161,25 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( original == "original" )
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isSubstring( original ) )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isOwned( original ) == false )
 with expansion:
   false == false
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isSubstring( original ) == false )
 with expansion:
   false == false
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isOwned( original ) )
 with expansion:
   true
@@ -6835,26 +6192,22 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( ss.empty() == false )
 with expansion:
   false == false
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( ss.size() == 5 )
 with expansion:
   5 == 5
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( std::strcmp( ss.c_str(), "hello" ) == 0 )
 with expansion:
   0 == 0
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( ss == "hello" )
 with expansion:
   hello == "hello"
@@ -6867,44 +6220,37 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isSubstring( ss ) )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isOwned( ss ) == false )
 with expansion:
   false == false
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( rawChars == s.currentData() )
 with expansion:
   "hello world!" == "hello world!"
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( ss.c_str() != rawChars )
 with expansion:
   "hello" != "hello world!"
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isSubstring( ss ) == false )
 with expansion:
   false == false
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( isOwned( ss ) )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( ss.currentData() != s.currentData() )
 with expansion:
   "hello" != "hello world!"
@@ -6917,14 +6263,12 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( ss.size() == 6 )
 with expansion:
   6 == 6
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( std::strcmp( ss.c_str(), "world!" ) == 0 )
 with expansion:
   0 == 0
@@ -6937,8 +6281,7 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( s.c_str() == s2.c_str() )
 with expansion:
   "hello world!" == "hello world!"
@@ -6951,8 +6294,7 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( s.c_str() != ss.c_str() )
 with expansion:
   "hello world!" != "hello"
@@ -6964,14 +6306,12 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( StringRef("hello") == StringRef("hello") )
 with expansion:
   hello == hello
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( StringRef("hello") != StringRef("cello") )
 with expansion:
   hello != cello
@@ -6984,14 +6324,12 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( sr == "a standard string" )
 with expansion:
   a standard string == "a standard string"
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( sr.size() == stdStr.size() )
 with expansion:
   17 == 17
@@ -7004,14 +6342,12 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( sr == "a standard string" )
 with expansion:
   a standard string == "a standard string"
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( sr.size() == stdStr.size() )
 with expansion:
   17 == 17
@@ -7024,14 +6360,12 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( sr == "a standard string" )
 with expansion:
   a standard string == "a standard string"
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( sr.size() == stdStr.size() )
 with expansion:
   17 == 17
@@ -7044,14 +6378,12 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( stdStr == "a stringref" )
 with expansion:
   "a stringref" == "a stringref"
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( stdStr.size() == sr.size() )
 with expansion:
   11 == 11
@@ -7064,14 +6396,12 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( stdStr == "a stringref" )
 with expansion:
   "a stringref" == "a stringref"
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( stdStr.size() == sr.size() )
 with expansion:
   11 == 11
@@ -7084,14 +6414,12 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( stdStr == "a stringref" )
 with expansion:
   "a stringref" == "a stringref"
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( stdStr.size() == sr.size() )
 with expansion:
   11 == 11
@@ -7103,20 +6431,17 @@ StringRef
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( ascii.numberOfCharacters() == ascii.size() )
 with expansion:
   39 == 39
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( simpleu8.numberOfCharacters() == 30 )
 with expansion:
   30 == 30
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   REQUIRE( emojis.numberOfCharacters() == 9 )
 with expansion:
   9 == 9
@@ -7127,26 +6452,22 @@ Stringifying std::chrono::duration helpers
 ToStringChrono.tests.cpp:<line number>
 ...............................................................................
 
-ToStringChrono.tests.cpp:<line number>:
-PASSED:
+ToStringChrono.tests.cpp:<line number>: PASSED:
   REQUIRE( minute == seconds )
 with expansion:
   1 m == 60 s
 
-ToStringChrono.tests.cpp:<line number>:
-PASSED:
+ToStringChrono.tests.cpp:<line number>: PASSED:
   REQUIRE( hour != seconds )
 with expansion:
   1 h != 60 s
 
-ToStringChrono.tests.cpp:<line number>:
-PASSED:
+ToStringChrono.tests.cpp:<line number>: PASSED:
   REQUIRE( micro != milli )
 with expansion:
   1 us != 1 ms
 
-ToStringChrono.tests.cpp:<line number>:
-PASSED:
+ToStringChrono.tests.cpp:<line number>: PASSED:
   REQUIRE( nano != micro )
 with expansion:
   1 ns != 1 us
@@ -7157,14 +6478,12 @@ Stringifying std::chrono::duration with weird ratios
 ToStringChrono.tests.cpp:<line number>
 ...............................................................................
 
-ToStringChrono.tests.cpp:<line number>:
-PASSED:
+ToStringChrono.tests.cpp:<line number>: PASSED:
   REQUIRE( half_minute != femto_second )
 with expansion:
   1 [30/1]s != 1 fs
 
-ToStringChrono.tests.cpp:<line number>:
-PASSED:
+ToStringChrono.tests.cpp:<line number>: PASSED:
   REQUIRE( pico_second != atto_second )
 with expansion:
   1 ps != 1 as
@@ -7175,8 +6494,7 @@ Stringifying std::chrono::time_point<system_clock>
 ToStringChrono.tests.cpp:<line number>
 ...............................................................................
 
-ToStringChrono.tests.cpp:<line number>:
-PASSED:
+ToStringChrono.tests.cpp:<line number>: PASSED:
   REQUIRE( now != later )
 with expansion:
   {iso8601-timestamp}
@@ -7208,32 +6526,28 @@ Tag alias can be registered against tag patterns
 TagAlias.tests.cpp:<line number>
 ...............................................................................
 
-TagAlias.tests.cpp:<line number>:
-PASSED:
+TagAlias.tests.cpp:<line number>: PASSED:
   CHECK_THAT( what, Contains( "[@zzz]" ) )
 with expansion:
   "error: tag alias, '[@zzz]' already registered.
   	First seen at: file:2
   	Redefined at: file:10" contains: "[@zzz]"
 
-TagAlias.tests.cpp:<line number>:
-PASSED:
+TagAlias.tests.cpp:<line number>: PASSED:
   CHECK_THAT( what, Contains( "file" ) )
 with expansion:
   "error: tag alias, '[@zzz]' already registered.
   	First seen at: file:2
   	Redefined at: file:10" contains: "file"
 
-TagAlias.tests.cpp:<line number>:
-PASSED:
+TagAlias.tests.cpp:<line number>: PASSED:
   CHECK_THAT( what, Contains( "2" ) )
 with expansion:
   "error: tag alias, '[@zzz]' already registered.
   	First seen at: file:2
   	Redefined at: file:10" contains: "2"
 
-TagAlias.tests.cpp:<line number>:
-PASSED:
+TagAlias.tests.cpp:<line number>: PASSED:
   CHECK_THAT( what, Contains( "10" ) )
 with expansion:
   "error: tag alias, '[@zzz]' already registered.
@@ -7247,20 +6561,16 @@ Tag alias can be registered against tag patterns
 TagAlias.tests.cpp:<line number>
 ...............................................................................
 
-TagAlias.tests.cpp:<line number>:
-PASSED:
+TagAlias.tests.cpp:<line number>: PASSED:
   CHECK_THROWS( registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) ) )
 
-TagAlias.tests.cpp:<line number>:
-PASSED:
+TagAlias.tests.cpp:<line number>: PASSED:
   CHECK_THROWS( registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) ) )
 
-TagAlias.tests.cpp:<line number>:
-PASSED:
+TagAlias.tests.cpp:<line number>: PASSED:
   CHECK_THROWS( registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) ) )
 
-TagAlias.tests.cpp:<line number>:
-PASSED:
+TagAlias.tests.cpp:<line number>: PASSED:
   CHECK_THROWS( registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) )
 
 -------------------------------------------------------------------------------
@@ -7269,8 +6579,7 @@ Test case with one argument
 VariadicMacros.tests.cpp:<line number>
 ...............................................................................
 
-VariadicMacros.tests.cpp:<line number>:
-PASSED:
+VariadicMacros.tests.cpp:<line number>: PASSED:
 with message:
   no assertions
 
@@ -7280,8 +6589,7 @@ Test enum bit values
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( 0x<hex digits> == bit30and31 )
 with expansion:
   3221225472 (0x<hex digits>) == 3221225472
@@ -7292,8 +6600,7 @@ The NO_FAIL macro reports a failure but does not fail the test
 Message.tests.cpp:<line number>
 ...............................................................................
 
-Message.tests.cpp:<line number>:
-FAILED - but was ok:
+Message.tests.cpp:<line number>: FAILED - but was ok:
   CHECK_NOFAIL( 1 == 2 )
 
 
@@ -7305,8 +6612,7 @@ This test 'should' fail but doesn't
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   oops!
 
@@ -7326,14 +6632,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isOpen() )
 with expansion:
   true
@@ -7345,26 +6649,22 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isSuccessfullyCompleted() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( ctx.completedCycle() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isSuccessfullyCompleted() )
 with expansion:
   true
@@ -7375,14 +6675,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isOpen() )
 with expansion:
   true
@@ -7394,32 +6692,27 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isSuccessfullyCompleted() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( ctx.completedCycle() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isSuccessfullyCompleted() == false )
 with expansion:
   false == false
@@ -7432,32 +6725,27 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isOpen() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( ctx.completedCycle() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isSuccessfullyCompleted() )
 with expansion:
   true
@@ -7468,14 +6756,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isOpen() )
 with expansion:
   true
@@ -7487,32 +6773,27 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isSuccessfullyCompleted() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( ctx.completedCycle() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isSuccessfullyCompleted() == false )
 with expansion:
   false == false
@@ -7525,38 +6806,32 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isOpen() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( ctx.completedCycle() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isSuccessfullyCompleted() )
 with expansion:
   true
@@ -7567,14 +6842,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isOpen() )
 with expansion:
   true
@@ -7586,14 +6859,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isOpen() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() == false )
 with expansion:
   false == false
@@ -7606,26 +6877,22 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isOpen() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2b.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( ctx.completedCycle() == false )
 with expansion:
   false == false
@@ -7639,26 +6906,22 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( ctx.completedCycle() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2b.isSuccessfullyCompleted() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isSuccessfullyCompleted() )
 with expansion:
   true
@@ -7669,14 +6932,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isOpen() )
 with expansion:
   true
@@ -7688,14 +6949,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isOpen() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() == false )
 with expansion:
   false == false
@@ -7708,26 +6967,22 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isOpen() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2b.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( ctx.completedCycle() == false )
 with expansion:
   false == false
@@ -7741,50 +6996,42 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( ctx.completedCycle() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2b.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2b.isSuccessfullyCompleted() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isSuccessfullyCompleted() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase3.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1c.isOpen() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2c.isOpen() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase3.isSuccessfullyCompleted() )
 with expansion:
   true
@@ -7795,14 +7042,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isOpen() )
 with expansion:
   true
@@ -7814,38 +7059,32 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() )
 with expansion:
   true
@@ -7856,14 +7095,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isOpen() )
 with expansion:
   true
@@ -7875,26 +7112,22 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1.index() == 0 )
 with expansion:
   0 == 0
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() == false )
 with expansion:
   false == false
@@ -7907,14 +7140,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isSuccessfullyCompleted() == false )
 with expansion:
   false == false
@@ -7928,50 +7159,42 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1b.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1b.index() == 1 )
 with expansion:
   1 == 1
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1b.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isComplete() )
 with expansion:
   true
@@ -7982,14 +7205,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isOpen() )
 with expansion:
   true
@@ -8001,26 +7222,22 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1.index() == 0 )
 with expansion:
   0 == 0
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() == false )
 with expansion:
   false == false
@@ -8033,26 +7250,22 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() == false )
 with expansion:
   false == false
@@ -8066,56 +7279,47 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1b.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1b.index() == 1 )
 with expansion:
   1 == 1
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2b.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2b.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1b.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isComplete() )
 with expansion:
   true
@@ -8126,14 +7330,12 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isOpen() )
 with expansion:
   true
@@ -8145,26 +7347,22 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1.index() == 0 )
 with expansion:
   0 == 0
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() == false )
 with expansion:
   false == false
@@ -8177,32 +7375,27 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2.isSuccessfullyCompleted() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase.isComplete() == false )
 with expansion:
   false == false
@@ -8216,104 +7409,87 @@ Tracker
 PartTracker.tests.cpp:<line number>
 ...............................................................................
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1b.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1b.index() == 0 )
 with expansion:
   0 == 0
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2b.isOpen() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1b.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1b.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase2.isComplete() == false )
 with expansion:
   false == false
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase3.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1c.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1c.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1c.index() == 1 )
 with expansion:
   1 == 1
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2c.isOpen() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s2c.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( g1c.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( s1c.isComplete() )
 with expansion:
   true
 
-PartTracker.tests.cpp:<line number>:
-PASSED:
+PartTracker.tests.cpp:<line number>: PASSED:
   REQUIRE( testCase3.isComplete() )
 with expansion:
   true
@@ -8334,50 +7510,42 @@ Use a custom approx
 Approx.tests.cpp:<line number>
 ...............................................................................
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d == approx( 1.23 ) )
 with expansion:
   1.23 == Approx( 1.23 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d == approx( 1.22 ) )
 with expansion:
   1.23 == Approx( 1.22 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d == approx( 1.24 ) )
 with expansion:
   1.23 == Approx( 1.24 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( d != approx( 1.25 ) )
 with expansion:
   1.23 != Approx( 1.25 )
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( approx( d ) == 1.23 )
 with expansion:
   Approx( 1.23 ) == 1.23
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( approx( d ) == 1.22 )
 with expansion:
   Approx( 1.23 ) == 1.22
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( approx( d ) == 1.24 )
 with expansion:
   Approx( 1.23 ) == 1.24
 
-Approx.tests.cpp:<line number>:
-PASSED:
+Approx.tests.cpp:<line number>: PASSED:
   REQUIRE( approx( d ) != 1.25 )
 with expansion:
   Approx( 1.23 ) != 1.25
@@ -8389,8 +7557,7 @@ Variadic macros
 VariadicMacros.tests.cpp:<line number>
 ...............................................................................
 
-VariadicMacros.tests.cpp:<line number>:
-PASSED:
+VariadicMacros.tests.cpp:<line number>: PASSED:
 with message:
   no assertions
 
@@ -8401,14 +7568,12 @@ Vector matchers
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( v, VectorContains(1) )
 with expansion:
   { 1, 2, 3 } Contains: 1
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( v, VectorContains(2) )
 with expansion:
   { 1, 2, 3 } Contains: 2
@@ -8420,26 +7585,22 @@ Vector matchers
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( v, Contains(v2) )
 with expansion:
   { 1, 2, 3 } Contains: { 1, 2 }
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( v, Contains(v2) )
 with expansion:
   { 1, 2, 3 } Contains: { 1, 2, 3 }
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( v, Contains(empty) )
 with expansion:
   { 1, 2, 3 } Contains: {  }
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( empty, Contains(empty) )
 with expansion:
   {  } Contains: {  }
@@ -8451,8 +7612,7 @@ Vector matchers
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( v, VectorContains(1) && VectorContains(2) )
 with expansion:
   { 1, 2, 3 } ( Contains: 1 and Contains: 2 )
@@ -8464,20 +7624,17 @@ Vector matchers
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( v, Equals(v) )
 with expansion:
   { 1, 2, 3 } Equals: { 1, 2, 3 }
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( empty, Equals(empty) )
 with expansion:
   {  } Equals: {  }
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( v, Equals(v2) )
 with expansion:
   { 1, 2, 3 } Equals: { 1, 2, 3 }
@@ -8489,26 +7646,22 @@ Vector matchers
 Matchers.tests.cpp:<line number>
 ...............................................................................
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( v, UnorderedEquals(v) )
 with expansion:
   { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   CHECK_THAT( empty, UnorderedEquals(empty) )
 with expansion:
   {  } UnorderedEquals: {  }
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( permuted, UnorderedEquals(v) )
 with expansion:
   { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
 
-Matchers.tests.cpp:<line number>:
-PASSED:
+Matchers.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( permuted, UnorderedEquals(v) )
 with expansion:
   { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }
@@ -8607,16 +7760,13 @@ When checked exceptions are thrown they can be expected or unexpected
 Exception.tests.cpp:<line number>
 ...............................................................................
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS_AS( thisThrows(), std::domain_error )
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( thisDoesntThrow() )
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS( thisThrows() )
 
 -------------------------------------------------------------------------------
@@ -8689,8 +7839,7 @@ Where the LHS is not a simple value
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-warning:
+Tricky.tests.cpp:<line number>: warning:
   Uncomment the code in this test to check that it gives a sensible compiler
   error
 
@@ -8703,8 +7852,7 @@ Where there is more to the expression after the RHS
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-warning:
+Tricky.tests.cpp:<line number>: warning:
   Uncomment the code in this test to check that it gives a sensible compiler
   error
 
@@ -8717,8 +7865,7 @@ X/level/0/a
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 X/level/0/b
@@ -8726,8 +7873,7 @@ X/level/0/b
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 X/level/1/a
@@ -8735,8 +7881,7 @@ X/level/1/a
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 X/level/1/b
@@ -8744,8 +7889,7 @@ X/level/1/b
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 XmlEncode
@@ -8754,8 +7898,7 @@ XmlEncode
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( "normal string" ) == "normal string" )
 with expansion:
   "normal string" == "normal string"
@@ -8767,8 +7910,7 @@ XmlEncode
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( "" ) == "" )
 with expansion:
   "" == ""
@@ -8780,8 +7922,7 @@ XmlEncode
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( "smith & jones" ) == "smith &amp; jones" )
 with expansion:
   "smith &amp; jones" == "smith &amp; jones"
@@ -8793,8 +7934,7 @@ XmlEncode
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( "smith < jones" ) == "smith &lt; jones" )
 with expansion:
   "smith &lt; jones" == "smith &lt; jones"
@@ -8806,14 +7946,12 @@ XmlEncode
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( "smith > jones" ) == "smith > jones" )
 with expansion:
   "smith > jones" == "smith > jones"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( "smith ]]> jones" ) == "smith ]]&gt; jones" )
 with expansion:
   "smith ]]&gt; jones"
@@ -8827,16 +7965,14 @@ XmlEncode
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( stringWithQuotes ) == stringWithQuotes )
 with expansion:
   "don't "quote" me on that"
   ==
   "don't "quote" me on that"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" )
 with expansion:
   "don't &quot;quote&quot; me on that"
@@ -8850,8 +7986,7 @@ XmlEncode
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( "[\x01]" ) == "[\\x01]" )
 with expansion:
   "[\x01]" == "[\x01]"
@@ -8863,8 +7998,7 @@ XmlEncode
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   REQUIRE( encode( "[\x7F]" ) == "[\\x7F]" )
 with expansion:
   "[\x7F]" == "[\x7F]"
@@ -8876,56 +8010,47 @@ XmlEncode: UTF-8
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode(u8"Here be 👾") == u8"Here be 👾" )
 with expansion:
   "Here be 👾" == "Here be 👾"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode(u8"šš") == u8"šš" )
 with expansion:
   "šš" == "šš"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xDF\xBF") == "\xDF\xBF" )
 with expansion:
   "߿" == "߿"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xE0\xA0\x80") == "\xE0\xA0\x80" )
 with expansion:
   "ࠀ" == "ࠀ"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xED\x9F\xBF") == "\xED\x9F\xBF" )
 with expansion:
   "퟿" == "퟿"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xEE\x80\x80") == "\xEE\x80\x80" )
 with expansion:
   "" == ""
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xEF\xBF\xBF") == "\xEF\xBF\xBF" )
 with expansion:
   "￿" == "￿"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF0\x90\x80\x80") == "\xF0\x90\x80\x80" )
 with expansion:
   "𐀀" == "𐀀"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF4\x8F\xBF\xBF") == "\xF4\x8F\xBF\xBF" )
 with expansion:
   "􏿿" == "􏿿"
@@ -8938,26 +8063,22 @@ XmlEncode: UTF-8
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("Here \xFF be 👾") == u8"Here \\xFF be 👾" )
 with expansion:
   "Here \xFF be 👾" == "Here \xFF be 👾"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xFF") == "\\xFF" )
 with expansion:
   "\xFF" == "\xFF"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xC5\xC5\xA0") == u8"\\xC5Š" )
 with expansion:
   "\xC5Š" == "\xC5Š"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF4\x90\x80\x80") == u8"\\xF4\\x90\\x80\\x80" )
 with expansion:
   "\xF4\x90\x80\x80" == "\xF4\x90\x80\x80"
@@ -8970,32 +8091,27 @@ XmlEncode: UTF-8
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xC0\x80") == u8"\\xC0\\x80" )
 with expansion:
   "\xC0\x80" == "\xC0\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF0\x80\x80\x80") == u8"\\xF0\\x80\\x80\\x80" )
 with expansion:
   "\xF0\x80\x80\x80" == "\xF0\x80\x80\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xC1\xBF") == u8"\\xC1\\xBF" )
 with expansion:
   "\xC1\xBF" == "\xC1\xBF"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xE0\x9F\xBF") == u8"\\xE0\\x9F\\xBF" )
 with expansion:
   "\xE0\x9F\xBF" == "\xE0\x9F\xBF"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF0\x8F\xBF\xBF") == u8"\\xF0\\x8F\\xBF\\xBF" )
 with expansion:
   "\xF0\x8F\xBF\xBF" == "\xF0\x8F\xBF\xBF"
@@ -9008,26 +8124,22 @@ XmlEncode: UTF-8
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xED\xA0\x80") == "\xED\xA0\x80" )
 with expansion:
   "���" == "���"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xED\xAF\xBF") == "\xED\xAF\xBF" )
 with expansion:
   "���" == "���"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xED\xB0\x80") == "\xED\xB0\x80" )
 with expansion:
   "���" == "���"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xED\xBF\xBF") == "\xED\xBF\xBF" )
 with expansion:
   "���" == "���"
@@ -9040,44 +8152,37 @@ XmlEncode: UTF-8
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\x80") == u8"\\x80" )
 with expansion:
   "\x80" == "\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\x81") == u8"\\x81" )
 with expansion:
   "\x81" == "\x81"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xBC") == u8"\\xBC" )
 with expansion:
   "\xBC" == "\xBC"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xBF") == u8"\\xBF" )
 with expansion:
   "\xBF" == "\xBF"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF5\x80\x80\x80") == u8"\\xF5\\x80\\x80\\x80" )
 with expansion:
   "\xF5\x80\x80\x80" == "\xF5\x80\x80\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF6\x80\x80\x80") == u8"\\xF6\\x80\\x80\\x80" )
 with expansion:
   "\xF6\x80\x80\x80" == "\xF6\x80\x80\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF7\x80\x80\x80") == u8"\\xF7\\x80\\x80\\x80" )
 with expansion:
   "\xF7\x80\x80\x80" == "\xF7\x80\x80\x80"
@@ -9090,80 +8195,67 @@ XmlEncode: UTF-8
 Xml.tests.cpp:<line number>
 ...............................................................................
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xDE") == u8"\\xDE" )
 with expansion:
   "\xDE" == "\xDE"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xDF") == u8"\\xDF" )
 with expansion:
   "\xDF" == "\xDF"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xE0") == u8"\\xE0" )
 with expansion:
   "\xE0" == "\xE0"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xEF") == u8"\\xEF" )
 with expansion:
   "\xEF" == "\xEF"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF0") == u8"\\xF0" )
 with expansion:
   "\xF0" == "\xF0"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF4") == u8"\\xF4" )
 with expansion:
   "\xF4" == "\xF4"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xE0\x80") == u8"\\xE0\\x80" )
 with expansion:
   "\xE0\x80" == "\xE0\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xE0\xBF") == u8"\\xE0\\xBF" )
 with expansion:
   "\xE0\xBF" == "\xE0\xBF"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xE1\x80") == u8"\\xE1\\x80" )
 with expansion:
   "\xE1\x80" == "\xE1\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF0\x80") == u8"\\xF0\\x80" )
 with expansion:
   "\xF0\x80" == "\xF0\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF4\x80") == u8"\\xF4\\x80" )
 with expansion:
   "\xF4\x80" == "\xF4\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF0\x80\x80") == u8"\\xF0\\x80\\x80" )
 with expansion:
   "\xF0\x80\x80" == "\xF0\x80\x80"
 
-Xml.tests.cpp:<line number>:
-PASSED:
+Xml.tests.cpp:<line number>: PASSED:
   CHECK( encode("\xF4\x80\x80") == u8"\\xF4\\x80\\x80" )
 with expansion:
   "\xF4\x80\x80" == "\xF4\x80\x80"
@@ -9174,20 +8266,17 @@ array<int, N> -> toString
 ToStringVector.tests.cpp:<line number>
 ...............................................................................
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify( empty ) == "{  }" )
 with expansion:
   "{  }" == "{  }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify( oneValue ) == "{ 42 }" )
 with expansion:
   "{ 42 }" == "{ 42 }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" )
 with expansion:
   "{ 42, 250 }" == "{ 42, 250 }"
@@ -9198,8 +8287,7 @@ atomic if
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( x == 0 )
 with expansion:
   0 == 0
@@ -9210,8 +8298,7 @@ boolean member
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( obj.prop != 0 )
 with expansion:
   0x<hex digits> != 0
@@ -9222,14 +8309,12 @@ checkedElse
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECKED_ELSE( flag )
 with expansion:
   true
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( testCheckedElse( true ) )
 with expansion:
   true
@@ -9256,14 +8341,12 @@ checkedIf
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECKED_IF( flag )
 with expansion:
   true
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( testCheckedIf( true ) )
 with expansion:
   true
@@ -9290,26 +8373,22 @@ comparisons between const int variables
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( unsigned_char_var == 1 )
 with expansion:
   1 == 1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( unsigned_short_var == 1 )
 with expansion:
   1 == 1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( unsigned_int_var == 1 )
 with expansion:
   1 == 1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( unsigned_long_var == 1 )
 with expansion:
   1 == 1
@@ -9320,26 +8399,22 @@ comparisons between int variables
 Condition.tests.cpp:<line number>
 ...............................................................................
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( long_var == unsigned_char_var )
 with expansion:
   1 == 1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( long_var == unsigned_short_var )
 with expansion:
   1 == 1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( long_var == unsigned_int_var )
 with expansion:
   1 == 1
 
-Condition.tests.cpp:<line number>:
-PASSED:
+Condition.tests.cpp:<line number>: PASSED:
   REQUIRE( long_var == unsigned_long_var )
 with expansion:
   1 == 1
@@ -9352,8 +8427,7 @@ even more nested SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 even more nested SECTION tests
@@ -9363,8 +8437,7 @@ even more nested SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 even more nested SECTION tests
@@ -9373,8 +8446,7 @@ even more nested SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 first tag
@@ -9420,8 +8492,7 @@ long long
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( l == std::numeric_limits<long long>::max() )
 with expansion:
   9223372036854775807 (0x<hex digits>)
@@ -9459,8 +8530,7 @@ looped SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( b > a )
 with expansion:
   2 > 1
@@ -9472,8 +8542,7 @@ looped SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( b > a )
 with expansion:
   3 > 1
@@ -9485,8 +8554,7 @@ looped SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( b > a )
 with expansion:
   4 > 1
@@ -9498,8 +8566,7 @@ looped SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( b > a )
 with expansion:
   5 > 1
@@ -9511,8 +8578,7 @@ looped SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( b > a )
 with expansion:
   6 > 1
@@ -9524,8 +8590,7 @@ looped SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( b > a )
 with expansion:
   7 > 1
@@ -9537,8 +8602,7 @@ looped SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( b > a )
 with expansion:
   8 > 1
@@ -9550,8 +8614,7 @@ looped SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( b > a )
 with expansion:
   9 > 1
@@ -9576,8 +8639,7 @@ with expansion:
 with message:
   Testing if fib[1] (1) is even
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( ( fib[i] % 2 ) == 0 )
 with expansion:
   0 == 0
@@ -9598,8 +8660,7 @@ with expansion:
 with message:
   Testing if fib[4] (5) is even
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( ( fib[i] % 2 ) == 0 )
 with expansion:
   0 == 0
@@ -9641,8 +8702,7 @@ more nested SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( a != b )
 with expansion:
   1 != 2
@@ -9655,8 +8715,7 @@ more nested SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( a < b )
 with expansion:
   1 < 2
@@ -9668,14 +8727,12 @@ nested SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( a != b )
 with expansion:
   1 != 2
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( b != a )
 with expansion:
   2 != 1
@@ -9688,8 +8745,7 @@ nested SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( a != b )
 with expansion:
   1 != 2
@@ -9700,8 +8756,7 @@ non streamable - with conv. op
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( s == "7" )
 with expansion:
   "7" == "7"
@@ -9712,8 +8767,7 @@ non-copyable objects
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   CHECK( ti == typeid(int) )
 with expansion:
   {?} == {?}
@@ -9724,8 +8778,7 @@ not allowed
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 null strings
@@ -9733,14 +8786,12 @@ null strings
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( makeString( false ) != static_cast<char*>(0) )
 with expansion:
   "valid string" != {null string}
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( makeString( true ) == static_cast<char*>(0) )
 with expansion:
   {null string} == {null string}
@@ -9751,8 +8802,7 @@ null_ptr
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( ptr.get() == 0 )
 with expansion:
   0 == 0
@@ -9763,8 +8813,7 @@ pair<pair<int,const char *,pair<std::string,int> > -> toString
 ToStringPair.tests.cpp:<line number>
 ...............................................................................
 
-ToStringPair.tests.cpp:<line number>:
-PASSED:
+ToStringPair.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" )
 with expansion:
   "{ { 42, "Arthur" }, { "Ford", 24 } }"
@@ -9777,8 +8826,7 @@ pointer to class
 Tricky.tests.cpp:<line number>
 ...............................................................................
 
-Tricky.tests.cpp:<line number>:
-PASSED:
+Tricky.tests.cpp:<line number>: PASSED:
   REQUIRE( p == 0 )
 with expansion:
   0 == 0
@@ -9790,14 +8838,12 @@ random SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( a != b )
 with expansion:
   1 != 2
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( b != a )
 with expansion:
   2 != 1
@@ -9809,8 +8855,7 @@ random SECTION tests
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( a != b )
 with expansion:
   1 != 2
@@ -9822,14 +8867,12 @@ replaceInPlace
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( Catch::replaceInPlace( letters, "b", "z" ) )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( letters == "azcdefcg" )
 with expansion:
   "azcdefcg" == "azcdefcg"
@@ -9841,14 +8884,12 @@ replaceInPlace
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( Catch::replaceInPlace( letters, "c", "z" ) )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( letters == "abzdefzg" )
 with expansion:
   "abzdefzg" == "abzdefzg"
@@ -9860,14 +8901,12 @@ replaceInPlace
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( Catch::replaceInPlace( letters, "a", "z" ) )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( letters == "zbcdefcg" )
 with expansion:
   "zbcdefcg" == "zbcdefcg"
@@ -9879,14 +8918,12 @@ replaceInPlace
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( Catch::replaceInPlace( letters, "g", "z" ) )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( letters == "abcdefcz" )
 with expansion:
   "abcdefcz" == "abcdefcz"
@@ -9898,14 +8935,12 @@ replaceInPlace
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( Catch::replaceInPlace( letters, letters, "replaced" ) )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( letters == "replaced" )
 with expansion:
   "replaced" == "replaced"
@@ -9917,14 +8952,12 @@ replaceInPlace
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK_FALSE( Catch::replaceInPlace( letters, "x", "z" ) )
 with expansion:
   !false
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( letters == letters )
 with expansion:
   "abcdefcg" == "abcdefcg"
@@ -9936,14 +8969,12 @@ replaceInPlace
 String.tests.cpp:<line number>
 ...............................................................................
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( Catch::replaceInPlace( s, "'", "|'" ) )
 with expansion:
   true
 
-String.tests.cpp:<line number>:
-PASSED:
+String.tests.cpp:<line number>: PASSED:
   CHECK( s == "didn|'t" )
 with expansion:
   "didn|'t" == "didn|'t"
@@ -9987,8 +9018,7 @@ std::map is convertible string
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify( emptyMap ) == "{  }" )
 with expansion:
   "{  }" == "{  }"
@@ -10000,8 +9030,7 @@ std::map is convertible string
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" )
 with expansion:
   "{ { "one", 1 } }" == "{ { "one", 1 } }"
@@ -10013,8 +9042,7 @@ std::map is convertible string
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" )
 with expansion:
   "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
@@ -10027,8 +9055,7 @@ std::pair<int,const std::string> -> toString
 ToStringPair.tests.cpp:<line number>
 ...............................................................................
 
-ToStringPair.tests.cpp:<line number>:
-PASSED:
+ToStringPair.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" )
 with expansion:
   "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
@@ -10039,8 +9066,7 @@ std::pair<int,std::string> -> toString
 ToStringPair.tests.cpp:<line number>
 ...............................................................................
 
-ToStringPair.tests.cpp:<line number>:
-PASSED:
+ToStringPair.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" )
 with expansion:
   "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
@@ -10052,8 +9078,7 @@ std::set is convertible string
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify( emptySet ) == "{  }" )
 with expansion:
   "{  }" == "{  }"
@@ -10065,8 +9090,7 @@ std::set is convertible string
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify( set ) == "{ \"one\" }" )
 with expansion:
   "{ "one" }" == "{ "one" }"
@@ -10078,8 +9102,7 @@ std::set is convertible string
 ToStringGeneral.tests.cpp:<line number>
 ...............................................................................
 
-ToStringGeneral.tests.cpp:<line number>:
-PASSED:
+ToStringGeneral.tests.cpp:<line number>: PASSED:
   REQUIRE( Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" )
 with expansion:
   "{ "abc", "def", "ghi" }"
@@ -10092,8 +9115,7 @@ std::vector<std::pair<std::string,int> > -> toString
 ToStringPair.tests.cpp:<line number>
 ...............................................................................
 
-ToStringPair.tests.cpp:<line number>:
-PASSED:
+ToStringPair.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" )
 with expansion:
   "{ { "green", 55 } }"
@@ -10117,30 +9139,26 @@ stringify ranges
 ToStringWhich.tests.cpp:<line number>
 ...............................................................................
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" )
 with expansion:
   "op<<(streamable_range)"
   ==
   "op<<(streamable_range)"
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" )
 with expansion:
   "stringmaker(streamable_range)"
   ==
   "stringmaker(streamable_range)"
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" )
 with expansion:
   "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(disabled_range{}) == "{ !!! }" )
 with expansion:
   "{ !!! }" == "{ !!! }"
@@ -10151,8 +9169,7 @@ stringify( has_maker )
 ToStringWhich.tests.cpp:<line number>
 ...............................................................................
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" )
 with expansion:
   "StringMaker<has_maker>"
@@ -10165,8 +9182,7 @@ stringify( has_maker_and_operator )
 ToStringWhich.tests.cpp:<line number>
 ...............................................................................
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" )
 with expansion:
   "StringMaker<has_maker_and_operator>"
@@ -10179,8 +9195,7 @@ stringify( has_neither )
 ToStringWhich.tests.cpp:<line number>
 ...............................................................................
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(item) == "{ !!! }" )
 with expansion:
   "{ !!! }" == "{ !!! }"
@@ -10191,8 +9206,7 @@ stringify( has_operator )
 ToStringWhich.tests.cpp:<line number>
 ...............................................................................
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" )
 with expansion:
   "operator<<( has_operator )"
@@ -10205,8 +9219,7 @@ stringify( has_template_operator )
 ToStringWhich.tests.cpp:<line number>
 ...............................................................................
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" )
 with expansion:
   "operator<<( has_template_operator )"
@@ -10219,8 +9232,7 @@ stringify( vectors<has_maker> )
 ToStringWhich.tests.cpp:<line number>
 ...............................................................................
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" )
 with expansion:
   "{ StringMaker<has_maker> }"
@@ -10233,8 +9245,7 @@ stringify( vectors<has_maker_and_operator> )
 ToStringWhich.tests.cpp:<line number>
 ...............................................................................
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" )
 with expansion:
   "{ StringMaker<has_maker_and_operator> }"
@@ -10247,8 +9258,7 @@ stringify( vectors<has_operator> )
 ToStringWhich.tests.cpp:<line number>
 ...............................................................................
 
-ToStringWhich.tests.cpp:<line number>:
-PASSED:
+ToStringWhich.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" )
 with expansion:
   "{ operator<<( has_operator ) }"
@@ -10261,8 +9271,7 @@ strlen3
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str.size() == data.len )
 with expansion:
   3 == 3
@@ -10273,8 +9282,7 @@ strlen3
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str.size() == data.len )
 with expansion:
   3 == 3
@@ -10285,8 +9293,7 @@ strlen3
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str.size() == data.len )
 with expansion:
   5 == 5
@@ -10297,8 +9304,7 @@ strlen3
 Generators.tests.cpp:<line number>
 ...............................................................................
 
-Generators.tests.cpp:<line number>:
-PASSED:
+Generators.tests.cpp:<line number>: PASSED:
   REQUIRE( data.str.size() == data.len )
 with expansion:
   4 == 4
@@ -10319,8 +9325,7 @@ toString on const wchar_t const pointer returns the string contents
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( result == "\"wide load\"" )
 with expansion:
   ""wide load"" == ""wide load""
@@ -10331,8 +9336,7 @@ toString on const wchar_t pointer returns the string contents
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( result == "\"wide load\"" )
 with expansion:
   ""wide load"" == ""wide load""
@@ -10343,8 +9347,7 @@ toString on wchar_t const pointer returns the string contents
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( result == "\"wide load\"" )
 with expansion:
   ""wide load"" == ""wide load""
@@ -10355,8 +9358,7 @@ toString on wchar_t returns the string contents
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   CHECK( result == "\"wide load\"" )
 with expansion:
   ""wide load"" == ""wide load""
@@ -10367,20 +9369,17 @@ toString(enum class w/operator<<)
 EnumToString.tests.cpp:<line number>
 ...............................................................................
 
-EnumToString.tests.cpp:<line number>:
-PASSED:
+EnumToString.tests.cpp:<line number>: PASSED:
   CHECK( ::Catch::Detail::stringify(e0) == "E2/V0" )
 with expansion:
   "E2/V0" == "E2/V0"
 
-EnumToString.tests.cpp:<line number>:
-PASSED:
+EnumToString.tests.cpp:<line number>: PASSED:
   CHECK( ::Catch::Detail::stringify(e1) == "E2/V1" )
 with expansion:
   "E2/V1" == "E2/V1"
 
-EnumToString.tests.cpp:<line number>:
-PASSED:
+EnumToString.tests.cpp:<line number>: PASSED:
   CHECK( ::Catch::Detail::stringify(e3) == "Unknown enum value 10" )
 with expansion:
   "Unknown enum value 10"
@@ -10393,14 +9392,12 @@ toString(enum class)
 EnumToString.tests.cpp:<line number>
 ...............................................................................
 
-EnumToString.tests.cpp:<line number>:
-PASSED:
+EnumToString.tests.cpp:<line number>: PASSED:
   CHECK( ::Catch::Detail::stringify(e0) == "0" )
 with expansion:
   "0" == "0"
 
-EnumToString.tests.cpp:<line number>:
-PASSED:
+EnumToString.tests.cpp:<line number>: PASSED:
   CHECK( ::Catch::Detail::stringify(e1) == "1" )
 with expansion:
   "1" == "1"
@@ -10411,14 +9408,12 @@ toString(enum w/operator<<)
 EnumToString.tests.cpp:<line number>
 ...............................................................................
 
-EnumToString.tests.cpp:<line number>:
-PASSED:
+EnumToString.tests.cpp:<line number>: PASSED:
   CHECK( ::Catch::Detail::stringify(e0) == "E2{0}" )
 with expansion:
   "E2{0}" == "E2{0}"
 
-EnumToString.tests.cpp:<line number>:
-PASSED:
+EnumToString.tests.cpp:<line number>: PASSED:
   CHECK( ::Catch::Detail::stringify(e1) == "E2{1}" )
 with expansion:
   "E2{1}" == "E2{1}"
@@ -10429,14 +9424,12 @@ toString(enum)
 EnumToString.tests.cpp:<line number>
 ...............................................................................
 
-EnumToString.tests.cpp:<line number>:
-PASSED:
+EnumToString.tests.cpp:<line number>: PASSED:
   CHECK( ::Catch::Detail::stringify(e0) == "0" )
 with expansion:
   "0" == "0"
 
-EnumToString.tests.cpp:<line number>:
-PASSED:
+EnumToString.tests.cpp:<line number>: PASSED:
   CHECK( ::Catch::Detail::stringify(e1) == "1" )
 with expansion:
   "1" == "1"
@@ -10447,14 +9440,12 @@ tuple<>
 ToStringTuple.tests.cpp:<line number>
 ...............................................................................
 
-ToStringTuple.tests.cpp:<line number>:
-PASSED:
+ToStringTuple.tests.cpp:<line number>: PASSED:
   CHECK( "{ }" == ::Catch::Detail::stringify(type{}) )
 with expansion:
   "{ }" == "{ }"
 
-ToStringTuple.tests.cpp:<line number>:
-PASSED:
+ToStringTuple.tests.cpp:<line number>: PASSED:
   CHECK( "{ }" == ::Catch::Detail::stringify(value) )
 with expansion:
   "{ }" == "{ }"
@@ -10465,14 +9456,12 @@ tuple<float,int>
 ToStringTuple.tests.cpp:<line number>
 ...............................................................................
 
-ToStringTuple.tests.cpp:<line number>:
-PASSED:
+ToStringTuple.tests.cpp:<line number>: PASSED:
   CHECK( "1.2f" == ::Catch::Detail::stringify(float(1.2)) )
 with expansion:
   "1.2f" == "1.2f"
 
-ToStringTuple.tests.cpp:<line number>:
-PASSED:
+ToStringTuple.tests.cpp:<line number>: PASSED:
   CHECK( "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) )
 with expansion:
   "{ 1.2f, 0 }" == "{ 1.2f, 0 }"
@@ -10483,8 +9472,7 @@ tuple<int>
 ToStringTuple.tests.cpp:<line number>
 ...............................................................................
 
-ToStringTuple.tests.cpp:<line number>:
-PASSED:
+ToStringTuple.tests.cpp:<line number>: PASSED:
   CHECK( "{ 0 }" == ::Catch::Detail::stringify(type{0}) )
 with expansion:
   "{ 0 }" == "{ 0 }"
@@ -10495,8 +9483,7 @@ tuple<0,int,const char *>
 ToStringTuple.tests.cpp:<line number>
 ...............................................................................
 
-ToStringTuple.tests.cpp:<line number>:
-PASSED:
+ToStringTuple.tests.cpp:<line number>: PASSED:
   CHECK( "{ 0, 42, \"Catch me\" }" == ::Catch::Detail::stringify(value) )
 with expansion:
   "{ 0, 42, "Catch me" }"
@@ -10509,8 +9496,7 @@ tuple<string,string>
 ToStringTuple.tests.cpp:<line number>
 ...............................................................................
 
-ToStringTuple.tests.cpp:<line number>:
-PASSED:
+ToStringTuple.tests.cpp:<line number>: PASSED:
   CHECK( "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) )
 with expansion:
   "{ "hello", "world" }"
@@ -10523,8 +9509,7 @@ tuple<tuple<int>,tuple<>,float>
 ToStringTuple.tests.cpp:<line number>
 ...............................................................................
 
-ToStringTuple.tests.cpp:<line number>:
-PASSED:
+ToStringTuple.tests.cpp:<line number>: PASSED:
   CHECK( "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) )
 with expansion:
   "{ { 42 }, { }, 1.2f }"
@@ -10537,14 +9522,12 @@ vec<vec<string,alloc>> -> toString
 ToStringVector.tests.cpp:<line number>
 ...............................................................................
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(v) == "{  }" )
 with expansion:
   "{  }" == "{  }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" )
 with expansion:
   "{ { "hello" }, { "world" } }"
@@ -10557,20 +9540,17 @@ vector<bool> -> toString
 ToStringVector.tests.cpp:<line number>
 ...............................................................................
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(bools) == "{  }" )
 with expansion:
   "{  }" == "{  }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(bools) == "{ true }" )
 with expansion:
   "{ true }" == "{ true }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(bools) == "{ true, false }" )
 with expansion:
   "{ true, false }" == "{ true, false }"
@@ -10581,20 +9561,17 @@ vector<int,allocator> -> toString
 ToStringVector.tests.cpp:<line number>
 ...............................................................................
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(vv) == "{  }" )
 with expansion:
   "{  }" == "{  }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42 }" )
 with expansion:
   "{ 42 }" == "{ 42 }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42, 250 }" )
 with expansion:
   "{ 42, 250 }" == "{ 42, 250 }"
@@ -10605,20 +9582,17 @@ vector<int> -> toString
 ToStringVector.tests.cpp:<line number>
 ...............................................................................
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(vv) == "{  }" )
 with expansion:
   "{  }" == "{  }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42 }" )
 with expansion:
   "{ 42 }" == "{ 42 }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42, 250 }" )
 with expansion:
   "{ 42, 250 }" == "{ 42, 250 }"
@@ -10629,20 +9603,17 @@ vector<string> -> toString
 ToStringVector.tests.cpp:<line number>
 ...............................................................................
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(vv) == "{  }" )
 with expansion:
   "{  }" == "{  }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(vv) == "{ \"hello\" }" )
 with expansion:
   "{ "hello" }" == "{ "hello" }"
 
-ToStringVector.tests.cpp:<line number>:
-PASSED:
+ToStringVector.tests.cpp:<line number>: PASSED:
   REQUIRE( ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" )
 with expansion:
   "{ "hello", "world" }"
@@ -10655,14 +9626,12 @@ vectors can be sized and resized
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 5 )
 with expansion:
   5 == 5
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 5 )
 with expansion:
   5 >= 5
@@ -10674,14 +9643,12 @@ vectors can be sized and resized
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 10 )
 with expansion:
   10 == 10
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 10 )
 with expansion:
   10 >= 10
@@ -10692,14 +9659,12 @@ vectors can be sized and resized
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 5 )
 with expansion:
   5 == 5
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 5 )
 with expansion:
   5 >= 5
@@ -10711,14 +9676,12 @@ vectors can be sized and resized
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 0 )
 with expansion:
   0 == 0
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 5 )
 with expansion:
   5 >= 5
@@ -10731,8 +9694,7 @@ vectors can be sized and resized
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() == 0 )
 with expansion:
   0 == 0
@@ -10743,14 +9705,12 @@ vectors can be sized and resized
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 5 )
 with expansion:
   5 == 5
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 5 )
 with expansion:
   5 >= 5
@@ -10762,14 +9722,12 @@ vectors can be sized and resized
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 5 )
 with expansion:
   5 == 5
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 10 )
 with expansion:
   10 >= 10
@@ -10780,14 +9738,12 @@ vectors can be sized and resized
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 5 )
 with expansion:
   5 == 5
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 5 )
 with expansion:
   5 >= 5
@@ -10799,14 +9755,12 @@ vectors can be sized and resized
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.size() == 5 )
 with expansion:
   5 == 5
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( v.capacity() >= 5 )
 with expansion:
   5 >= 5
@@ -10814,14 +9768,13 @@ with expansion:
 -------------------------------------------------------------------------------
 xmlentitycheck
   embedded xml: <test>it should be possible to embed xml characters, such as <,
-                " or &, or even whole <xml>documents</xml> within an attribute</test>
+                " or &, or even whole <xml>documents</xml> within an attribute
                 </test>
 -------------------------------------------------------------------------------
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 xmlentitycheck
@@ -10830,10 +9783,9 @@ xmlentitycheck
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 
 ===============================================================================
-test cases:  213 |  147 passed |  62 failed |  4 failed as expected
-assertions: 1242 | 1099 passed | 122 failed | 21 failed as expected
+test cases:  216 |  150 passed |  62 failed |  4 failed as expected
+assertions: 1248 | 1105 passed | 122 failed | 21 failed as expected
 
diff --git a/packages/Catch2/projects/SelfTest/Baselines/console.swa4.approved.txt b/packages/Catch2/projects/SelfTest/Baselines/console.swa4.approved.txt
index d69844d8b53578eac5d94239540856827bb7ffee..36ca1bde56afeffddb2adc4152c0a7b94b7642a2 100644
--- a/packages/Catch2/projects/SelfTest/Baselines/console.swa4.approved.txt
+++ b/packages/Catch2/projects/SelfTest/Baselines/console.swa4.approved.txt
@@ -3,14 +3,15 @@
 <exe-name> is a <version> host application.
 Run with -? for options
 
+Randomness seeded to: 1
+
 -------------------------------------------------------------------------------
 # A test name that starts with a #
 -------------------------------------------------------------------------------
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   yay
 
@@ -21,14 +22,12 @@ with message:
 Decomposition.tests.cpp:<line number>
 ...............................................................................
 
-Decomposition.tests.cpp:<line number>:
-PASSED:
+Decomposition.tests.cpp:<line number>: PASSED:
   REQUIRE( fptr == 0 )
 with expansion:
   0 == 0
 
-Decomposition.tests.cpp:<line number>:
-PASSED:
+Decomposition.tests.cpp:<line number>: PASSED:
   REQUIRE( fptr == 0l )
 with expansion:
   0 == 0
@@ -39,14 +38,12 @@ with expansion:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( y.v == 0 )
 with expansion:
   0 == 0
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( 0 == y.v )
 with expansion:
   0 == 0
@@ -57,38 +54,32 @@ with expansion:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 == t2 )
 with expansion:
   {?} == {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 != t2 )
 with expansion:
   {?} != {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 < t2 )
 with expansion:
   {?} < {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 > t2 )
 with expansion:
   {?} > {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 <= t2 )
 with expansion:
   {?} <= {?}
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( t1 >= t2 )
 with expansion:
   {?} >= {?}
@@ -99,8 +90,7 @@ with expansion:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 
 -------------------------------------------------------------------------------
 #1238
@@ -108,8 +98,7 @@ PASSED:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( std::memcmp(uarr, "123", sizeof(uarr)) == 0 )
 with expansion:
   0 == 0
@@ -117,8 +106,7 @@ with messages:
   uarr := "123"
   sarr := "456"
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( std::memcmp(sarr, "456", sizeof(sarr)) == 0 )
 with expansion:
   0 == 0
@@ -132,8 +120,18 @@ with messages:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#1403
+-------------------------------------------------------------------------------
+Compilation.tests.cpp:<line number>
+...............................................................................
+
+Compilation.tests.cpp:<line number>: PASSED:
+  REQUIRE( h1 == h2 )
+with expansion:
+  [1403 helper] == [1403 helper]
 
 -------------------------------------------------------------------------------
 #748 - captures with unexpected exceptions
@@ -167,8 +165,7 @@ due to unexpected exception with messages:
 Exception.tests.cpp:<line number>
 ...............................................................................
 
-Exception.tests.cpp:<line number>:
-PASSED:
+Exception.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS( thisThrows() )
 with message:
   answer := 42
@@ -179,8 +176,7 @@ with message:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( 42 == f )
 with expansion:
   42 == {?}
@@ -191,38 +187,31 @@ with expansion:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( a == t )
 with expansion:
   3 == 3
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   CHECK( a == t )
 with expansion:
   3 == 3
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE_THROWS( throws_int(true) )
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   CHECK_THROWS_AS( throws_int(true), int )
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE_NOTHROW( throws_int(false) )
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE_THAT( "aaa", Catch::EndsWith("aaa") )
 with expansion:
   "aaa" ends with: "aaa"
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( templated_tests<int>(3) )
 with expansion:
   true
@@ -238,8 +227,7 @@ Misc.tests.cpp:<line number>: FAILED:
 with expansion:
   1 == 0
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
   REQUIRE( errno == 1 )
 with expansion:
   1 == 1
@@ -250,8 +238,7 @@ with expansion:
 Compilation.tests.cpp:<line number>
 ...............................................................................
 
-Compilation.tests.cpp:<line number>:
-PASSED:
+Compilation.tests.cpp:<line number>: PASSED:
   REQUIRE( x == 4 )
 with expansion:
   {?} == 4
@@ -265,8 +252,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -277,8 +263,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -289,8 +274,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -301,8 +285,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -313,8 +296,7 @@ with message:
 Misc.tests.cpp:<line number>
 ...............................................................................
 
-Misc.tests.cpp:<line number>:
-PASSED:
+Misc.tests.cpp:<line number>: PASSED:
 with message:
   Everything is OK
 
@@ -341,6 +323,6 @@ with expansion:
   !true
 
 ===============================================================================
-test cases: 14 | 11 passed | 1 failed | 2 failed as expected
-assertions: 38 | 31 passed | 4 failed | 3 failed as expected
+test cases: 15 | 12 passed | 1 failed | 2 failed as expected
+assertions: 39 | 32 passed | 4 failed | 3 failed as expected
 
diff --git a/packages/Catch2/projects/SelfTest/Baselines/junit.sw.approved.txt b/packages/Catch2/projects/SelfTest/Baselines/junit.sw.approved.txt
index ad5caeb17976c45856b83aa42adecff16e6e624b..b62c62aae720eab96a26de70512fd8f609323a45 100644
--- a/packages/Catch2/projects/SelfTest/Baselines/junit.sw.approved.txt
+++ b/packages/Catch2/projects/SelfTest/Baselines/junit.sw.approved.txt
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <testsuitesloose text artifact
 >
-  <testsuite name="<exe-name>" errors="17" failures="106" tests="1243" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
+  <testsuite name="<exe-name>" errors="17" failures="106" tests="1249" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
     <testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="#1005: Comparing pointer to int and long (NULL can be either on various systems)" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="#1027" time="{duration}"/>
@@ -9,6 +9,7 @@
     <testcase classname="<exe-name>.global" name="#1175 - Hidden Test" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="#1238" time="{duration}"/>
     <testcase classname="<exe-name>.(Fixture_1245&lt;int, int>)" name="#1245" time="{duration}"/>
+    <testcase classname="<exe-name>.global" name="#1403" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions/outside assertions" time="{duration}">
       <error type="TEST_CASE">
 expected exception
@@ -374,6 +375,7 @@ Exception.tests.cpp:<line number>
       </error>
     </testcase>
     <testcase classname="<exe-name>.global" name="Objects that evaluated in boolean contexts can be checked" time="{duration}"/>
+    <testcase classname="<exe-name>.global" name="Optionally static assertions" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Ordering comparison checks that should fail" time="{duration}">
       <failure message="7 > 7" type="CHECK">
 Condition.tests.cpp:<line number>
@@ -478,6 +480,7 @@ Message.tests.cpp:<line number>
     <testcase classname="<exe-name>.global" name="Parse test names and tags/empty quoted name" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Parse test names and tags/quoted string followed by tag exclusion" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Pointers can be compared to null" time="{duration}"/>
+    <testcase classname="<exe-name>.global" name="Predicate matcher can accept const char*" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Process can be configured on command line/empty args don't cause a crash" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Process can be configured on command line/default - no arguments" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Process can be configured on command line/test lists/Specify one test case using" time="{duration}"/>
@@ -487,6 +490,7 @@ Message.tests.cpp:<line number>
     <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/-r/xml" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/--reporter/junit" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/Only one reporter is accepted" time="{duration}"/>
+    <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/must match one of the available ones" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Process can be configured on command line/debugger/-b" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Process can be configured on command line/debugger/--break" time="{duration}"/>
     <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/-a aborts after first failure" time="{duration}"/>
diff --git a/packages/Catch2/projects/SelfTest/Baselines/xml.sw.approved.txt b/packages/Catch2/projects/SelfTest/Baselines/xml.sw.approved.txt
index 3428787441dc597b7b16bd01346c68079725eadc..00ea5f76db7a42db3c5e6f82fdd412baafff1930 100644
--- a/packages/Catch2/projects/SelfTest/Baselines/xml.sw.approved.txt
+++ b/packages/Catch2/projects/SelfTest/Baselines/xml.sw.approved.txt
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Catch name="<exe-name>">
+  <Randomness seed="1"/>
   <Group name="<exe-name>">
     <TestCase name="# A test name that starts with a #" filename="projects/<exe-name>/UsageTests/Misc.tests.cpp" >
       <OverallResult success="true"/>
@@ -130,6 +131,17 @@
     <TestCase name="#1245" tags="[compilation]" filename="projects/<exe-name>/UsageTests/Compilation.tests.cpp" >
       <OverallResult success="true"/>
     </TestCase>
+    <TestCase name="#1403" tags="[compilation]" filename="projects/<exe-name>/UsageTests/Compilation.tests.cpp" >
+      <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/Compilation.tests.cpp" >
+        <Original>
+          h1 == h2
+        </Original>
+        <Expanded>
+          [1403 helper] == [1403 helper]
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
     <TestCase name="#748 - captures with unexpected exceptions" tags="[!shouldfail][!throws][.][failing]" filename="projects/<exe-name>/UsageTests/Exception.tests.cpp" >
       <Section name="outside assertions" filename="projects/<exe-name>/UsageTests/Exception.tests.cpp" >
         <Info>
@@ -4397,6 +4409,9 @@
       </Expression>
       <OverallResult success="true"/>
     </TestCase>
+    <TestCase name="Optionally static assertions" tags="[compilation]" filename="projects/<exe-name>/UsageTests/Compilation.tests.cpp" >
+      <OverallResult success="true"/>
+    </TestCase>
     <TestCase name="Ordering comparison checks that should fail" tags="[.][failing]" filename="projects/<exe-name>/UsageTests/Condition.tests.cpp" >
       <Expression success="false" type="CHECK" filename="projects/<exe-name>/UsageTests/Condition.tests.cpp" >
         <Original>
@@ -5949,6 +5964,17 @@
       </Expression>
       <OverallResult success="true"/>
     </TestCase>
+    <TestCase name="Predicate matcher can accept const char*" tags="[compilation][matchers]" filename="projects/<exe-name>/UsageTests/Matchers.tests.cpp" >
+      <Expression success="true" type="REQUIRE_THAT" filename="projects/<exe-name>/UsageTests/Matchers.tests.cpp" >
+        <Original>
+          "foo", Predicate&lt;const char*>([] (const char* const&amp;) { return true; })
+        </Original>
+        <Expanded>
+          "foo" matches undescribed predicate
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
     <TestCase name="Process can be configured on command line" tags="[command-line][config]" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
       <Section name="empty args don't cause a crash" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
         <Expression success="true" type="CHECK" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
@@ -6222,6 +6248,28 @@
         </Section>
         <OverallResults successes="1" failures="0" expectedFailures="0"/>
       </Section>
+      <Section name="reporter" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+        <Section name="must match one of the available ones" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+          <Expression success="true" type="CHECK" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+            <Original>
+              !result
+            </Original>
+            <Expanded>
+              true
+            </Expanded>
+          </Expression>
+          <Expression success="true" type="REQUIRE_THAT" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+            <Original>
+              result.errorMessage(), Contains("Unrecognized reporter")
+            </Original>
+            <Expanded>
+              "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
+            </Expanded>
+          </Expression>
+          <OverallResults successes="2" failures="0" expectedFailures="0"/>
+        </Section>
+        <OverallResults successes="2" failures="0" expectedFailures="0"/>
+      </Section>
       <Section name="debugger" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
         <Section name="-b" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
           <Expression success="true" type="CHECK" filename="projects/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
@@ -11321,7 +11369,7 @@ loose text artifact
       </Section>
       <OverallResult success="true"/>
     </TestCase>
-    <OverallResults successes="1099" failures="123" expectedFailures="21"/>
+    <OverallResults successes="1105" failures="123" expectedFailures="21"/>
   </Group>
-  <OverallResults successes="1099" failures="122" expectedFailures="21"/>
+  <OverallResults successes="1105" failures="122" expectedFailures="21"/>
 </Catch>
diff --git a/packages/Catch2/projects/SelfTest/IntrospectiveTests/CmdLine.tests.cpp b/packages/Catch2/projects/SelfTest/IntrospectiveTests/CmdLine.tests.cpp
index cb635eade97a2ffab998cbcf059081b3e665469e..9b5b0ed7c89985fd1aa3d44e6c9dc3f00dc55531 100644
--- a/packages/Catch2/projects/SelfTest/IntrospectiveTests/CmdLine.tests.cpp
+++ b/packages/Catch2/projects/SelfTest/IntrospectiveTests/CmdLine.tests.cpp
@@ -280,7 +280,6 @@ TEST_CASE( "Process can be configured on command line", "[config][command-line]"
         CHECK(config.processName == "");
     }
 
-
     SECTION("default - no arguments") {
         auto result = cli.parse({"test"});
         CHECK(result);
@@ -345,8 +344,15 @@ TEST_CASE( "Process can be configured on command line", "[config][command-line]"
         SECTION("Only one reporter is accepted") {
             REQUIRE_FALSE(cli.parse({ "test", "-r", "xml", "-r", "junit" }));
         }
-    }
+        SECTION("must match one of the available ones") {
+            auto result = cli.parse({"test", "--reporter", "unsupported"});
+            CHECK(!result);
 
+#ifndef CATCH_CONFIG_DISABLE_MATCHERS
+            REQUIRE_THAT(result.errorMessage(), Contains("Unrecognized reporter"));
+#endif
+        }
+    }
 
     SECTION("debugger") {
         SECTION("-b") {
diff --git a/packages/Catch2/projects/SelfTest/UsageTests/Compilation.tests.cpp b/packages/Catch2/projects/SelfTest/UsageTests/Compilation.tests.cpp
index 2e518ef2053563699bc53b20de84df5a25b890a8..325a81427ef50c7972f0addc4ee163f5648b3dbc 100644
--- a/packages/Catch2/projects/SelfTest/UsageTests/Compilation.tests.cpp
+++ b/packages/Catch2/projects/SelfTest/UsageTests/Compilation.tests.cpp
@@ -5,6 +5,26 @@
  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  */
 
+#include <type_traits>
+
+// Setup for #1403 -- look for global overloads of operator << for classes
+// in a different namespace.
+#include <ostream>
+
+namespace foo {
+    struct helper_1403 {
+        bool operator==(helper_1403) const { return true; }
+    };
+}
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-declarations"
+#endif
+std::ostream& operator<<(std::ostream& out, foo::helper_1403 const&) {
+    return out << "[1403 helper]";
+}
+///////////////////////////////
+
 #include "catch.hpp"
 
 #include <cstring>
@@ -154,4 +174,16 @@ namespace { namespace CompilationTests {
         SUCCEED();
     }
 
+    TEST_CASE("#1403", "[compilation]") {
+        ::foo::helper_1403 h1, h2;
+        REQUIRE(h1 == h2);
+    }
+
+    TEST_CASE("Optionally static assertions", "[compilation]") {
+        STATIC_REQUIRE( std::is_void<void>::value );
+        STATIC_REQUIRE_FALSE( std::is_void<int>::value );
+    }
+
 }} // namespace CompilationTests
+
+
diff --git a/packages/Catch2/projects/SelfTest/UsageTests/Matchers.tests.cpp b/packages/Catch2/projects/SelfTest/UsageTests/Matchers.tests.cpp
index e09dad14e3cf18dad3e035438cfd70c6d1869a18..f07481d46d3e7b55cf892a47dac0a8aee0f1ebd2 100644
--- a/packages/Catch2/projects/SelfTest/UsageTests/Matchers.tests.cpp
+++ b/packages/Catch2/projects/SelfTest/UsageTests/Matchers.tests.cpp
@@ -432,6 +432,10 @@ namespace { namespace MatchersTests {
             CHECK_THAT(actual, !UnorderedEquals(expected));
         }
 
+        TEST_CASE("Predicate matcher can accept const char*", "[matchers][compilation]") {
+            REQUIRE_THAT("foo", Predicate<const char*>([] (const char* const&) { return true; }));
+        }
+
 } } // namespace MatchersTests
 
 #endif // CATCH_CONFIG_DISABLE_MATCHERS
diff --git a/packages/Catch2/scripts/approvalTests.py b/packages/Catch2/scripts/approvalTests.py
index e2b0ce937732302a550b5780636925d4e196e44e..bb01e6d57063a8e0f04a668d2799d8ea32f8ab25 100755
--- a/packages/Catch2/scripts/approvalTests.py
+++ b/packages/Catch2/scripts/approvalTests.py
@@ -18,7 +18,7 @@ if os.name == 'nt':
 
 rootPath = os.path.join(catchPath, 'projects/SelfTest/Baselines')
 
-
+langFilenameParser = re.compile(r'(.+\.[ch]pp)')
 filelocParser = re.compile(r'''
     .*/
     (.+\.[ch]pp)  # filename
@@ -91,12 +91,24 @@ def diffFiles(fileA, fileB):
     return [line for line in diff if line[0] in ('+', '-')]
 
 
-def filterLine(line, isCompact):
+def normalizeFilepath(line):
     if catchPath in line:
         # make paths relative to Catch root
         line = line.replace(catchPath + os.sep, '')
+
+    m = langFilenameParser.match(line)
+    if m:
+        filepath = m.group(0)
         # go from \ in windows paths to /
-        line = line.replace('\\', '/')
+        filepath = filepath.replace('\\', '/')
+        # remove start of relative path
+        filepath = filepath.replace('../', '')
+        line = line[:m.start()] + filepath + line[m.end():]
+
+    return line
+
+def filterLine(line, isCompact):
+    line = normalizeFilepath(line)
 
     # strip source line numbers
     m = filelocParser.match(line)
@@ -181,17 +193,17 @@ print("  " + cmdPath)
 
 # ## Keep default reporters here ##
 # Standard console reporter
-approve("console.std", ["~[!nonportable]~[!benchmark]~[approvals]", "--order", "lex", "--rng-seed", "0"])
+approve("console.std", ["~[!nonportable]~[!benchmark]~[approvals]", "--order", "lex", "--rng-seed", "1"])
 # console reporter, include passes, warn about No Assertions
-approve("console.sw", ["~[!nonportable]~[!benchmark]~[approvals]", "-s", "-w", "NoAssertions", "--order", "lex", "--rng-seed", "0"])
+approve("console.sw", ["~[!nonportable]~[!benchmark]~[approvals]", "-s", "-w", "NoAssertions", "--order", "lex", "--rng-seed", "1"])
 # console reporter, include passes, warn about No Assertions, limit failures to first 4
-approve("console.swa4", ["~[!nonportable]~[!benchmark]~[approvals]", "-s", "-w", "NoAssertions", "-x", "4", "--order", "lex", "--rng-seed", "0"])
+approve("console.swa4", ["~[!nonportable]~[!benchmark]~[approvals]", "-s", "-w", "NoAssertions", "-x", "4", "--order", "lex", "--rng-seed", "1"])
 # junit reporter, include passes, warn about No Assertions
-approve("junit.sw", ["~[!nonportable]~[!benchmark]~[approvals]", "-s", "-w", "NoAssertions", "-r", "junit", "--order", "lex", "--rng-seed", "0"])
+approve("junit.sw", ["~[!nonportable]~[!benchmark]~[approvals]", "-s", "-w", "NoAssertions", "-r", "junit", "--order", "lex", "--rng-seed", "1"])
 # xml reporter, include passes, warn about No Assertions
-approve("xml.sw", ["~[!nonportable]~[!benchmark]~[approvals]", "-s", "-w", "NoAssertions", "-r", "xml", "--order", "lex", "--rng-seed", "0"])
+approve("xml.sw", ["~[!nonportable]~[!benchmark]~[approvals]", "-s", "-w", "NoAssertions", "-r", "xml", "--order", "lex", "--rng-seed", "1"])
 # compact reporter, include passes, warn about No Assertions
-approve('compact.sw', ['~[!nonportable]~[!benchmark]~[approvals]', '-s', '-w', 'NoAssertions', '-r', 'compact', '--order', 'lex', "--rng-seed", "0"])
+approve('compact.sw', ['~[!nonportable]~[!benchmark]~[approvals]', '-s', '-w', 'NoAssertions', '-r', 'compact', '--order', 'lex', "--rng-seed", "1"])
 
 if overallResult != 0:
     print("If these differences are expected, run approve.py to approve new baselines.")
diff --git a/packages/Catch2/single_include/catch2/catch.hpp b/packages/Catch2/single_include/catch2/catch.hpp
index 4191607a7931fbd827924bd23c852b69381ff5b7..b324e56aa86d78cce5ad8705fb2c219a3a4348fe 100644
--- a/packages/Catch2/single_include/catch2/catch.hpp
+++ b/packages/Catch2/single_include/catch2/catch.hpp
@@ -1,6 +1,6 @@
 /*
- *  Catch v2.4.1
- *  Generated: 2018-09-28 15:50:15.645795
+ *  Catch v2.4.2
+ *  Generated: 2018-10-26 21:12:29.223927
  *  ----------------------------------------------------------
  *  This file has been merged from multiple headers. Please don't edit it directly
  *  Copyright (c) 2018 Two Blue Cubes Ltd. All rights reserved.
@@ -15,7 +15,7 @@
 
 #define CATCH_VERSION_MAJOR 2
 #define CATCH_VERSION_MINOR 4
-#define CATCH_VERSION_PATCH 1
+#define CATCH_VERSION_PATCH 2
 
 #ifdef __clang__
 #    pragma clang system_header
@@ -356,6 +356,10 @@ namespace Catch {
 #include <string>
 #include <cstdint>
 
+// We need a dummy global operator<< so we can bring it into Catch namespace later
+struct Catch_global_namespace_dummy {};
+std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy);
+
 namespace Catch {
 
     struct CaseSensitive { enum Choice {
@@ -397,6 +401,11 @@ namespace Catch {
 
     std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info );
 
+    // Bring in operator<< from global namespace into Catch namespace
+    // This is necessary because the overload of operator<< above makes
+    // lookup stop at namespace Catch
+    using ::operator<<;
+
     // Use this in variadic streaming macros to allow
     //    >> +StreamEndStop
     // as well as
@@ -850,14 +859,7 @@ inline id performOptionalSelector( id obj, SEL sel ) {
 #pragma warning(disable:4180) // We attempt to stream a function (address) by const&, which MSVC complains about but is harmless
 #endif
 
-// We need a dummy global operator<< so we can bring it into Catch namespace later
-struct Catch_global_namespace_dummy {};
-std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy);
-
 namespace Catch {
-    // Bring in operator<< from global namespace into Catch namespace
-    using ::operator<<;
-
     namespace Detail {
 
         extern const std::string unprintableString;
@@ -5121,6 +5123,7 @@ namespace Catch {
 
     struct LeakDetector {
         LeakDetector();
+        ~LeakDetector();
     };
 
 }
@@ -5772,7 +5775,7 @@ namespace Catch {
 //
 // See https://github.com/philsquared/Clara for more details
 
-// Clara v1.1.4
+// Clara v1.1.5
 
 
 #ifndef CATCH_CLARA_CONFIG_CONSOLE_WIDTH
@@ -5798,8 +5801,8 @@ namespace Catch {
 //
 // A single-header library for wrapping and laying out basic text, by Phil Nash
 //
-// This work is licensed under the BSD 2-Clause license.
-// See the accompanying LICENSE file, or the one at https://opensource.org/licenses/BSD-2-Clause
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 // This project is hosted at https://github.com/philsquared/textflowcpp
 
@@ -5813,314 +5816,324 @@ namespace Catch {
 #define CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH 80
 #endif
 
-namespace Catch { namespace clara { namespace TextFlow {
-
-    inline auto isWhitespace( char c ) -> bool {
-        static std::string chars = " \t\n\r";
-        return chars.find( c ) != std::string::npos;
-    }
-    inline auto isBreakableBefore( char c ) -> bool {
-        static std::string chars = "[({<|";
-        return chars.find( c ) != std::string::npos;
-    }
-    inline auto isBreakableAfter( char c ) -> bool {
-        static std::string chars = "])}>.,:;*+-=&/\\";
-        return chars.find( c ) != std::string::npos;
-    }
-
-    class Columns;
-
-    class Column {
-        std::vector<std::string> m_strings;
-        size_t m_width = CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH;
-        size_t m_indent = 0;
-        size_t m_initialIndent = std::string::npos;
-
-    public:
-        class iterator {
-            friend Column;
-
-            Column const& m_column;
-            size_t m_stringIndex = 0;
-            size_t m_pos = 0;
-
-            size_t m_len = 0;
-            size_t m_end = 0;
-            bool m_suffix = false;
-
-            iterator( Column const& column, size_t stringIndex )
-            :   m_column( column ),
-                m_stringIndex( stringIndex )
-            {}
-
-            auto line() const -> std::string const& { return m_column.m_strings[m_stringIndex]; }
-
-            auto isBoundary( size_t at ) const -> bool {
-                assert( at > 0 );
-                assert( at <= line().size() );
-
-                return at == line().size() ||
-                       ( isWhitespace( line()[at] ) && !isWhitespace( line()[at-1] ) ) ||
-                       isBreakableBefore( line()[at] ) ||
-                       isBreakableAfter( line()[at-1] );
-            }
-
-            void calcLength() {
-                assert( m_stringIndex < m_column.m_strings.size() );
-
-                m_suffix = false;
-                auto width = m_column.m_width-indent();
-                m_end = m_pos;
-                while( m_end < line().size() && line()[m_end] != '\n' )
-                    ++m_end;
-
-                if( m_end < m_pos + width ) {
-                    m_len = m_end - m_pos;
-                }
-                else {
-                    size_t len = width;
-                    while (len > 0 && !isBoundary(m_pos + len))
-                        --len;
-                    while (len > 0 && isWhitespace( line()[m_pos + len - 1] ))
-                        --len;
-
-                    if (len > 0) {
-                        m_len = len;
-                    } else {
-                        m_suffix = true;
-                        m_len = width - 1;
-                    }
-                }
-            }
-
-            auto indent() const -> size_t {
-                auto initial = m_pos == 0 && m_stringIndex == 0 ? m_column.m_initialIndent : std::string::npos;
-                return initial == std::string::npos ? m_column.m_indent : initial;
-            }
-
-            auto addIndentAndSuffix(std::string const &plain) const -> std::string {
-                return std::string( indent(), ' ' ) + (m_suffix ? plain + "-" : plain);
-            }
-
-        public:
-            explicit iterator( Column const& column ) : m_column( column ) {
-                assert( m_column.m_width > m_column.m_indent );
-                assert( m_column.m_initialIndent == std::string::npos || m_column.m_width > m_column.m_initialIndent );
-                calcLength();
-                if( m_len == 0 )
-                    m_stringIndex++; // Empty string
-            }
-
-            auto operator *() const -> std::string {
-                assert( m_stringIndex < m_column.m_strings.size() );
-                assert( m_pos <= m_end );
-                if( m_pos + m_column.m_width < m_end )
-                    return addIndentAndSuffix(line().substr(m_pos, m_len));
-                else
-                    return addIndentAndSuffix(line().substr(m_pos, m_end - m_pos));
-            }
-
-            auto operator ++() -> iterator& {
-                m_pos += m_len;
-                if( m_pos < line().size() && line()[m_pos] == '\n' )
-                    m_pos += 1;
-                else
-                    while( m_pos < line().size() && isWhitespace( line()[m_pos] ) )
-                        ++m_pos;
-
-                if( m_pos == line().size() ) {
-                    m_pos = 0;
-                    ++m_stringIndex;
-                }
-                if( m_stringIndex < m_column.m_strings.size() )
-                    calcLength();
-                return *this;
-            }
-            auto operator ++(int) -> iterator {
-                iterator prev( *this );
-                operator++();
-                return prev;
-            }
-
-            auto operator ==( iterator const& other ) const -> bool {
-                return
-                    m_pos == other.m_pos &&
-                    m_stringIndex == other.m_stringIndex &&
-                    &m_column == &other.m_column;
-            }
-            auto operator !=( iterator const& other ) const -> bool {
-                return !operator==( other );
-            }
-        };
-        using const_iterator = iterator;
-
-        explicit Column( std::string const& text ) { m_strings.push_back( text ); }
-
-        auto width( size_t newWidth ) -> Column& {
-            assert( newWidth > 0 );
-            m_width = newWidth;
-            return *this;
-        }
-        auto indent( size_t newIndent ) -> Column& {
-            m_indent = newIndent;
-            return *this;
-        }
-        auto initialIndent( size_t newIndent ) -> Column& {
-            m_initialIndent = newIndent;
-            return *this;
-        }
-
-        auto width() const -> size_t { return m_width; }
-        auto begin() const -> iterator { return iterator( *this ); }
-        auto end() const -> iterator { return { *this, m_strings.size() }; }
-
-        inline friend std::ostream& operator << ( std::ostream& os, Column const& col ) {
-            bool first = true;
-            for( auto line : col ) {
-                if( first )
-                    first = false;
-                else
-                    os << "\n";
-                os <<  line;
-            }
-            return os;
-        }
-
-        auto operator + ( Column const& other ) -> Columns;
-
-        auto toString() const -> std::string {
-            std::ostringstream oss;
-            oss << *this;
-            return oss.str();
-        }
-    };
-
-    class Spacer : public Column {
-
-    public:
-        explicit Spacer( size_t spaceWidth ) : Column( "" ) {
-            width( spaceWidth );
-        }
-    };
-
-    class Columns {
-        std::vector<Column> m_columns;
-
-    public:
-
-        class iterator {
-            friend Columns;
-            struct EndTag {};
-
-            std::vector<Column> const& m_columns;
-            std::vector<Column::iterator> m_iterators;
-            size_t m_activeIterators;
-
-            iterator( Columns const& columns, EndTag )
-            :   m_columns( columns.m_columns ),
-                m_activeIterators( 0 )
-            {
-                m_iterators.reserve( m_columns.size() );
+namespace Catch {
+namespace clara {
+namespace TextFlow {
 
-                for( auto const& col : m_columns )
-                    m_iterators.push_back( col.end() );
-            }
+inline auto isWhitespace(char c) -> bool {
+	static std::string chars = " \t\n\r";
+	return chars.find(c) != std::string::npos;
+}
+inline auto isBreakableBefore(char c) -> bool {
+	static std::string chars = "[({<|";
+	return chars.find(c) != std::string::npos;
+}
+inline auto isBreakableAfter(char c) -> bool {
+	static std::string chars = "])}>.,:;*+-=&/\\";
+	return chars.find(c) != std::string::npos;
+}
 
-        public:
-            explicit iterator( Columns const& columns )
-            :   m_columns( columns.m_columns ),
-                m_activeIterators( m_columns.size() )
-            {
-                m_iterators.reserve( m_columns.size() );
+class Columns;
 
-                for( auto const& col : m_columns )
-                    m_iterators.push_back( col.begin() );
-            }
+class Column {
+	std::vector<std::string> m_strings;
+	size_t m_width = CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH;
+	size_t m_indent = 0;
+	size_t m_initialIndent = std::string::npos;
 
-            auto operator ==( iterator const& other ) const -> bool {
-                return m_iterators == other.m_iterators;
-            }
-            auto operator !=( iterator const& other ) const -> bool {
-                return m_iterators != other.m_iterators;
-            }
-            auto operator *() const -> std::string {
-                std::string row, padding;
+public:
+	class iterator {
+		friend Column;
+
+		Column const& m_column;
+		size_t m_stringIndex = 0;
+		size_t m_pos = 0;
+
+		size_t m_len = 0;
+		size_t m_end = 0;
+		bool m_suffix = false;
+
+		iterator(Column const& column, size_t stringIndex)
+			: m_column(column),
+			m_stringIndex(stringIndex) {}
+
+		auto line() const -> std::string const& { return m_column.m_strings[m_stringIndex]; }
+
+		auto isBoundary(size_t at) const -> bool {
+			assert(at > 0);
+			assert(at <= line().size());
+
+			return at == line().size() ||
+				(isWhitespace(line()[at]) && !isWhitespace(line()[at - 1])) ||
+				isBreakableBefore(line()[at]) ||
+				isBreakableAfter(line()[at - 1]);
+		}
+
+		void calcLength() {
+			assert(m_stringIndex < m_column.m_strings.size());
+
+			m_suffix = false;
+			auto width = m_column.m_width - indent();
+			m_end = m_pos;
+			while (m_end < line().size() && line()[m_end] != '\n')
+				++m_end;
+
+			if (m_end < m_pos + width) {
+				m_len = m_end - m_pos;
+			} else {
+				size_t len = width;
+				while (len > 0 && !isBoundary(m_pos + len))
+					--len;
+				while (len > 0 && isWhitespace(line()[m_pos + len - 1]))
+					--len;
+
+				if (len > 0) {
+					m_len = len;
+				} else {
+					m_suffix = true;
+					m_len = width - 1;
+				}
+			}
+		}
+
+		auto indent() const -> size_t {
+			auto initial = m_pos == 0 && m_stringIndex == 0 ? m_column.m_initialIndent : std::string::npos;
+			return initial == std::string::npos ? m_column.m_indent : initial;
+		}
+
+		auto addIndentAndSuffix(std::string const &plain) const -> std::string {
+			return std::string(indent(), ' ') + (m_suffix ? plain + "-" : plain);
+		}
+
+	public:
+		using difference_type = std::ptrdiff_t;
+		using value_type = std::string;
+		using pointer = value_type * ;
+		using reference = value_type & ;
+		using iterator_category = std::forward_iterator_tag;
+
+		explicit iterator(Column const& column) : m_column(column) {
+			assert(m_column.m_width > m_column.m_indent);
+			assert(m_column.m_initialIndent == std::string::npos || m_column.m_width > m_column.m_initialIndent);
+			calcLength();
+			if (m_len == 0)
+				m_stringIndex++; // Empty string
+		}
+
+		auto operator *() const -> std::string {
+			assert(m_stringIndex < m_column.m_strings.size());
+			assert(m_pos <= m_end);
+			return addIndentAndSuffix(line().substr(m_pos, m_len));
+		}
+
+		auto operator ++() -> iterator& {
+			m_pos += m_len;
+			if (m_pos < line().size() && line()[m_pos] == '\n')
+				m_pos += 1;
+			else
+				while (m_pos < line().size() && isWhitespace(line()[m_pos]))
+					++m_pos;
+
+			if (m_pos == line().size()) {
+				m_pos = 0;
+				++m_stringIndex;
+			}
+			if (m_stringIndex < m_column.m_strings.size())
+				calcLength();
+			return *this;
+		}
+		auto operator ++(int) -> iterator {
+			iterator prev(*this);
+			operator++();
+			return prev;
+		}
+
+		auto operator ==(iterator const& other) const -> bool {
+			return
+				m_pos == other.m_pos &&
+				m_stringIndex == other.m_stringIndex &&
+				&m_column == &other.m_column;
+		}
+		auto operator !=(iterator const& other) const -> bool {
+			return !operator==(other);
+		}
+	};
+	using const_iterator = iterator;
+
+	explicit Column(std::string const& text) { m_strings.push_back(text); }
+
+	auto width(size_t newWidth) -> Column& {
+		assert(newWidth > 0);
+		m_width = newWidth;
+		return *this;
+	}
+	auto indent(size_t newIndent) -> Column& {
+		m_indent = newIndent;
+		return *this;
+	}
+	auto initialIndent(size_t newIndent) -> Column& {
+		m_initialIndent = newIndent;
+		return *this;
+	}
+
+	auto width() const -> size_t { return m_width; }
+	auto begin() const -> iterator { return iterator(*this); }
+	auto end() const -> iterator { return { *this, m_strings.size() }; }
+
+	inline friend std::ostream& operator << (std::ostream& os, Column const& col) {
+		bool first = true;
+		for (auto line : col) {
+			if (first)
+				first = false;
+			else
+				os << "\n";
+			os << line;
+		}
+		return os;
+	}
+
+	auto operator + (Column const& other)->Columns;
+
+	auto toString() const -> std::string {
+		std::ostringstream oss;
+		oss << *this;
+		return oss.str();
+	}
+};
 
-                for( size_t i = 0; i < m_columns.size(); ++i ) {
-                    auto width = m_columns[i].width();
-                    if( m_iterators[i] != m_columns[i].end() ) {
-                        std::string col = *m_iterators[i];
-                        row += padding + col;
-                        if( col.size() < width )
-                            padding = std::string( width - col.size(), ' ' );
-                        else
-                            padding = "";
-                    }
-                    else {
-                        padding += std::string( width, ' ' );
-                    }
-                }
-                return row;
-            }
-            auto operator ++() -> iterator& {
-                for( size_t i = 0; i < m_columns.size(); ++i ) {
-                    if (m_iterators[i] != m_columns[i].end())
-                        ++m_iterators[i];
-                }
-                return *this;
-            }
-            auto operator ++(int) -> iterator {
-                iterator prev( *this );
-                operator++();
-                return prev;
-            }
-        };
-        using const_iterator = iterator;
+class Spacer : public Column {
 
-        auto begin() const -> iterator { return iterator( *this ); }
-        auto end() const -> iterator { return { *this, iterator::EndTag() }; }
+public:
+	explicit Spacer(size_t spaceWidth) : Column("") {
+		width(spaceWidth);
+	}
+};
 
-        auto operator += ( Column const& col ) -> Columns& {
-            m_columns.push_back( col );
-            return *this;
-        }
-        auto operator + ( Column const& col ) -> Columns {
-            Columns combined = *this;
-            combined += col;
-            return combined;
-        }
+class Columns {
+	std::vector<Column> m_columns;
 
-        inline friend std::ostream& operator << ( std::ostream& os, Columns const& cols ) {
+public:
 
-            bool first = true;
-            for( auto line : cols ) {
-                if( first )
-                    first = false;
-                else
-                    os << "\n";
-                os << line;
-            }
-            return os;
-        }
+	class iterator {
+		friend Columns;
+		struct EndTag {};
+
+		std::vector<Column> const& m_columns;
+		std::vector<Column::iterator> m_iterators;
+		size_t m_activeIterators;
+
+		iterator(Columns const& columns, EndTag)
+			: m_columns(columns.m_columns),
+			m_activeIterators(0) {
+			m_iterators.reserve(m_columns.size());
+
+			for (auto const& col : m_columns)
+				m_iterators.push_back(col.end());
+		}
+
+	public:
+		using difference_type = std::ptrdiff_t;
+		using value_type = std::string;
+		using pointer = value_type * ;
+		using reference = value_type & ;
+		using iterator_category = std::forward_iterator_tag;
+
+		explicit iterator(Columns const& columns)
+			: m_columns(columns.m_columns),
+			m_activeIterators(m_columns.size()) {
+			m_iterators.reserve(m_columns.size());
+
+			for (auto const& col : m_columns)
+				m_iterators.push_back(col.begin());
+		}
+
+		auto operator ==(iterator const& other) const -> bool {
+			return m_iterators == other.m_iterators;
+		}
+		auto operator !=(iterator const& other) const -> bool {
+			return m_iterators != other.m_iterators;
+		}
+		auto operator *() const -> std::string {
+			std::string row, padding;
+
+			for (size_t i = 0; i < m_columns.size(); ++i) {
+				auto width = m_columns[i].width();
+				if (m_iterators[i] != m_columns[i].end()) {
+					std::string col = *m_iterators[i];
+					row += padding + col;
+					if (col.size() < width)
+						padding = std::string(width - col.size(), ' ');
+					else
+						padding = "";
+				} else {
+					padding += std::string(width, ' ');
+				}
+			}
+			return row;
+		}
+		auto operator ++() -> iterator& {
+			for (size_t i = 0; i < m_columns.size(); ++i) {
+				if (m_iterators[i] != m_columns[i].end())
+					++m_iterators[i];
+			}
+			return *this;
+		}
+		auto operator ++(int) -> iterator {
+			iterator prev(*this);
+			operator++();
+			return prev;
+		}
+	};
+	using const_iterator = iterator;
+
+	auto begin() const -> iterator { return iterator(*this); }
+	auto end() const -> iterator { return { *this, iterator::EndTag() }; }
+
+	auto operator += (Column const& col) -> Columns& {
+		m_columns.push_back(col);
+		return *this;
+	}
+	auto operator + (Column const& col) -> Columns {
+		Columns combined = *this;
+		combined += col;
+		return combined;
+	}
+
+	inline friend std::ostream& operator << (std::ostream& os, Columns const& cols) {
+
+		bool first = true;
+		for (auto line : cols) {
+			if (first)
+				first = false;
+			else
+				os << "\n";
+			os << line;
+		}
+		return os;
+	}
+
+	auto toString() const -> std::string {
+		std::ostringstream oss;
+		oss << *this;
+		return oss.str();
+	}
+};
 
-        auto toString() const -> std::string {
-            std::ostringstream oss;
-            oss << *this;
-            return oss.str();
-        }
-    };
+inline auto Column::operator + (Column const& other) -> Columns {
+	Columns cols;
+	cols += *this;
+	cols += other;
+	return cols;
+}
+}
 
-    inline auto Column::operator + ( Column const& other ) -> Columns {
-        Columns cols;
-        cols += *this;
-        cols += other;
-        return cols;
-    }
-}}} // namespace Catch::clara::TextFlow
+}
+}
 
 // ----------- end of #include from clara_textflow.hpp -----------
 // ........... back in clara.hpp
 
+#include <string>
 #include <memory>
 #include <set>
 #include <algorithm>
@@ -7119,6 +7132,18 @@ namespace Catch {
                 return ParserResult::runtimeError( "Unrecognised verbosity, '" + verbosity + "'" );
             return ParserResult::ok( ParseResultType::Matched );
         };
+        auto const setReporter = [&]( std::string const& reporter ) {
+            IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
+
+            auto lcReporter = toLower( reporter );
+            auto result = factories.find( lcReporter );
+
+            if( factories.end() != result )
+                config.reporterName = lcReporter;
+            else
+                return ParserResult::runtimeError( "Unrecognized reporter, '" + reporter + "'. Check available with --list-reporters" );
+            return ParserResult::ok( ParseResultType::Matched );
+        };
 
         auto cli
             = ExeName( config.processName )
@@ -7144,7 +7169,7 @@ namespace Catch {
             | Opt( config.outputFilename, "filename" )
                 ["-o"]["--out"]
                 ( "output filename" )
-            | Opt( config.reporterName, "name" )
+            | Opt( setReporter, "name" )
                 ["-r"]["--reporter"]
                 ( "reporter to use (defaults to console)" )
             | Opt( config.name, "name" )
@@ -8292,6 +8317,10 @@ namespace Catch {
     Catch::LeakDetector::LeakDetector() {}
 
 #endif
+
+Catch::LeakDetector::~LeakDetector() {
+    Catch::cleanUp();
+}
 // end catch_leak_detector.cpp
 // start catch_list.cpp
 
@@ -8315,7 +8344,7 @@ namespace Catch {
 
     std::size_t listTags( Config const& config );
 
-    std::size_t listReporters( Config const& /*config*/ );
+    std::size_t listReporters();
 
     Option<std::size_t> list( Config const& config );
 
@@ -8433,7 +8462,7 @@ namespace Catch {
         return tagCounts.size();
     }
 
-    std::size_t listReporters( Config const& /*config*/ ) {
+    std::size_t listReporters() {
         Catch::cout() << "Available reporters:\n";
         IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories();
         std::size_t maxNameLen = 0;
@@ -8464,7 +8493,7 @@ namespace Catch {
         if( config.listTags() )
             listedCount = listedCount.valueOr(0) + listTags( config );
         if( config.listReporters() )
-            listedCount = listedCount.valueOr(0) + listReporters( config );
+            listedCount = listedCount.valueOr(0) + listReporters();
         return listedCount;
     }
 
@@ -9930,13 +9959,22 @@ namespace Catch {
         void libIdentify();
 
         int applyCommandLine( int argc, char const * const * argv );
+    #if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
+        int applyCommandLine( int argc, wchar_t const * const * argv );
+    #endif
 
         void useConfigData( ConfigData const& configData );
 
-        int run( int argc, char* argv[] );
-    #if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
-        int run( int argc, wchar_t* const argv[] );
-    #endif
+        template<typename CharT>
+        int run(int argc, CharT const * const argv[]) {
+            if (m_startupExceptions)
+                return 1;
+            int returnCode = applyCommandLine(argc, argv);
+            if (returnCode == 0)
+                returnCode = run();
+            return returnCode;
+        }
+
         int run();
 
         clara::Parser const& cli() const;
@@ -10148,22 +10186,8 @@ namespace Catch {
         return 0;
     }
 
-    void Session::useConfigData( ConfigData const& configData ) {
-        m_configData = configData;
-        m_config.reset();
-    }
-
-    int Session::run( int argc, char* argv[] ) {
-        if( m_startupExceptions )
-            return 1;
-        int returnCode = applyCommandLine( argc, argv );
-        if( returnCode == 0 )
-            returnCode = run();
-        return returnCode;
-    }
-
 #if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
-    int Session::run( int argc, wchar_t* const argv[] ) {
+    int Session::applyCommandLine( int argc, wchar_t const * const * argv ) {
 
         char **utf8Argv = new char *[ argc ];
 
@@ -10175,7 +10199,7 @@ namespace Catch {
             WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, utf8Argv[i], bufSize, NULL, NULL );
         }
 
-        int returnCode = run( argc, utf8Argv );
+        int returnCode = applyCommandLine( argc, utf8Argv );
 
         for ( int i = 0; i < argc; ++i )
             delete [] utf8Argv[ i ];
@@ -10185,6 +10209,12 @@ namespace Catch {
         return returnCode;
     }
 #endif
+
+    void Session::useConfigData( ConfigData const& configData ) {
+        m_configData = configData;
+        m_config.reset();
+    }
+
     int Session::run() {
         if( ( m_configData.waitForKeypress & WaitForKeypress::BeforeStart ) != 0 ) {
             Catch::cout() << "...waiting for enter/ return before starting" << std::endl;
@@ -11686,7 +11716,7 @@ std::string StringMaker<bool>::convert(bool b) {
     return b ? "true" : "false";
 }
 
-std::string StringMaker<char>::convert(char value) {
+std::string StringMaker<signed char>::convert(signed char value) {
     if (value == '\r') {
         return "'\\r'";
     } else if (value == '\f') {
@@ -11703,8 +11733,8 @@ std::string StringMaker<char>::convert(char value) {
         return chstr;
     }
 }
-std::string StringMaker<signed char>::convert(signed char c) {
-    return ::Catch::Detail::stringify(static_cast<char>(c));
+std::string StringMaker<char>::convert(char c) {
+    return ::Catch::Detail::stringify(static_cast<signed char>(c));
 }
 std::string StringMaker<unsigned char>::convert(unsigned char c) {
     return ::Catch::Detail::stringify(static_cast<char>(c));
@@ -11836,7 +11866,7 @@ namespace Catch {
     }
 
     Version const& libraryVersion() {
-        static Version version( 2, 4, 1, "", 0 );
+        static Version version( 2, 4, 2, "", 0 );
         return version;
     }
 
@@ -13517,6 +13547,9 @@ namespace Catch {
         m_xml.startElement( "Catch" );
         if( !m_config->name().empty() )
             m_xml.writeAttribute( "name", m_config->name() );
+        if( m_config->rngSeed() != 0 )
+            m_xml.scopedElement( "Randomness" )
+                .writeAttribute( "seed", m_config->rngSeed() );
     }
 
     void XmlReporter::testGroupStarting( GroupInfo const& groupInfo ) {
@@ -13792,6 +13825,14 @@ int main (int argc, char * const argv[]) {
 
 #define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE()
 
+#if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE)
+#define CATCH_STATIC_REQUIRE( ... )       static_assert(   __VA_ARGS__ ,      #__VA_ARGS__ );     CATCH_SUCCEED( #__VA_ARGS__ )
+#define CATCH_STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); CATCH_SUCCEED( #__VA_ARGS__ )
+#else
+#define CATCH_STATIC_REQUIRE( ... )       CATCH_REQUIRE( __VA_ARGS__ )
+#define CATCH_STATIC_REQUIRE_FALSE( ... ) CATCH_REQUIRE_FALSE( __VA_ARGS__ )
+#endif
+
 // "BDD-style" convenience wrappers
 #define CATCH_SCENARIO( ... ) CATCH_TEST_CASE( "Scenario: " __VA_ARGS__ )
 #define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ )
@@ -13851,6 +13892,14 @@ int main (int argc, char * const argv[]) {
 #define SUCCEED( ... ) INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
 #define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE()
 
+#if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE)
+#define STATIC_REQUIRE( ... )       static_assert(   __VA_ARGS__,  #__VA_ARGS__ ); SUCCEED( #__VA_ARGS__ )
+#define STATIC_REQUIRE_FALSE( ... ) static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); SUCCEED( "!(" #__VA_ARGS__ ")" )
+#else
+#define STATIC_REQUIRE( ... )       REQUIRE( __VA_ARGS__ )
+#define STATIC_REQUIRE_FALSE( ... ) REQUIRE_FALSE( __VA_ARGS__ )
+#endif
+
 #endif
 
 #define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature )
@@ -13931,6 +13980,9 @@ using Catch::Detail::Approx;
 #define CATCH_THEN( desc )
 #define CATCH_AND_THEN( desc )
 
+#define CATCH_STATIC_REQUIRE( ... )       (void)(0)
+#define CATCH_STATIC_REQUIRE_FALSE( ... ) (void)(0)
+
 // If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required
 #else
 
@@ -13980,6 +14032,9 @@ using Catch::Detail::Approx;
 #define SUCCEED( ... ) (void)(0)
 #define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ))
 
+#define STATIC_REQUIRE( ... )       (void)(0)
+#define STATIC_REQUIRE_FALSE( ... ) (void)(0)
+
 #endif
 
 #define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION_NO_REG( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature )
diff --git a/packages/Catch2/test_package/conanfile.py b/packages/Catch2/test_package/conanfile.py
index e8d50f9a8b4dbdcefd7930c60eca8cb5bb01bbd8..e63b2ce59e90f9443ac915761da5f83a188932fc 100644
--- a/packages/Catch2/test_package/conanfile.py
+++ b/packages/Catch2/test_package/conanfile.py
@@ -10,7 +10,7 @@ class CatchConanTest(ConanFile):
     settings = "os", "compiler", "arch", "build_type"
     username = getenv("CONAN_USERNAME", "philsquared")
     channel = getenv("CONAN_CHANNEL", "testing")
-    requires = "Catch/2.4.1@%s/%s" % (username, channel)
+    requires = "Catch/2.4.2@%s/%s" % (username, channel)
 
     def build(self):
         cmake = CMake(self)
diff --git a/packages/Catch2/third_party/clara.hpp b/packages/Catch2/third_party/clara.hpp
index 43568cee2af04eff93463e3b37135c7101f8a2fe..6be5a98b14b0b1f4ba555619f6f54658eed9ab25 100644
--- a/packages/Catch2/third_party/clara.hpp
+++ b/packages/Catch2/third_party/clara.hpp
@@ -5,7 +5,7 @@
 //
 // See https://github.com/philsquared/Clara for more details
 
-// Clara v1.1.4
+// Clara v1.1.5
 
 #ifndef CLARA_HPP_INCLUDED
 #define CLARA_HPP_INCLUDED
@@ -34,8 +34,8 @@
 //
 // A single-header library for wrapping and laying out basic text, by Phil Nash
 //
-// This work is licensed under the BSD 2-Clause license.
-// See the accompanying LICENSE file, or the one at https://opensource.org/licenses/BSD-2-Clause
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 // This project is hosted at https://github.com/philsquared/textflowcpp
 
@@ -142,6 +142,12 @@ namespace clara { namespace TextFlow {
             }
 
         public:
+            using difference_type = std::ptrdiff_t;
+            using value_type = std::string;
+            using pointer = value_type*;
+            using reference = value_type&;
+            using iterator_category = std::forward_iterator_tag;
+
             explicit iterator( Column const& column ) : m_column( column ) {
                 assert( m_column.m_width > m_column.m_indent );
                 assert( m_column.m_initialIndent == std::string::npos || m_column.m_width > m_column.m_initialIndent );
@@ -153,10 +159,7 @@ namespace clara { namespace TextFlow {
             auto operator *() const -> std::string {
                 assert( m_stringIndex < m_column.m_strings.size() );
                 assert( m_pos <= m_end );
-                if( m_pos + m_column.m_width < m_end )
-                    return addIndentAndSuffix(line().substr(m_pos, m_len));
-                else
-                    return addIndentAndSuffix(line().substr(m_pos, m_end - m_pos));
+                return addIndentAndSuffix(line().substr(m_pos, m_len));
             }
 
             auto operator ++() -> iterator& {
@@ -266,6 +269,12 @@ namespace clara { namespace TextFlow {
             }
 
         public:
+            using difference_type = std::ptrdiff_t;
+            using value_type = std::string;
+            using pointer = value_type*;
+            using reference = value_type&;
+            using iterator_category = std::forward_iterator_tag;
+
             explicit iterator( Columns const& columns )
             :   m_columns( columns.m_columns ),
                 m_activeIterators( m_columns.size() )
@@ -355,7 +364,7 @@ namespace clara { namespace TextFlow {
         cols += other;
         return cols;
     }
-}} // namespace clara::TextFlow
+}}
 
 #endif // CLARA_TEXTFLOW_HPP_INCLUDED