<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/include, branch v2.12.0</title>
<subtitle>Progmasoft Catch3: an independently maintained C++17 test framework with a parallel runner, property checks, snapshots and structured results.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/'/>
<entry>
<title>v2.12.0</title>
<updated>2020-04-21T14:33:15+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-04-21T14:33:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=cfb695669830ceb73b0875a20af4241944eb48e0'/>
<id>cfb695669830ceb73b0875a20af4241944eb48e0</id>
<content type='text'>
--- Improvements ---
* Running tests in random order (`--order rand`) has been reworked significantly (#1908)
  * Given same seed, all platforms now produce the same order
  * Given same seed, the relative order of tests does not change if you select only a subset of them
* Vector matchers support custom allocators (#1909)
* `|` and `&amp;` (bitwise or and bitwise and) are now supported in `CHECK` and `REQUIRE`
  * The resulting type must be convertible to `bool`

--- Fixes ---
* Fixed computation of benchmarking column widths in ConsoleReporter (#1885, #1886)
* Suppressed clang-tidy's `cppcoreguidelines-pro-type-vararg` in assertions (#1901)
  * It was a false positive trigered by the new warning support workaround
* Fixed bug in test specification parser handling of OR'd patterns using escaping (#1905)

--- Miscellaneous ---
* Worked around IBM XL's codegen bug (#1907)
  * It would emit code for _destructors_ of temporaries in an unevaluated context
* Improved detection of stdlib's support for `std::uncaught_exceptions` (#1911)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
--- Improvements ---
* Running tests in random order (`--order rand`) has been reworked significantly (#1908)
  * Given same seed, all platforms now produce the same order
  * Given same seed, the relative order of tests does not change if you select only a subset of them
* Vector matchers support custom allocators (#1909)
* `|` and `&amp;` (bitwise or and bitwise and) are now supported in `CHECK` and `REQUIRE`
  * The resulting type must be convertible to `bool`

--- Fixes ---
* Fixed computation of benchmarking column widths in ConsoleReporter (#1885, #1886)
* Suppressed clang-tidy's `cppcoreguidelines-pro-type-vararg` in assertions (#1901)
  * It was a false positive trigered by the new warning support workaround
* Fixed bug in test specification parser handling of OR'd patterns using escaping (#1905)

--- Miscellaneous ---
* Worked around IBM XL's codegen bug (#1907)
  * It would emit code for _destructors_ of temporaries in an unevaluated context
* Improved detection of stdlib's support for `std::uncaught_exceptions` (#1911)
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix build with CATCH_CONFIG_DISABLE_EXCEPTIONS enabled</title>
<updated>2020-04-21T13:31:15+00:00</updated>
<author>
<name>khyperia</name>
</author>
<published>2020-04-21T07:51:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=e59fc2c3b329493eda676ffa7fcefc7f6059fd0b'/>
<id>e59fc2c3b329493eda676ffa7fcefc7f6059fd0b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Support bitand and bitor in REQUIRE/CHECK</title>
<updated>2020-04-21T09:00:08+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-04-21T09:00:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=4e4171420d8c3ada47d8782f419908e47e2564ad'/>
<id>4e4171420d8c3ada47d8782f419908e47e2564ad</id>
<content type='text'>
This means that bit-flag-like types with conversion to bool can be
asserted on, like so `REQUIRE(var &amp; Flags::AddNewline)`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This means that bit-flag-like types with conversion to bool can be
asserted on, like so `REQUIRE(var &amp; Flags::AddNewline)`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Support custom allocators in vector Matchers (#1909)</title>
<updated>2020-04-16T13:36:54+00:00</updated>
<author>
<name>schallerr</name>
</author>
<published>2020-04-16T13:36:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=38f897c88772d6640196d1bd617ebbcaf44bc05a'/>
<id>38f897c88772d6640196d1bd617ebbcaf44bc05a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Use macro to determine whether std::uncaught_exceptions is available</title>
<updated>2020-04-14T21:03:58+00:00</updated>
<author>
<name>John Else</name>
</author>
<published>2020-04-13T15:10:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=6fbe5efc717a72c9749c5590c96524e92cddeca6'/>
<id>6fbe5efc717a72c9749c5590c96524e92cddeca6</id>
<content type='text'>
Catch assumes std::uncaught_exceptions is available whenever C++17 is
available, but for macOS versions older than 10.12 this is not the case.

Instead of checking the C++ version, use a macro to check whether the
feature is available.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Catch assumes std::uncaught_exceptions is available whenever C++17 is
available, but for macOS versions older than 10.12 this is not the case.

Instead of checking the C++ version, use a macro to check whether the
feature is available.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor implementation of hashed random order test sorting</title>
<updated>2020-04-14T14:39:48+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-04-14T14:39:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=bad0fb51f836a8d155fb2034980721aa36917fa8'/>
<id>bad0fb51f836a8d155fb2034980721aa36917fa8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Change random test shuffling technique</title>
<updated>2020-04-14T10:47:36+00:00</updated>
<author>
<name>John Bytheway</name>
</author>
<published>2020-04-10T00:17:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=f696ab836b9c7d9ea2f80b64597541cdc67f6821'/>
<id>f696ab836b9c7d9ea2f80b64597541cdc67f6821</id>
<content type='text'>
Previously a random test ordering was obtained by applying std::shuffle
to the tests in declaration order.  This has two problems:

- It depends on the declaration order, so the order in which the tests
  will be run will be platform-specific.
- When trying to debug accidental inter-test dependencies, it is helpful
  to be able to find a minimal subset of tests which exhibits the issue.
  However, any change to the set of tests being run will completely
  change the test ordering, making it difficult or impossible to reduce
  the set of tests being run in any reasonably efficient manner.

Therefore, change the randomization approach to resolve both these
issues.

Generate a random value based on the user-provided RNG seed.  Convert
every test case to an integer by hashing a combination of that value
with the test name.  Sort the test cases by this integer.

The test names and RNG are platform-independent, so this should be
consistent across platforms.  Also, removing one test does not change
the integer value associated with the remaining tests, so they remain in
the same order.

To hash, use the FNV-1a hash, except with the basis being our randomly
selected value rather than the fixed basis set in the algorithm.  Cannot
use std::hash, because it is important that the result be
platform-independent.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously a random test ordering was obtained by applying std::shuffle
to the tests in declaration order.  This has two problems:

- It depends on the declaration order, so the order in which the tests
  will be run will be platform-specific.
- When trying to debug accidental inter-test dependencies, it is helpful
  to be able to find a minimal subset of tests which exhibits the issue.
  However, any change to the set of tests being run will completely
  change the test ordering, making it difficult or impossible to reduce
  the set of tests being run in any reasonably efficient manner.

Therefore, change the randomization approach to resolve both these
issues.

Generate a random value based on the user-provided RNG seed.  Convert
every test case to an integer by hashing a combination of that value
with the test name.  Sort the test cases by this integer.

The test names and RNG are platform-independent, so this should be
consistent across platforms.  Also, removing one test does not change
the integer value associated with the remaining tests, so they remain in
the same order.

To hash, use the FNV-1a hash, except with the basis being our randomly
selected value rather than the fixed basis set in the algorithm.  Cannot
use std::hash, because it is important that the result be
platform-independent.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix bug in test spec parser handling of escaping in ORed patterns</title>
<updated>2020-04-12T16:48:52+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-04-12T16:44:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=5d32ce26f4c18588f9eac3342aea122a38b8fed3'/>
<id>5d32ce26f4c18588f9eac3342aea122a38b8fed3</id>
<content type='text'>
It did not clear out all of its internal state when switching from
one pattern to another, so when it should've escaped `,`, it took
its position from its position in the original user-provided string,
rather than its position in the current pattern.

Fixes #1905
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It did not clear out all of its internal state when switching from
one pattern to another, so when it should've escaped `,`, it took
its position from its position in the original user-provided string,
rather than its position in the current pattern.

Fixes #1905
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove usage of __builtin_constant_p under IBM XL</title>
<updated>2020-04-10T18:55:23+00:00</updated>
<author>
<name>Andrew Gaspar</name>
</author>
<published>2020-04-09T23:52:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=035a0625964a2db0252719904f581d1072d691a1'/>
<id>035a0625964a2db0252719904f581d1072d691a1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Suppress clang-tidy warning about vararg usage in assertion macros</title>
<updated>2020-04-02T18:45:57+00:00</updated>
<author>
<name>Moritz Haase</name>
</author>
<published>2020-04-02T12:22:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=d399a308d04b885433396f4198c0cda999f28d77'/>
<id>d399a308d04b885433396f4198c0cda999f28d77</id>
<content type='text'>
CATCH_INTERNAL_IGNORE_BUT_WARN() introduced with b7b346c triggers
clang-tidy warning 'cppcoreguidelines-pro-type-vararg' for every usage
of assertion macros like CHECK() and REQUIRE(). Silence it via NOLINT
in the '#if defined(__clang__)' block only, as clang-tidy honors those.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
CATCH_INTERNAL_IGNORE_BUT_WARN() introduced with b7b346c triggers
clang-tidy warning 'cppcoreguidelines-pro-type-vararg' for every usage
of assertion macros like CHECK() and REQUIRE(). Silence it via NOLINT
in the '#if defined(__clang__)' block only, as clang-tidy honors those.
</pre>
</div>
</content>
</entry>
</feed>
